Этот метод улучшает пользовательский интерфейс приложений на Access. Текстовое поле в стандартной форме ничем, кроме мигающего курсора, не выделяется. Порой бывает сложно сразу определить, где находится текущее поле ввода. При получении фокуса будем подсвечивать поле (свойство BackColor) и менять оформление для него (SpecialEffect), при возврате фокуса свойства поля будут меняться на стандартные.
Вот такое текстовое поле без обработки:
Создадим несколько функций и отдельный модуль для них.
В редакторе Visual Basic (Alt+F11) создаем новый модуль: Insert=>Module. Назовем его modSpecEffects. Объявим константы в разделе определения, затем добавим две функции. Таким образом, модуль содержит следующий текст:
Перейдем в форму, выделим текстовые поля, которые нужно будет изменить (выделение нескольких полей по порядку производится с зажатой клавишей Shift, выделение полей поодиночке – с клавишей Ctrl), откроем их свойства и запишем обработчики для событий «Получение фокуса» (OnGotFocus) и «Потеря фокуса (OnLostFocus). Это будут наши ранее созданные функции SpecEfEnter() и SpecEfExit() соответственно. Ставим знак «=», затем начинаем писать названия функций. Их названия появятся в списке подсказки.
Итог:
Кроме того, для этих элементов устанавливаем цвет фона 12632256 или выбрать из списка «Цвет формы».
Для формы создадим обработчик события «Открытие» (Open):
После запуска формы получаем:
Можно менять не только цвет фона и оформление, но и другие свойства, например, цвет текста,
Поскольку мы создали отдельный модуль, то эти функции не нужно прописывать в модулях других форм, достаточно написать их названия в обработчиках элементов управления (как на третьем рисунке).
Вот такое текстовое поле без обработки:
Создадим несколько функций и отдельный модуль для них.
В редакторе Visual Basic (Alt+F11) создаем новый модуль: Insert=>Module. Назовем его modSpecEffects. Объявим константы в разделе определения, затем добавим две функции. Таким образом, модуль содержит следующий текст:
Option Compare Database
Option Explicit
Private Const cWhite = 16777215
Private Const cGray = -2147483633
Private Const cIndent = 2
Private Const cFlat = 0
Public Function SpecEfEnter()
On Error GoTo HandleErr
'рельефное выделение поля
Screen.ActiveControl.SpecialEffect = cIndent
'цвет поля становится белым
Screen.ActiveControl.BackColor = cWhite
ExitHere:
Exit Function
HandleErr:
MsgBox Err & ": " & Err.Description
Resume ExitHere
End Function
Public Function SpecEfExit()
On Error GoTo HandleErr
'рельефное выделение поля убираем
Screen.ActiveControl.SpecialEffect = cFlat
'цвет поля становится стандартным
Screen.ActiveControl.BackColor = cGray
ExitHere:
Exit Function
HandleErr:
MsgBox Err & ":" & Err.Description
Resume ExitHere
End Function
Перейдем в форму, выделим текстовые поля, которые нужно будет изменить (выделение нескольких полей по порядку производится с зажатой клавишей Shift, выделение полей поодиночке – с клавишей Ctrl), откроем их свойства и запишем обработчики для событий «Получение фокуса» (OnGotFocus) и «Потеря фокуса (OnLostFocus). Это будут наши ранее созданные функции SpecEfEnter() и SpecEfExit() соответственно. Ставим знак «=», затем начинаем писать названия функций. Их названия появятся в списке подсказки.
Итог:
Кроме того, для этих элементов устанавливаем цвет фона 12632256 или выбрать из списка «Цвет формы».
Для формы создадим обработчик события «Открытие» (Open):
Private Sub Form_Open(Cancel As Integer)Если не прописать установку фокуса, то при открытии формы выйдет ошибка, поскольку активный элемент будет не определен, а обработчик уже сработает.
Me.SetFocus
End Sub
После запуска формы получаем:
Можно менять не только цвет фона и оформление, но и другие свойства, например, цвет текста,
Поскольку мы создали отдельный модуль, то эти функции не нужно прописывать в модулях других форм, достаточно написать их названия в обработчиках элементов управления (как на третьем рисунке).
