Описание
Событие OnKeyDown наступает, если компонент находится в фокусе, при нажатии пользователем любой клавиши, включая функциональные и вспомогательные, такие как Shift, Alt и Ctrl.
В обработчик события передаются, кроме обычного параметра Sender, указывающего на компонент, в котором произошло событие, также параметры Key и Shift. Параметр Key определяет нажатую клавишу клавиатуры. Для не алфавитно-цифровых клавиш используется виртуальный код API Windows. Коды не различают символы в верхнем и нижнем регистрах и не различают символы кириллицы и латинские.
Классы
TWinControl
Определение
enum Classes__1 { ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble };
typedef Set<Classes __1, ssShift, ssDouble> TShiftState;
typedef void (__closure *TKeyEvent)(System::TObject* Sender, Word &Key, Classes::TShiftState Shift);
__property TKeyEvent OnKeyDown
Параметр Shift является множеством, которое может быть пустым или включать следующие элементы:
Элемент | Значение |
ssShift | Нажата клавиша Shift. |
ssAlt | Нажата клавиша Alt. |
ssCtrl | Нажата клавиша Ctrl. |
Значения элементов Shift, соответствующие нажатиям кнопок мыши, в данном событии не используются.
Пример №1
Пусть нужно распознать комбинацию клавиш All+X. Для этого можно написать следующий оператор:
if((Key == 'X') && Shift.Contains(ssAlt))
{
...
}
Пример №2
Реакцию на нажатие пользователем клавиши Enter можно оформить одним из следующих операторов:
if(Key == 13)
{
...
}
или
if(Key == 0x0D)
{
...
}
или
if(Key == VK_RETURN)
{
...
}