Компонент Delphi ApplicationEvents (события приложения) располагается на странице Additional Палитры компонентов. Только во время выполнения программы доступен объект Application и для облегчения кодирования используется ApplicationEvents. Разместив компонент на форме мы можем на этапе проектирования через Инспектор объектов использовать события приложения. С его помощью возможно возможно принимать и обрабатывать все сообщения, направляемые приложению, в одном месте. Данный компонент хорошо подходит, когда в приложении требуется обрабатывать сообщения Windows.
Компоненты ApplicationEvents можно разместить на любых формах проекта. Они все получат копии сообщений, которые предназначаются приложению.
Обрабатываемые события компонента ApplicationEvents
- OnActionExecute - не обрабатываемые действия;
- OnException - происходит обработка исключительной ситуации, которая не описана в блоках TRY;
- OnMessage - принятие приложением сообщения от Windows;
- OnDeactivate - состояние деактивизации (возникает при переключении пользователя на другую программу);
- OnActivate - состояние активации программы;
- OnHelp - происходит запрос справочной системы;
- OnHint - указатель мыши располагается на объектом, который может отображать всплывающую подсказку;
- OnIdle - выполняется, когда приложение заканчивает текущую работу и переходит в режим ожидания (процессорное время не тратиться), код должен быть маленьким, чтобы приложение не замедлило свою работу;
- OnMinimize - сворачивание приложения;
- OnRestore - восстановление приложения к нормальному размеру из свернутого состояния;
- OnShortCut - нажата клавиша. Программа это сообщение получит до посылки сообщения элементу управления о нажатии клавиши;
- OnShowHint - вывод подсказки.
Рассмотрим пример, когда нам надо определить координаты мыши в пределах окна формы, при щелчке правой кнопки. Данные будут выводиться с помощью надписи Label1.
Важный параметр Msg - описывает сообщение полученное от Windows (стандартный код сообщений Windows, описания кодов находятся в модуле Messages), до того, как оно уйдет дальше в программу.
Мы должны определить сообщение WM_RBUTTONUP - отпускание правой кнопки мыши. С помощью функции ScreenToClient происходит пересчет координат для нашего окна (формы).
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var P:TPoint; begin if Msg.message = WM_RBUTTONUP then begin P := ScreenToClient(Msg.pt); Label1.Caption := IntToStr(P.x)+','+IntToStr(P.Y); end; end;
Итог: мы рассмотрели Компонент Delphi ApplicationEvents (события приложения) и его применение в приложении.