ApplicationEvents

  

Компонент delphi ApplicationEvents это не визуальный компонент, перехватывающий события приложения – объекта Application. Компонент ApplicationEvents позволяет писать обработчики событий, на каждой форме можно поместить свой компонент. События объекта Application передаются всем компонентам находящимся на форме. Если вы хотите что бы события передавалось какому-то одному компоненту, примените к этому компоненту метод Activate, этот метод поставит его в начало очереди ApplicationEvents. Если вы не хотите, чтобы другие компоненты, получали эти события, примените к этому привилегированному компоненту метод CancelDispatch. Это позволит после обработки события в этом компоненте, другим компонентам ApplicationEvents вообще не реагировать на события ApplicationEvents .
Во многие обработчики событий передается по ссылке параметр Handled. По умолчанию равный False. Если вы обратили соответствующее событие и более не хотите, что бы оно обрабатывалось другими компонентами, необходимо в обработчике установить значение Handled равным True. Если событие так и не обработанные ни одним компонентом, то его будет пытаться обработать активный компонент, но если он его не обработает то активная форма. Запретить обработку события другим компонентам можно методом CancelDispatch.

Приведем примеры некоторых событий компонента
Обработчик события OnHint

1
2
3
4
procedure TForm10.ApplicationEvents2Hint(Sender: TObject);
begin
StatusBar2.SimpleText:=Aplication.Hint;
end;

В полосе состояния StatusBar отображается вторая часть свойства Hint, в котором есть это свойство и над которым в данный момент находится курсор мыши. Отображение происходит в любом случае независимо от свойства ShowHint компонента.

Обработчик события OnShowHint

1
2
3
4
5
6
7
8
procedure TForm10.ApplicationEvents2ShowHint(var HintStr: string;
var CanShow: Boolean; var HintInfo: THintInfo);
begin
if (hintInfo.HintControl.ClassName = 'TEdit')
then begin
HintStr:= (HintInfo.HintControl as Tedit).Text;
ApplicationEvents2.CancelDispatch;
end;

Подменяет для окон типа Edit текст ярлычка на текст, содержащийся в окнах редактирования. Этот прием позволяет пользователям, подведя курсор мыши к полю редактирования, увидеть во всплывающей подсказке полный текст, который может быть не виден обычным образом, если данный тест длинный и не помещается целиком в окно редактирования.

Обработчик события OnHelp

1
2
3
4
function TForm10.ApplicationEvents2Help(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
begin
if (Command=HELP_CONTEXT) and (Data

Это событие обеспечивает отображение контекстных справок с номерами идентификаторов тем, меньше 9, во всплывающем окне, не прибегая при этом к WinHelp. Это дает возможность отображать многострочные всплывающие окна.

Обработчик события OnShortCut

1
2
3
4
5
6
7
8
procedure TForm10.ApplicationEvents2ShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if Msg.CharCode=Ord('Q') then
if Application.MessageBox('Вы действительно хотите завершить работу?',
'Подтвердите завершение', MB_YESNOCANCEL+MB_ICONQUESTION)=IDYES
Then Application.Terminate
end;

Это событие позволяет перехватывать нажатие пользователем клавиш, в данном случае если нажата клавиши с символом “Q” (независима от установленного языка), то пользователь увидит диалоговое окно с текстом “’Действительно хотите завершить работу” вызываемое методом Application.MessageBox. Если пользователь нажмет да, то приложение закроется методом Application.Terminate.

Обработчики событий OnActivate и OnDeactivate

1
2
3
4
5
6
7
8
9
procedure TForm10.ApplicationEvents2Activate(Sender: TObject);
begin
Label2.Caption:='’Ура! Я работаю!';
end;

procedure TForm10.ApplicationEvents2Deactivate(Sender: TObject);
begin
Label2.Caption:='Увы! Меня покинули!';
end;

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