Использование строки заголовка формы как места для вывода подсказок

В этой статье  я объяснил, как сделать имитацию строки заголовка и намекнул, что в эту панельку можно и подсказки пользователю выводить. Код, в принципе, очень прост (я думаю, Вы без напряга сможете написать что-нибудь свое), но вся проблема в том, как сделать это элегантнее и меньше по размеру ;).

Я в эту панельку (lblInfoTips) вывожу краткие подсказки по элементу управления, расположенному на форме, когда пользователь либо наводит мышку на него, либо выделяет, неважно, клавишами или мышкой. Короче, обрабатываю события [Перемещения указателя] и [Получения фокуса] элемента управления. Можно, конечно, написать свой код для перехвата события в модуле формы, но при таком простом решении начинаешь понимать, что модуль формы просто захламляется вот такими повторяющимися обработчиками событий (шутка ли, на каждый элемент по два дополнительных события) и за деревьями уже не видно леса ;).

Немного подумав ;), я пришел к такому решению - в модуль формы вставляю такую функцию:

Private Function MouseMoveInfo(NumberInfo As Integer)
Select Case NumberInfo

Case 1: Me.lblInfoTips.Caption = "Щелчок на кнопке очистит все поля и подготовит форму для добавления нового нарушителя"
Case 2: Me.lblInfoTips.Caption = "Вы легко можете найти все подходящие записи, указав лишь несколько символов в поле  [Образец:]"
Case 3: Me.lblInfoTips.Caption = "При вводе реквизитов происходит поиск и предложение подходящих вариантов в списке"
Case 4: Me.lblInfoTips.Caption = "Можно указать дату, щелкнув на кнопке календаря, или сразу ввести дату с любыми разделителями"

End Select
End Function

По мере увеличения элементов на форме просто добавляйте дополнительные строки в функцию, или используйте вызов одинаковой информации в однотипных элементах. Двоеточие поставлено для того, чтобы избежать лишних переносов строк.

В окне свойств на вкладке [События] каждого элемента управления в событие [Перемещения указателя] и [Получения фокуса] вставляю: 

=MouseMoveInfo(1)

Конечно, номер в скобках выбирайте в зависимости от того, какое информационное сообщение Вы хотите отобразить при проведении мышкой над элементом или при получении элементом фокуса.

В моих программах имеются всплывающие формы, открывающиеся относительно элементов управления главной формы (об этом я напишу позже). Чтобы использовать панель lblInfoTips главной формы для вывода подсказок для элементов всплывающей формы в модуле всплывающей формы используйте следующую функцию:

Private Function MouseMoveInfo(NumberInfo As Integer)
Select Case NumberInfo

Case 1: Forms!frmНарушения.lblInfoTips.Caption = " Выбор подходящего префикса в зависимости от способа регистрации входящего материала"
Case 2: Forms!frmНарушения.lblInfoTips.Caption = " В поле регистрационного номера допускается вписывать только цифры"

End Select
End Function

У меня этих справочных строк в некоторых формах до 40, но никакой проблемы с быстродействием не наблюдается.

Таким образом, удается компактно разместить самую необходимую справочную информацию, которая помогает пользователю ориентироваться в программе (ну, конечно, если он умеет читать ;). 

С другой стороны - что нам мешает выводить подсказку просто в стандартную строку заголовка формы: 

....Case 3: Me.Caption = "При ввод....

так я тоже попробовал, но некрасиво как-то и уже повторюсь, не вписывается в общую стилистическую гамму программы и шрифт жирный поэтому в стандартной строке заголовка формы умещается меньше символов, чем хотелось бы.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=7333