Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Иллюстрированный самоучитель по Delphi 6 / Часть III. Компоненты и программы / Использование компонентов общего назначения / Компоненты страницы Additional /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


TApplicationEvents - обработчик сообщений Windows - Программирование от RIN.RU
TApplicationEvents - обработчик сообщений Windows

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


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


Следующая простая программа познакомит вас с примером использования компонента. В ней фильтруется ввод программы в компонент 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 будет блокирован. В нашей простой программе есть единственный компонент, способный получать фокус ввода, поэтому проверка Editi. Focused в условном операторе является излишней. Я ввел ее только для того, чтобы продемонстрировать, как программа может определить получателя клавиатурного ввода.


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


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






Методы компонента:
procedure Activate; Делает компонент первым получателем сообщения
procedure CancelDispatch;Запрещает получение текущего сообщения остальным компонентам



События:
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: TActionEvent;
Это событие возникает тогда, когда пользователь активизирует управляющий элемент, приписанный определенному действию, в котором не определен обработчик OnUpdate
property OnActivate: TNotifyEvent;Возникает при активизации приложения
property OnDeactivate: TNotifyEvent;Возникает при детивизации приложения
type TExceptionEvent = procedure (Sender: TObject; E: Exception)of object;
property OnException: TExceptionEvent;
Возникает перед умалчиваемой обработкой исключения, для которого нет соответствующего программного обработчика.
type THelpEvent = function (Command: Word; Data: Longint;var CallHelp: Boolean): Boolean of object
property OnHelp: THelpEvent;
Возникает перед вызовом встроенной справочной службы. Параметру CallHelp следует придать значение True, если программа должна после завершения обработчика вызвать справочную службу
property OnHint: TNotifyEvent;Возникает перед выдачей оперативной справки для компонента, свойство Hint которого не пустая строка
type TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;Возникает, когда программа переходит, в состояние ожидания. Если в Done установлено значение False, после выполнения
property Orrldle: TIdleEvent;других работ Windows вновь вызывает приостановленную программу, в противно случае вызов программы происходит только при поступлении в ее адрес очередного сообщения
type TMessageEvent = procedure (var Msg: TMsg; var Handled:
Boolean) of object;
property OnMessage: TMessageEvent;
Возникает при поступлении любого сообщения от Windows. Msg - сообщение (его тип описан в п. 16.6.3), 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, если нужно отобразить справку (остальные параметры к этому времени могут быть изменены)



 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь