Что подразумевается под "предварительным просмотром ключа" свойства формы в MS Access?
Я сейчас занимаюсь программированием в MS Access, и, просматривая свойства формы, я наткнулся на свойство с именем "Предварительный просмотр ключа". Документация MS Access сообщает, что она используется для вызова событий клавиатуры для форм перед событиями клавиатуры для элементов управления.
Я не уверен, что это значит и как может быть возможным использование этого свойства??
1 ответ
Если для свойства KeyPreview установлено значение true, форма получит событие клавиатуры до того, как это сделает элемент управления, что даст вам возможность что-то с ним сделать на уровне формы.
Теперь представьте, что у вас есть форма с множеством элементов управления.
Представьте, что вы хотите позволить пользователю нажимать клавишу F2 на клавиатуре для выполнения какого-либо действия, например, открытия другой формы, воспроизведения музыки или чего-либо еще.
В Access, как и в большинстве программ пользовательского интерфейса, только один элемент управления может получить фокус в любой момент времени. Так что, если фокус находится на текстовом поле, при нажатии клавиши F2 события клавиатуры этого текстового поля будут срабатывать.
Вы можете поймать это нажатие клавиш из событий текстового поля, но если пользователь нажмет F2 из другого элемента управления, оно не будет обнаружено, если вы также не обнаружите, что F2 был получен из этого элемента управления.
Таким образом, чтобы упростить задачу, вы можете просто настроить форму для получения событий клавиатуры в первую очередь, прежде чем они будут переданы в элемент управления, имеющий фокус, что даст вам возможность обнаружить, что пользователь нажал F2 в одном месте, вместо того, чтобы подключить каждый элемент управления, чтобы обнаружить это нажатие клавиши.
пример
Добавить одно текстовое поле mytextbox
в новой форме. В коде для формы добавьте следующие события для перехвата событий клавиатуры как для формы, так и для текстового поля:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "Form_KeyDown(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Debug.Print "Form_KeyPress(KeyAscii:" & KeyAscii & ")"
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Debug.Print "Form_KeyUp(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub
Private Sub mytextbox_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "mytextbox_KeyDown(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub
Private Sub mytextbox_KeyPress(KeyAscii As Integer)
Debug.Print "mytextbox_KeyPress(KeyAscii:" & KeyAscii & ")"
End Sub
Private Sub mytextbox_KeyUp(KeyCode As Integer, Shift As Integer)
Debug.Print "mytextbox_KeyUp(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub
Теперь откройте форму и введите один ключ.
Если вы нажмете Q
ключ, вы должны увидеть что-то вроде этого в ближайшем окне:
Только текстовое поле получило события.
Теперь установите для свойства KeyPreview значение true (Да), и когда вы откроете форму и нажмете Q
, вы должны увидеть, что Форма сначала получила события клавиатуры.