Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Синтаксис , Hint подсказки

Прямой вызов метода 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}

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

Программный код на Delphi, который реализует всплывающую подсказку для контрола. Функция RevealHint создает и отображает всплывающую подсказку, а процедура RemoveHint освобождает ресурсы, зарезервированные для всплывающей подсказки.

В функции RevealHint происходит следующее:

  1. Создается экземпляр класса THintWindow с помощью метода Create.
  2. Получается краткое описание контрола с помощью функции GetShortHint.
  3. Вычисляется позиция и размер всплывающей подсказки на основе клиентского происхождения, высоты и ширины экрана.
  4. Рисуется текст всплывающей подсказки с использованием метода DrawText, с форматированными параметрами для обрезания текста, если необходимо.
  5. Устанавливается граница всплывающей подсказки в соответствии с вычисленными значениями и активируется.

Комментарий на строке 14 является примечанием о том, что позиция всплывающей подсказки может быть изменена, изменяя расчет HintPos.

В альтернативном решении с использованием встроенного класса TNotifyEvent создается новый экземпляр класса THintWindow, а его событие OnActivate задается на процедуру ControlHintActivated. Это позволяет централизованно обрабатывать активацию подсказок.

Процедура RemoveHint просто освобождает ресурсы, зарезервированные для всплывающей подсказки, используя методы ReleaseHandle и Free, а также устанавливает ссылку на всплывающую подсказку в значение nil.

В статье описывается демонстрация всплывающей подсказки для определенного элемента управления в Delphi, которая создается методом RevealHint и может быть спрятана вызовом RemoveHint.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Hint подсказки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:25:16/0.0057518482208252/1