Ярлыки
Интервал времени по умолчанию равен 500 мс. Если в данный момент уже виден ярлычок другого компонента, то интервал времени ожидания задается свойством:
property HintShortPause: Integer;
По истечении этого времени, если мышь осталась над тем же элементом управления, наступает момент инициализации окна подсказки. При этом программист может получить управление, предусмотрев обработчик события объекта Application:
property OnShowHint: TShowHintEvent; TShowHintEvent = procedure (var HintStr: string; var CanShow: Boolean; var Hintlnfo: THintlnfo) of object;
Рассмотрим параметры обработчика события OnShowHint:
- Hintstr – отображаемый текст;
- CanShow – необходимость (возможность) появления подсказки. Если в переменной CanShow обработчик вернет значение False, то окно подсказки высвечиваться не будет;
- Hintinfo – структура, несущая всю информацию о том, какой элемент управления, где и как собирается показать подсказку. Ее описание:
THintlnfo = record HintControl: TControl; HintPos: TPoint; HintMaxWidth: Integer; HintColor: TColor; CursorRect: TRect; CursorPos: TPoint; end;
Для показа окна подсказки необходимо еще, чтобы у элемента управления или у его предков в цепочке строка Hint была непустой. Впрочем, это можно исправить в обработчике OnShowHint:
procedure TForml.AppShowHint(var HintStr: string; var CanShow: Boolean;var Hintlnfo: THintlnfo); begin if HintStr='' then begin HintStr: = Hintlnfo.HintControl.Name; Hintlnfo.HintColor: = clRed; CanShow: = True; end; end;
Присвоив этот метод обработчику Application.OnShowHint, установив Form.showHint: = True и очистив все строки Hint, получим в качестве подсказки имя каждого элемента.
Длительность показа ярлычка задается свойством:
property HintHidePause: Integer;
По умолчанию его значение равно 2500 мс.
Свойство:
property HintShortCuts: Boolean;
…отвечает за показ вместе с текстом ярлычка описания "горячих" клавиш данного элемента управления.
Наконец, можно вручную "зажечь" и "потушить" ярлычок. При помощи метода:
procedure ActivateHint(CursorPos: TPoint);
…ярлычок показывается в точке CursorPos (система координат – экранная). "Спрятать" окно подсказки можно с помощью метода:
procedure CancelHint;
Без повторного перемещения мыши на текущий элемент оно более не возникнет.
Резюме
Delphi предоставляет разработчику набор стандартных программных механизмов, позволяющих добавлять к приложениям функции пользовательского интерфейса Windows. Кроме представленных здесь, разработчик может использовать расширенный набор функций, содержащийся в библиотеке Shell API, которой посвящена гл. 31.