Russian Belarusian English German Japanese Ukrainian

OnKeyUp

CuBook05

Описание

Событие 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))
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий