Описание
Событие OnKeyUp наступает, если компонент находится в фокусе, при отпускании пользователем любой ранее нажатой клавиши, включая функциональные и вспомогательные, такие как 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, ssDbuble> TShiftState;
typedef void (__closure *TKeyEvent)(System::TObject* Sender, Word SKey, Classes::TShiftState Shift);
__property TKeyEvent OnKeyUp
Параметр Shift является множеством, которое может быть пустым или включать следующие элементы:
Элемент | Значение |
ssShift | Отпускается клавиша Shift. |
ssAlt | Отпускается клавиша Alt. |
ssCtrl | Отпускается клавиша Ctrl. |
Значения элементов Shift, соответствующих нажатиям кнопок мыши, в данном событии не используются.
Событие OnKeyUp наиболее удобно, чтобы распознавать нажатые клавиши, особенно, комбинации клавиш. Надо только не забывать, что параметр Key имеет тип word, а не char, так что для распознавания надо использовать виртуальные коды. К тому же, надо учитывать, что виртуальный код не различает символы в верхнем и нижнем регистре и не реагирует на то, русский или английский язык включен в данный момент.
Пример
Пусть нужно написать обработчик, который бы реагировал на нажатие клавиш Shift+Y. Проверить нажатые клавиши можно оператором, но он будет реагировать и на «У», и на «у», и даже на русские буквы «Н» и «н», которые обычно расположены на той же клавише, что и латинская «Y». Для распознавания действительного символа надо использовать событие OnKeyPress.
if((Key == 'Y') && Shift.Contains(ssShift))