Использование строки
заголовка формы как места для вывода
подсказок
В статье Создание
"фальшивой" строки заголовка у формы
я объяснил,
как сделать имитацию строки заголовка и
намекнул, что в эту панельку можно и подсказки
пользователю выводить.
Код, в
принципе, очень прост (я думаю, Вы без
напряга сможете написать что-нибудь свое),
но вся проблема в том, как сделать это
элегантнее и меньше по размеру ;).
Я в эту
панельку (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 = "При ввод....
так я тоже попробовал,
но некрасиво как-то и уже повторюсь, не
вписывается в общую стилистическую гамму
программы и шрифт жирный поэтому в
стандартной строке заголовка формы
умещается меньше символов, чем хотелось бы.