Свойства, методы, события, типы, классы______________________1031

Если же клавиша символа нажимается одновременно с какой-то из вспомогатель-
ных клавиш, то событие OnKeyPress может не наступить (произойдут только со-
бытия OnKeyDown при нажатии и OnKeyUp при отпускании) или, если и насту-
пит, то укажет на неверный символ. Например, при нажатой клавише Alt событие
OnKeyPress при нажатии символьной клавиши не наступает. А при нажатой кла-
више Ctrl событие OnKeyPress при нажатии символьной клавиши наступает, но
символ не распознается.

Поскольку параметр Key передается в обработчик по ссылке, его можно изме-
нять, передавая для дальнейшей стандартной обработки другой символ, как в при-
веденных ниже примерах.

Примеры

1. Пусть вы хотите, чтобы пользователь не мог вводить в окно редактирования
Editi какие-либо символы, кроме цифр. Это можно сделать, написав для Editi
следующий обработчик события OnKeyPress:

Set <char, '0', '9'> Dig;

Dig « '0' « 'Г « '2' « '3' « '4' « '5' « '6' « '7' « '8' « '9';

it ( ! Dig.Contains(Key))
Key = 0;

Этот оператор трансформирует все не цифровые символы в нулевые и они не
будут отражаться в окне редактирования.

2. Приведенный ниже оператор обработчика события OnKeyPress переводит ла-
тинские символы в верхний регистр, независимо от того, в каком регистре на-
брал их пользователь:

Key = UpCase(Key);

Этот оператор действует только на латинские символы. Приведенный ниже
аналогичный оператор действует и на латинский символы, и на символы ки-
риллицы(подробнее см. в разделе 14.10 главы 14):

Key = AnsiUpperCase(Key) [1];

OnKeyUp___________________________________________

Событие наступает при отпускании пользователем любой клавиши
Класс TWinControl

Определение

enum Classes I ( 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 Shifts-
property TKeyEvent OnKeyUp

Описание

Событие OnKeyUp наступает, если компонент находится в фокусе, при отпус-
кании пользователем любой ранее нажатой клавиши, включая функциональные и
вспомогательные, такие, как Shift, Alt и Ctrl.

В обработчик события передаются, кроме обычного параметра Sender, указы-
вающего на компонент, в котором произошло событие, также параметры Key и
Shift. Параметр Key определяет клавишу клавиатуры, которая отпускается. Для