Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

3.2.14. TApplicationEvents - обработчик сообщений Windows

Компонент TApplicationEvents в отличие от остальных компонентов страницы Additional не имеет видимого эквивалента в работающей программе. Его основное и единственное назначение - служить приемником многочисленных сообщений, которые Windows посылает работающей программе.

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

Следующая простая программа познакомит вас с примером использования компонента. В ней фильтруется ввод программы в компонент TEdit так, чтобы запретить появление в нем любых цифр.

На пустую форму поместите TEdit и TApplicationEvents.

Напишите такой обработчик события OnMessage компонента TApplicationEvents:

procedure TForm1.ApplicationEventslMessage(var Msg: tagMSG;

var Handled: Boolean);

begin

Handled := Editi.Focused and (Msg.Message=wm_Char)

and (Msg.wParam>=48) and (Msg.wParam<=57)

end;

Если теперь запустить программу, ввод цифр в компонент Edit1 будет блокирован. В нашей простой программе есть единственный компонент, способный получать фокус ввода, поэтому проверка Edit1 Focused в условном операторе является излишней. Она введена только для того, чтобы продемонстрировать, как программа может определить получателя клавиатурного ввода.

Любая форма может иметь сколько угодно компонентов TAppicationEvents. Одно и то же сообщение поступает последовательно в каждый из них до тех пор, пока это сообщение не будет обработано или пока оно не поступит всем. Порядок получения сообщений обратен порядку размещения компонентов на форме: вначале сообщение получит последний размещенный на форме компонент, затем предпоследний и т. д. Этот порядок можно изменить с помощью метода Activate. Запретить получение остальным компонентам уже обработанного сообщения можно с помощью метода CancelDispatch, если в проекте имеется несколько форм, расположенные на них компоненты TAplicationEvents начинают получать сообщения только после того, как соответствующая форма станет активной. Работа всех компонентов TApplicationEvents будет блокирована, если в объекте Application определен обработчик события onMessage.

В Инспекторе объектов опубликованы только два свойства компонента: Name и Tag.

Методы компонента:

Метод

Описание

procedure Activate;

Делает компонент первым получателем сообщения

procedure CancelDispatch;

Запрещает получение текущего сообщения остальным компонентам

События:

Событиe:

Описание

type TActionEvent = procedure (Action: TBasicAction; var Handled: Boolean) of objects;

property OnActionExecute: TActionEvent;

Это событие возникает тогда, когда пользователь активизирует управляющий элемент, приписанный определенному действию, в котором не определен обработчик OnExecute

type TActionEvent = procedure (Action: TBasicAction; var Handled: Boolean) of object;

property OnActionUpdate: TAction

Event;

Это событие возникает тогда, когда пользователь активизирует управляющий элемент, приписанный определенному действию, в котором не определен обработчик OnUpdate

property OnActivate: TNotifyEvent;

Возникает при активизации приложения

property OnDeactivate: TNotifyEvent;

Возникает при детивизации приложения 

type TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;

property OnException: TException Event;

Возникает перед умалчиваемой обработкой исключения, для которого нет соответствующего программного обработчика. 

type THelpEvent = function (Command: Word; Data: Longint;

var CallHelp: Boolean): Booleanof object;

property OnHelp: THelpEvent;

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

property OnHint: TNotifyEvent;

Возникает перед выдачей оперативной справки для компонента, свойство Hint которого не пустая строка

type TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;

property Orrldle: TIdleEvent;

Возникает, когда программа переходит, в состояние ожидания. Если в Done установлено значение False, после выполнения других работ Windows вновь вызывает приостановленную программу, в противном случае вызов программы происходит только при поступлении в ее адрес очередного сообщения

type TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;

property OnMessage: TMessageEvent;

Возникает при поступлении любого сообщения от Windows. Msg - сообщение, Handled=True, если обработчик завершил обработку сообщени

property OnMinimize: TNotifyEvent;

Возникает при минимизации главного окна программы

property OnRestore: TNotifyEvent;

Возникает при восстановлении размеров главного окна программы

ShortCutEvent = procedure (var Msg: TWMKey; var Handled: Boolean) of object;

property OnShortCut: TShortCutEvent;

Возникает, когда пользователь нажал клавишу на клавиатуре (перед событиями ОnKeyDown или OnKeyPress). Позволяет программе распознать и интерпретировать нажатие клавиш-акселераторов

type TShowHintEvent = procedure (var HintStr: String; var CanShow: Boolean;

var Hintlnfo:THintInfo) of object;

property OnShowHint: TShowHintEvent;

Возникает перед появлением оперативной справки Hint. HintStr - строка для справки; Hintlnfo - информация об окне справки. Установите в CanShow значение True, если нужно отобразить справку (остальные параметры к этому времени могут быть изменены)