powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перехват нажатия клавиш в форме
12 сообщений из 12, страница 1 из 1
Перехват нажатия клавиш в форме
    #32711110
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Подскажите, пожалуйста, как обработать событие "нажатие клавиши" на форме. В смысле, хочется, чтобы отлавливать реакцию только на определенные клавиши, а остальные работали бы так, словно их ничто не перехватывает.
Сейчас делаю примерно так:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case Shift
Case 1 'Shift Key Down
Select Case KeyCode
...
End Select
Case 2 'Ctrl Key Down
Select Case KeyCode
...
Case vbKeyF4
DoCmd.Close acForm, Me.Name 'вот здесь приходится вставлять код,
'который дублирует стандартную реакцию на нажатие кнопки.
Case vbKeyP
Call Другая_подпрограмма
End Select
Case 4 'Alt Key Down
Select Case KeyCode
...
End Select
Case Else
Select Case KeyCode
...
End Select
End Select
KeyCode = 0
End Sub

А как сделать так, чтобы не перечислять стандартные сочетания клавиш в Case?
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711160
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, достаточно их не перечислять и всё.
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711260
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не-а. Ежели не перечисляю, то просто на них никак не реагирует.
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711262
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DmyttroНе-а. Ежели не перечисляю, то просто на них никак не реагирует.
Если не реагирует, значит выполняется KeyCode = 0. Надо, чтобы не выполнялось. Например:

case else
exit sub
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711267
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Владимир Саныч
Если убираю KeyCode = 0, то картина становится интересной. Допустим, хочу, чтобы при сочетании Ctrl+P открывался соответствующий отчет. Так вот при отсутствующем KeyCode = 0 он не только открывается. но и сразу появляется диалог печати. т.е., насколько я понимаю, Access воспринимает нажатие и как того хочу я, и как стандатрное событие сразу (в смысле последовательно)?
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711284
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dmyttroт.е., насколько я понимаю, Access воспринимает нажатие и как того хочу я, и как стандатрное событие сразу (в смысле последовательно)?
Совершенно верно. Аксесс сначала исполняет то, что написано в процедуре обработчика, а потом то, что он хочет делать сам. Чтобы отменить второе, пишется KeyCode = 0 (разумеется, только для тех клавиш, для которых надо).
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711290
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. если я в конце каждого case (после вызова определенных действий) напишу KeyCode = 0, это будет гуд? Попробовал, вроде как работает.
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711291
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Работает - значит хорошо. Но я имел в виду по-другому.

select case keycode
case ...
case ...
case else
exit sub
end select
keycode=0

Красное - это то, что я предложил добавить (см. мой пост от 20:16). Остальное в программе уже есть.
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32711299
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, как раз самое оно.
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32715084
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч, выручай.
Хоть, как говорится, кто старое помянет (в смысле, старый топик)...
Тем не менее, только сегодня понял, что что-то не так. Все вроде было бы нормально, но есть одно но. Когда при помощи tab перехожу на кнопку и нажимаю Enter, то выполняется действие совсем не то, что мне нужно. Ежели же нажимаю эту кнопку мышью, все ОК. Что еще в коде я пропустил?
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32715160
Dmyttro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 All
Уважаемые, хоть вопрос, конечно, в-основном, к Санычу, но это не значит, что чьи-либо умные мысли по поводу останутся незамеченными - буду премного благодарен.
Код весь как на ладони в постах выше, вопрос - в предыдущем моем посте. Я так понимаю, что надо вставиь какую-то реакцию на VbKeyReturn. Но какую?
...
Рейтинг: 0 / 0
Перехват нажатия клавиш в форме
    #32715584
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DmyttroЯ так понимаю, что надо вставиь какую-то реакцию на VbKeyReturn. Но какую?
Полагаю, keycode=0
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перехват нажатия клавиш в форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]