Sub OnKeyPreview(Sender: Object; Args: IKeyPreviewEventArgs);
Begin
//набор операторов;
End Sub OnKeyPreview;
Sender. Параметр, возвращающий компонент, сгенерировавший событие;
Args. Параметр, позволяющий определить параметры события.
Событие OnKeyPreview наступает перед каждым событием, связанным с нажатием клавиш.
Данное событие происходит перед событиями OnKeyDown, OnKeyPress и OnKeyUp. Может использоваться для отмены последующего события или для переназначения клавиш, сгенерировавших данное событие.
Примечание. При переназначении клавиш необходимо учитывать следующее:
- алфавитно-цифровые клавиши (а также их сочетания с управляющими) могут быть переназначены только на алфавитно-цифровые (сочетания с управляющими);
- функциональные и управляющие клавиши (либо их сочетания) могут быть переназначены только на функциональные и управляющие (сочетания функциональных и управляющих клавиш).
Событие OnKeyPreview наступает для всей иерархии компонентов, начиная с того компонента, который имеет в текущий момент фокус, и заканчивая самой формой. Если форма отображается во фрейме, то событие OnKeyPreview через компонент Frame будет проброшено на самый верхний уровень до родительской формы, на которой расположен компонент Frame.
Для выполнения примера предполагается наличие формы. На форме расположено несколько компонентов, которые могут принимать фокус. В качестве обработчика события OnKeyPreview для всех компонентов используется следующая процедура:
Sub ProcedureOnKeyPreview(Sender: Object; Args: IKeyPreviewEventArgs);
Begin
If Args.Key = Keys.A Then
Args.Key := Keys.B;
End If;
End Sub ProcedureOnKeyPreview;
При выполнении примера, если во время ввода текста в области какого-либо компонента была нажата клавиша с латинской буквой «А», то в дальнейших событиях (OnKeyDown, OnKeyPress, OnKeyUp) в аргументе будет передаваться код клавиши с латинской буквой «B».
См. также: