Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Hint   Найти похожие ветки 

 
MakNik ©   (2003-12-18 11:34) [0]

Подскажите, плз., как заставить выскакивать Hint когда я вхожу в TEdit (либо по Tab, илбо мышкой)?


 
serge   (2003-12-18 11:42) [1]

для илбо мышкой - свойство ShowHint должно быть True;


 
MakNik ©   (2003-12-18 11:49) [2]

>serge


 
serge   (2003-12-18 12:07) [3]

Привожу код - не собственного написания

IF h<>nil H.ReleaseHandle; {если чей-то хинт yже был, то его погасить}
H:=THintWindow.Create(Окно-владелец хинта);
H.ActivateHint(H.CalcHintRect(...),"hint hint nint");
....
{UnПоявление :) - это возможно пpидется повесить на таймеp, котоpый бyдет
обнyляться пpи каждом новом появлении хинта}
IF h<>nil H.ReleaseHandle;

-----------------------------------------------------------------

Прямой вызов метода Hint

--------------------------------------------------------------------------------
function RevealHint (Control: TControl): THintWindow;
{----------------------------------------------------------------}
{ Демонстрирует всплывающую подсказку для определенного элемента }
{ управления (Control), возвращает ссылку на hint-объект, }
{ поэтому в дальнейшем подсказка может быть спрятана вызовом }
{ RemoveHint (смотри ниже). }
{----------------------------------------------------------------}

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; {RevealHint}

procedure RemoveHint (var Hint: THintWindow);
{----------------------------------------------------------------}
{ Освобождаем дескриптор окна всплывающей подсказки, выведенной }
{ предыдущим RevealHint. }
{----------------------------------------------------------------}

begin
Hint.ReleaseHandle;
Hint.Free;
Hint := nil;
end; {RemoveHint}

Строка с комментарием <<<< позиционирует подсказку ниже элемента управления. Это может быть изменено, если по какой-то причине вам необходима другая позиция окна с подсказкой.

Удачи!


 
MakNik ©   (2003-12-18 12:26) [4]


> serge (18.12.03 11:42) [1]
> для илбо мышкой - свойство ShowHint должно быть True;

Это понятно... вопрос в том, как показывать Hint когда я вхожу в TEdit по Tab (а мышка далеко)...


 
jack128 ©   (2003-12-18 12:31) [5]

RevealHint вешай на TControl.OnEnter
RemoveHint на TControl.OnExit


 
MakNik ©   (2003-12-18 12:43) [6]


> > serge

Спасибо! Работает!


 
Семен Сорокин ©   (2003-12-18 12:50) [7]

а не проще ли на OnEnter повесить Application.ActivateHint()


 
serge   (2003-12-18 12:56) [8]

;о)
Спасибо не мне а Кулибе.
Удачи.



Страницы: 1 вся ветка

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
3-11835
SergP
2003-12-09 22:22
2004.01.05
Не работает like


3-11806
rosl
2003-12-08 17:04
2004.01.05
horizontal scrollbar


1-11978
афвуд
2003-12-19 12:21
2004.01.05
Как создать обьект класса, зная только имя класса.


1-11892
prophet
2003-12-21 22:29
2004.01.05
Что такое TTreeView.Workareas?


8-11999
XAli
2003-08-30 09:12
2004.01.05
сигнал заданной частоты и длительности на саунд