События клавиатуры

События клавиатуры происходят в форме и элементе формы, когда пользователь нажимает клавиши на клавиатуре или же выполняется макрокоманда sendKeys.

Все события клавиатуры связываются с тем объектом в форме, который имеет в данный момент фокус. Обычно это один из элементов управления. Форма может получить фокус (а значит, и события клавиатуры могут относиться к форме), только если все ее элементы управления заблокированы или невидимы. Если нужно привязать эти события именно к форме, а не к элементу формы, то можно присвоить свойству Перехват нажатия клавиш (KeyPreview) для формы значение Да (Yes). Тогда все события клавиатуры возникают сначала для формы, а потом уже для элемента управления, имеющего фокус. Это дает возможность запрограммировать реакцию формы на нажатие определенных клавиш вне зависимости от того, в каком элементе управления формы находится фокус.

Замечание

События клавиатуры не определены для элементов управления в отчетах, а также для флажков и переключателей в группах. Они определены только для группы в целом.

Клавиша вниз и Клавиша вверх

События Клавиша вниз (KeyDown) и Клавиша вверх (KeyUp) возникают всякий раз, когда пользователь нажимает или отпускает клавишу на клавиатуре и при этом фокус находится на элементе управления или форме. Процедуры обработки этих событий используют, когда требуется определить, какую клавишу нажал пользователь — функциональную, клавишу управления курсором, клавишу цифровой панели или комбинацию клавиш с <Shift>, <Ctrl> или <Alt>. Они имеют два параметра: KeyCode и Shift. Параметр KeyCode — это целое число, представляющее код нажатой клавиши. Параметр Shift позволяет определить, какие сочетания клавиш нажимались: 1 — соответствует <Shift>, 2 — <Ctrl>, 4 — <Alt>, 0 — не использовалось сочетание клавиш. Если же нажималась комбинация клавиш <Shift>, <Ctrl>, <Alt> в любом сочетании, то параметр Shift будет равен сумме значений каждой клавиши.

Нажатие клавиши

Событие Нажатие клавиши (KeyPress) происходит, если пользователь нажимает и отпускает любую комбинацию клавиш для элемента управления или формы, имеющей фокус. В отличие от событий Клавиша вниз (KeyDown) и Клавиша вверх (KeyUp), данное событие не происходит, когда нажимаются функциональные клавиши, клавиши управления курсором и клавиши <Shift>, <Ctrl> или <Alt>. Кроме того, эти события различны для верхнего и нижнего регистров. Процедура обработки настоящего события имеет один аргумент: KeyAscii — целое число, представляющее код нажатой клавиши.

Если пользователь нажимает и удерживает некоторую клавишу, то возникают повторяющиеся события Клавиша вниз (KeyDown) и Нажатие клавиши (KeyPress) до тех пор, пока он не отпустит клавишу. Тогда возникает событие Клавиша вверх (KeyUp).

Если результатом нажатия клавиши является перевод фокуса с одного элемента на другой, то событие Клавиша вниз (KeyDown) возникает для первого элемента, а события Нажатие клавиши (KeyPress) и Клавиша вверх (KeyUp) — для второго.

Если в результате нажатия клавиши появляется диалоговое окно, то возникают события Клавиша вниз (KeyDown) и Нажатие клавиши, а событие Клавиша вверх (KeyUp) не возникает.