- Событие OnKeyUp
Событие OnKeyUp
Событие OnKeyUp наступает, если компонент находится в фокусе при отпускании пользователем любой ранее нажатой клавиши, включая функциональные и вспомогательные, такие как <Shift>, <Alt> и <Ctrl>. В обработчик события передается параметр Sender, указывающий на компонент, в котором произошло событие. Кроме этого, в обработчик события передаются параметры WORD &Key и TShiftState Shift, предназначенные для возврата через них кодов клавиш.
Событие OnKeyUp наиболее удобно для распознавания нажатых клавиш и комбинации клавиш. Необходимо обратить внимание, что параметр Key для обработчика данного события имеет тип word в отличие от типа char для события OnKeyPress. Поэтому параметр Key допускается сравнивать с целым числом, соответствующим коду символа, или применить к параметру Key функцию char, переводящую его в символ для сравнения с символами. К тому же надо учитывать, что виртуальный символьный код одинаков для символов в верхнем и нижнем регистре и для различной раскладки клавиатуры (русской или английской).
Рассмотрим способ определения кода нажатой клавиши на примере небольшой программы. Создайте в среде разработки Borland C++ Builder 6 новое приложение и поместите на форму один компонент Label1. В инспекторе кодов, для формы Form1 на вкладке событий щелкните дважды по полю правее OnClick и введите в заготовку обработчика события программный код из листинга 22.2.
Листинг 22.2. Обработчик события OnClick
Этот код программы позволит изменять свойство Caption компонента на сообщение о возникновении события OnClick на форме приложения.
Аналогично введите для формы Form1 код обработки события KeyDown из листинга 22.3 и код обработки события KeyPress из листинга 22.4.
Листинг 22.3. Обработчик события KeyDown
if(Shift.Contains(ssCtrl) ) Label1->Caption = "Ctrl";
if(Shift.Contains(ssShift)) Label1->Caption = "Shift";
switch (Key)
{
case VK_INSERT: Label1->Caption = "Insert"; breaks;
case VK_CAPITAL: Label1->Caption = "CapsLock"; break;
case VK_NUMLOCK: Label1->Caption = "NumLock"; break;
}
Листинг 22.4. Обработчик события KeyPress
{
case ' ': Labell~>Caption = "Был нажат пробел"; break;
default : Labell~>Caption = Key; break;
}
Теперь запустите приложение на выполнение и понажимайте любые клавиши на клавиатуре, а также пощелкайте левой кнопкой мыши по форме приложения — и вы увидите реакцию программы на ваши действия.