1032_____________________________________________Глава 15

не алфавитно-цифровых клавиш используются виртуальные коды API Windows.
Эти коды и способы проверки параметра Key приведены в главе 14 в разделе 14.1.
Коды не различают символы в верхнем и нижнем регистрах и не различают симво-
лы кириллицы и латинские.

Параметр Shift является множеством, которое может быть пустым или вклю-
чать следующие элементы:

«элемент	оиачеиие
ssShift	Отпускается клавиша Shift.
ssAlt	Отпускается клавиша Alt.
ssCtrl	Отпускается клавиша Ctrl.

Значения элементов Shift, соответствующих нажатиям кнопок мыши, в дан-
ном событии не используются.

Событие OnKeyUp наиболее удобно, чтобы распознавать нажатые клавиши,
особенно, комбинации клавиш. Надо только не забывать, что параметр Key имеет
тип word, а не char, так что для распознавания надо использовать виртуальные
коды. К тому же, надо учитывать, что виртуальный код не различает символы в
верхнем и нижнем регистре и не реагирует на то, русский или английский язык
включен в данный момент.

Примеры

Пусть вы хотите написать обработчик, который бы реагировал на нажатие
клавиш Shift-Y. Проверить нажатые клавиши можно оператором:

if((Key == 'Y') && Shift.Contains(ssShift)) ... ;

Но он будет реагировать и на «Y>>, и на «у», и даже на русские буквы «Н» и
«н», которые обычно расположены на той же клавише, что и латинская «Y». Для
распознавания действительного символа надо использовать событие OnKeyPress.

OnMouseDown и OnMouseUp

Событие наступает в момент нажатия пользователем клавиши мыши над ком-
понентом

Класс TControl

Определение

enum TMouseButton { mbLeft, mbRight, mbMiddle };

enum Classes_1 { ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle,
ssDouble } ;

typedef Set<Classes_1, ssShift, ssDouble> TShiftState;

typedef void (_closure *TMouseEvent)(System::TObject* Sender,
TMouseButton Button,
Classes::TShiftState Shift, int X, int Y) ;

property TMouseEvent OnMouseDown

Имеется также парное к данному событие OnMouseUp, наступающее при от-
пускании нажатой кнопки мыши над объектом. Его определение использует тот
же тип TMouseEvent:

property TMouseEvent OnMouseUp