OnKeyPreview

Синтаксис

OnKeyPreview(Sender: Object; Args: IKeyPreviewEventArgs);

Параметры

Sender. Параметр, возвращающий компонент, сгенерировавший событие;

Args. Параметр, позволяющий определить параметры события.

Описание

Событие OnKeyPreview наступает перед каждым событием, связанным с нажатием клавиш.

Комментарии

Данное событие происходит перед событиями OnKeyDown, OnKeyPress и OnKeyUp. Может использоваться для отмены последующего события или для переназначения клавиш, сгенерировавших данное событие.

При переназначении клавиш необходимо учитывать следующее:

  1. Алфавитно-цифровые клавиши (а также их сочетания с управляющими) могут быть переназначены только на алфавитно-цифровые (сочетания с управляющими).

  2. Функциональные и управляющие клавиши (либо их сочетания) могут быть переназначены только на функциональные и управляющие (сочетания функциональных и управляющих клавиш).

Событие 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;

При выполнении примера, если во время ввода текста в области какого-либо компонента была нажата клавиша с латинской буквой A, то в дальнейших событиях (OnKeyDown, OnKeyPress, OnKeyUp) в аргументе будет передаваться код клавиши с латинской буквой B.

См. также:

IControl