Как создать собственное Hint-окно

Как создать собственное Hint-окно Автор: Олег Кулабухов

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Enabled := false;
 Panel1.Visible := false;
 Panel1.BevelInner := bvNone;
 Panel1.BevelOuter := bvNone;
 Panel1.BorderStyle := bsSingle;
 Panel1.Color := clWhite;
 Button1.Hint := 'Hint test';
end;
procedure TForm1.ShowAHint(x: integer;
 y: integer;
 Caption: string;
 Duration: LongInt);
var
 dc: hdc;
 OldFont: hFont;
 pt: TSize;
 p: pChar;
begin
 if Timer1.Enabled <> false then
  Timer1.Enabled := false;
 Timer1.Enabled := false;
 if Panel1.Visible <> false then
  Panel1.Visible := false;
 if Caption = '' then
  exit;
 Panel1.Caption := caption;
 {Get the width of the caption string}
 GetMem(p, Length(Panel1.Caption) + 1);
 StrPCopy(p, Panel1.Caption);
 dc := GetDc(Panel1.Handle);
 OldFont := SelectObject(dc, Panel1.Font.Handle);
 GetTextExtentPoint32(dc, p, Length(Panel1.Caption), pt);
 SelectObject(dc, OldFont);
 ReleaseDc(Panel1.Handle, Dc);
 FreeMem(p, Length(Panel1.Caption) + 1);
 {Position and show the panel}
 Panel1.Left := x;
 Panel1. := y;
 Panel1.Width := pt.cx + 6;
 Panel1.Height := pt.cy + 2;
 Panel1.Visible := true;
 {Fire off the timer to hide the panel}
 Timer1.Interval := Duration;
 Timer1.Enabled := true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if Panel1.Visible <> false then
  Panel1.Visible := false;
 Timer1.Enabled := false;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Let the button repaint}
 Application.ProcessMessages;
 ShowAHint(Button1.Left,
  Button1. + Button1.Height + 6,
  Button1.Hint,
  2000);
end;
http://delphiworld.narod.ru/ DelphiWorld 6.0

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...