Фоновый цвет окна подсказки можно изменить посредством свойства
property HintColor: TColor;
У объекта Application значение свойства showHint нужно устанавливать во время выполнения, например, в обработчике onCreate главной формы приложения. Оно является главенствующим для всей системы подсказок: если оно установлено в значение False, ярлычки не возникают.
Есть еще один способ получения подсказки. При смене текущего элемента управления (т. е. при смене текста в свойстве Hint) в объекте Application возникает событие
property OnHint: TNotifyEvent; Пример:
procedure TForml. AppHint (Sender: TObject) ;
begin
Panell. Caption: = Application. Hint;
end;
proce±ireTForml. FormCreate (Sender: TDbject) ;
begin
Application.OnHint := AppHint;
end;
В этом примере текст подсказки будет отображаться в строке состояния Panell независимо от значения ShowHint у любого объекта - лишь бы этот текст был в наличии. Для этого разделяйте подсказку у элементов управления вашего приложения на две части при помощи символа " |" - краткая информация появится рядом с элементом, а более полная - в строке состояния.
function GetLongHint (const Hint: string): string;
function GetShortHint (const Hint: string): string;
У других компонентов свойство showHint интерпретируется системой так: когда курсор мыши останавливается над элементом управления или пунктом меню, и приложение не занято обработкой сообщения, происходит проверка, и если свойство showHint у элемента или у одного из его родительских элементов в иерархии равно True, то начинается ожидание.
Если в данный момент другие ярлычки не показываются, то интервал времени задается свойством HintPause:
property HintPause: Integer;
Интервал времени по умолчанию равен 500 мс. Если в данный момент уже виден ярлычок другого компонента, то интервал времени ожидания задается свойством:
property HintShortPause: Integer;
По истечении этого времени, если мышь осталась над тем же элементом управления, наступает момент инициализации окна подсказки. При этом программист может получить управление, предусмотрев обработчик события объекта Application:
property OnShowHint: TShcwHintEvent ;
TShowHintEvent = procedure (var HintStr: string;
var CanShow: Boolean;
var Hintlnfo: THintlnfo) of object;
Рассмотрим параметры обработчика события OnShowHint:
О Hintstr - отображаемый текст;
О CanShow - необходимость (возможность) появления подсказки. Если в переменной CanShow обработчик вернет значение False, то окно подсказки высвечиваться не будет;
О Hintlnfo - структура, несущая всю информацию о том, какой элемент управления, где и как собирается показать подсказку. Ее описание:
THintlnfo = record
HrntControl: TControl;
HrntPos: TPornt;
HintMaxWidth: Integer;
HrntColor: TColor;
CursorRect: TRect;
CursorPos: TPoint;
end;
Для показа окна подсказки необходимо еще, чтобы у элемента управления или у его предков в цепочке строка Hint была непустой. Впрочем, это можно ИОТраВИТЬ В обработчике OnShowHint:
procedure TForml .AppShowHint (var HintStr: string; var CanShow: Boolean;var Hintlnfo: THintlnfo) ; begin if HintStro' ' then