Карта сайтаСсылкиКонтакты

Активизированная подсказка

PDF Печать
Статьи

Как получить подсказку, которая появляется в TEdit, когда пользователь вводит текст, а не только, когда мышь задерживается над компонентом?

Создайте одну общую переменную, чтобы управлять состоянием подсказки:


var 
  Myhint: THintWindow; 

Теперь поместите в форму эту функцию для активации подсказки:


function TForm1.RevealHint (Control: TControl): THintWindow; 
var 
   ShortHint: string; 
   AShortHint: array[0..255] of Char; 
   HintPos: TPoint; 
   HintBox: TRect; 
begin 
   Result := THintWindow.Create(Control); 
   ShortHint := GetShortHint(Control.Hint); 
   HintPos := Control.ClientOrigin; 
   Inc(HintPos.Y, Control.Height + 6); 
   HintBox := Bounds(0, 0, Screen.Width, 0); 
   DrawText(Result.Canvas.Handle, 
   StrPCopy(AShortHint, ShortHint), -1, HintBox, 
   DT_CALCRECT or DT_LEFT or DT_WORDBREAK or DT_NOPREFIX); 
   OffsetRect(HintBox, HintPos.X, HintPos.Y); 
   Inc(HintBox.Right, 6); 
   Inc(HintBox.Bottom, 2); 
   Result.ActivateHint(HintBox, ShortHint); 
end; 

И поместите эту процедуру для деактивации подсказки:


procedure TForm1.RemoveHint (var Hint: THintWindow); 
begin 
   Hint.ReleaseHandle; 
   Hint.Free; 
   Hint := nil; 
end; 

Для активации:


Myhint:= RevealHint(edit1);
// Измените имя Edit1 на имя компонента,
// где Вы хотите, чтобы появлялась подсказка 

Для деактивации:


RemoveHint(Myhint) 

По материалам http://delphi.3000.com


 

Добавить комментарий


Защитный код
Обновить