|
||||||||
|
Реакция на события от мыши клавиатуры
Традиционно пользователь может предусмотреть реакцию на нажатие и отпускание любой из кнопок и перемещение курсора мыши. Эти три события обеспечивают интерфейс каждого элемента управления с мышью. Первые два из них имеют формат:
Параметры:
При перемещении мыши возникает событие:
Использование сообщений от мыши уже встречалось в примерах, приведенных выше (например, см. разд. "Положение, размеры и выравнивание элементов управления"). Два события извещают о щелчке и двойном щелчке левой кнопкой мыши над компонентом:
Отменить генерацию этих событий можно, удалив флаг csClickEvents из слова состояния элемента (ControlStyle). Для некоторых компонентов (например, кнопок) OnClick возникает еще и при нажатии определенных клавиш на клавиатуре, а также вследствие вызова метода Click. События, связанные с мышью, могут быть получены потомками TControl. В отличие от них, реакцию на события от клавиатуры могут иметь только оконные элементы управления ("могут", т. к. на уровне TControl и TWinControl эти события только описаны, но не опубликованы). Таким образом, есть компоненты (в том числе в Палитре компонентов), не имеющие связи с этими событиями из-за ее ненадобности. Впрочем, их меньшинство, и материал в этом разделе обобщен вполне обоснованно. Нажатие и отпускание клавиш клавиатуры могут инициировать следующие события:
Генерация этих событий встроена в обработчики сообщений Windows WMJCEYDOWN, WM.SYSKEYDOWN и WMJCEYUP, WM_SYSKEYUP соответственно. Обработчику передаются:
Другое событие, возникающее вследствие нажатия клавиши:
Это событие возникает при вводе с клавиатуры символа ASCII, т. е. оно не генерируется, например, при нажатии функциональных клавиш или <CapsLock>. Обработчик события вызывается при нажатии буквенных (в т. ч. вместе с <Shift>), цифровых клавиш, комбинаций <Ctrl>+<A> .. <Ctrl>+<Z> (коды ASCII #1..#26), <Enter>, <Esc>, <Backspace>, <Ctrl>+<Break> (код #3) и некоторых других. Также код ASCII можно сгенерировать, нажав <А1t>+<десятичный код символа> на числовой клавиатуре (Numeric Pad). Событие OnKeyPress соответствует сообщению Windows WM_CHAR. Все сообщения клавиатуры поступают тому элементу управления, который в данный момент имеет фокус ввода. Однако из этого правила возможно одно исключение. Если у формы, которая содержит этот элемент управления, свойство
установлено в True, то сначала все три вида сообщений поступают к ее обработчикам, и только потом ? к элементу управления. Если при этом в них обнулить параметр Key, то в элемент сообщение не поступит вообще. В приведенном ниже примере клавиша <F5> резервируется для изменения состояния формы:
Для комментария : kadan@grsu.grodno.by | |||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |