260___________________--•________________________Глава 4

Кроме того, при нажатии пользователем клавиши табуляции фокус может пе-
реключаться с элемента на элемент, что вызывает описанные в разделе 4.3.1.1 со-
бытия OnEnter и OnExit.

Важно четко представлять последовательность событий, происходящих при
нажатии пользователем клавиши или комбинации клавиш. Пусть, например, по-
льзователь нажал клавишу Shift (перевел ввод в верхний регистр), а затем нажал
клавишу символа <» н ». Последовательность событий для этого случая приведена в
таблице 4.3. В таблице указано, что именно можно распознать при каждом собы-
тии. Подробнее это будет рассмотрено ниже, а пока отметим, что различить символ
в верхнем и нижнем регистрах и различить латинский символ и символ кирилли-
цы можно только в обработчике события OnKeyPress. Действительно, хотя в собы-
тии OnKeyDown при нажатии клавиши «Н» можно определить, что при этом одно-
временно нажата и клавиша Shift, этого еще мало, чтобы утверждать, что символ
относится к верхнему регистру. Ведь если перед этим была включена клавиша
CapsLock, то при нажатой клавише Shift символ окажется в нижнем регистре. А ин-
формация о том, включена или выключена клавиша CapsLock, в обработчик собы-
тия OnKeyDown не передается.

Таблица 4.3. Последовательность событий клавиатуры при нажатии
клавиш Shift-н

I Действие пользователя   1 Событие

Нажатие клавиши Shift    OnKeyDown. Возможно распознавание нажатой

I клавиши Shift                                  [

Нажатие клавиши «Н»    ! OnKeyDown. Возможно распознавание нажатой   |:

| клавиши Shift, нажатой клавиши «н», но отличить ',
| верхний регистр от нижнего и латинский символ |:

| от русского невозможно                        1

I OnKeyPress. Возможно распознавание символа с
] учетом регистра и языка, но невозможно распозна- .
вание нажатой клавиши Shift

| Отпускание клавиши «н» lOnKeyUp. Возможно распознавание нажатой кла-
1 виши Shift, отпущенной клавиши «Н», но отличить
I верхний регистр от нижнего и латинский символ

1                        ' от русского невозможно                        I

Отпускание клавиши Shift | OnKeyUp. Возможно распознавание отпущенной  |;

[.клавиши Shift                                     !

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