(Проектирование графического интерфейса пользователя______________241

Если вы не задали значение свойства компонента Hint, но установили в true
свойство ShowHint, или установили в true свойство ParentShowHint, а в родите-
льском компоненте ShowHint = true, то в окне подсказки будет отображаться
текст Hint из родительского компонента.

Правда, все описанное выше справедливо при значении свойства ShowHint
приложения Application равном true (это значение задано по умолчанию). Если
установить Application->ShowHint в false, то окна подсказки не будут появляться
независимо от значений ShowHint в любых компонентах.

Свойства Hint компонентов можно также использовать для отображения тек-
стов заключенных в них сообщений в какой-то метке или панели с помощью функ-
ций GetShortHint и GetLongHint, первая из которых возвращает первую часть со-
общения, а вторая — вторую (если второй части нет, то возвращается первая
часть). Например, эти функции можно использовать в обработчиках событий Оп-
MouseMove, соответствующих прохождению курсора мыши над данным компо-
нентом. Так обработчик

void fastcall TFormI::ButtonlMouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)
{

TControl *Send = (TControl *)Sender;

Panell->Caption = GetShortHint(Send->Hint);

Panel2->Caption = GetLongHint(Send->Hint);

}

отобразит в панели Panell первую, а в панели Panel2 — вторую часть свойства
Hint всех компонентов, над которыми будет перемещаться курсор, если в этих
компонентах в событии OnMouseMove указан этот обработчик ButtonlMouseMo-
ve. Причем это не зависит от значения их свойства ShowHint.

В приведенном коде создается указатель Send на объект Sender, рассматрива-
емый как объект типа TControl. Класс TControl является прародителем всех визу-
альных компонентов и именно в этом классе объявлено свойство Hint, которое нам
требуется.

Еще один пример. Пусть вы хотите, чтобы при нажатии некоторой кнопки
Buttoni вашего приложения в панели Panell высвечивалась подсказка пользова-
телю, например, «Укажите имя файла», а сама кнопка имела всплывающий ярлы-
чок подсказки с текстом «Ввод». Тогда вы можете задать свойству Hint этой кноп-
ки значение « Ввод|У кажите имя файла», задать значение true свойству ShowHint, a
в обработчик события нажатия этой кнопки вставить оператор

.Panell->Caption = GetLongHint(Buttonl->Hint);

Если же вы не хотите отображать ярлычок подсказки для кнопки, то можете
задать в кнопке ShowHint = false, ограничиться значением Hint, равным «Укажи-
те имя файла», а приведенный выше оператор оставить неизменным или заменить
на эквивалентный ему в данном случае оператор

Panell->Caption = GetShortHint.<Buttonl->Hint);

или даже просто на оператор

Panell->Caption = Buttonl->Hint;

Еще один совершенно другой способ отображения второй части сообщения, за-
писанного в Hint, в строке состояния или какой-то области экрана в моменты, ког-
да курсор мыши проходит над компонентом — это использование обработки собы-
тия приложения OnHint. Это событие не того компонента, над которым проходит
курсор мыши, а именно приложения — объекта Application. Если обработчик это-
го события определен, то в момент прохождения курсора над компонентом, в кото-
ром задано свойство Hint, вторая часть сообщения компонента заносится в свойст-