Задача:
При наведении мыши на определенный контрол, выводить подсказку о его назначении в строке состояния (StatusBar
).
Решение:
С первого взгляда на проблему хочется тут же взяться и начать писать обработчики событий OnMouseEnter
и OnMouseLeave
вроде этих:
void __fastcall TForm::SomeControlMouseEnter(TObject *Sender)
{
// Выводим сообщение в строку состояния
StatusBar1->SimpleText = "Вы навели мышь на вот этот контрол";
}
//---------------------------------------------------------------------------
void __fastcall TAddNewLocationForm::BInsertMouseLeave(TObject *Sender)
{
// Очищаем строку состояния
StatusBar1->SimpleText = "";
}
Конечно, это вполне работоспособный код, но если обработать таким образом нужно много элементов на форме, сразу задумываешься: а нет ли способа покороче да поуниверсальнее.
Мы может воспользоваться компонентом ApplicationEvents
(группа Additional в BDS 2006), отвечающим за обработку событий приложения. Нам пригодится событие OnHint
.
Оно возникает, когда курсор мыши перемещается над компонентом или элементом меню. При этом значение свойства Hint
текущего компонента заносится в одноименное свойство приложения: Application->Hint
.
Cначала задайте текст подсказок в свойстве Hint
требуемых контролов. Дальше пишем простой обработчик события OnHint
:
void __fastcall TForm::ApplicationEvents1Hint(TObject *Sender)
{
StatusBar1->SimpleText = Application->Hint;
}
Собственно, всё. Теперь при наведении мыши на компоненты, в статусной строке будут возникать подсказки, соответствующие данному компоненту.
Задача решена.