Содержание материала

 Демонстрирует всплывающую подсказку для определенного элемента  управления (Control), возвращает ссылку на hint-объект,  поэтому в дальнейшем подсказка может быть спрятана вызовом 

RemoveHint (смотри ниже).                                     

Code:

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

 

procedure RemoveHint(var Hint: THintWindow);

{----------------------------------------------------------------}

{ Освобождаем дескриптор окна всплывающей подсказки, выведенной  }

{ предыдущим RevealHint.                                         }

{----------------------------------------------------------------}

 

begin

Hint.ReleaseHandle;

Hint.Free;

Hint := nil;

end; {RemoveHint}

 

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

 

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


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