Sada sam pokusao, probaj sa ovim kodom. Moglo bi i optimalnije, naravno ali ovo sam na brzinu odradio.
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure HintHandler(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
h : THintWindow;
T : TTimer;
LasthintComponent : TComponent;
implementation
{$R *.dfm}
procedure TForm1.HintHandler(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
begin
CanShow := False;
If HintInfo.HintControl <> LastHintComponent Then
Begin
LastHintComponent := HintInfo.HintControl;
h.ActivateHint(Rect (Form1.Left + 10, Form1.Top + 20, Form1.Left + 50, Form1.Left + 60), HintStr);
T.Enabled := True;
End;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
h := THintWindow.Create(Form1);
application.OnShowHint := HintHandler;
T := TTimer.Create(Form1);
T.OnTimer := Timer;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
h.Destroy;
t.Destroy;
end;
procedure TForm1.Timer(Sender: TObject);
begin
H.ReleaseHandle;
T.Enabled := False;
end;
end.