Как создать собственное 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.Top := 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.Top + Button1.Height + 6,
Button1.Hint,
2000);
end ;
Статья Как создать собственное Hint-окно раздела Синтаксис Hint подсказки может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Hint подсказки ::