Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перехват нажатия клавиш в форме / 12 сообщений из 12, страница 1 из 1
24.09.2004, 18:25:16
    #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
24.09.2004, 18:57:28
    #32711160
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатия клавиш в форме
имхо, достаточно их не перечислять и всё.
...
Рейтинг: 0 / 0
24.09.2004, 20:13:39
    #32711260
Dmyttro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатия клавиш в форме
Не-а. Ежели не перечисляю, то просто на них никак не реагирует.
...
Рейтинг: 0 / 0
24.09.2004, 20:16:09
    #32711262
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват нажатия клавиш в форме
DmyttroНе-а. Ежели не перечисляю, то просто на них никак не реагирует.
Если не реагирует, значит выполняется KeyCode = 0. Надо, чтобы не выполнялось. Например:

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

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

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


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