Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Реализация событий AfterShow и AfterCreate

Delphi , Компоненты и Классы , Свойства и События

Реализация событий AfterShow и AfterCreate

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Question/Abstract: 

  I often want to automatically run some code directly after the form has 
  shown. If this is done in the OnShow event it gets done while the form is 
  still invisible (not good if the code takes a little while to run.) 
  Currently, I use a Timer with its interval property set to about 200 and 
  enabled set to false. In the OnShow event I set Timer.Enabled := True and 
  the first statement in the OnTimer event is Timer.Enabled := False so the 
  event only runs once. 

  Answer: 

  Post a custom message to yourself. 
  The following code shows how to trigger a AfterShow, AfterCreate event. 

}

 const
   WM_AFTER_SHOW = WM_USER + 300; // custom message 
  WM_AFTER_CREATE = WM_USER + 301; // custom message 
type
   TForm1 = class(TForm)
     // OnShow event 
    procedure FormShow(Sender: TObject);
     // OnCreate event 
    procedure FormCreate(Sender: TObject);
   private
     procedure WmAfterShow(var Msg: TMessage); message WM_AFTER_SHOW;
     procedure WmAfterCreate(var Msg: TMessage); message WM_AFTER_CREATE;
   public
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}

 procedure TForm1.WmAfterShow(var Msg: TMessage);
 begin
   ShowMessage('WM_AFTER_SHOW received!');
 end;

 procedure TForm1.WmAfterCreate(var Msg: TMessage);
 begin
   ShowMessage('WM_AFTER_CREATE received!');
 end;

 procedure TForm1.FormShow(Sender: TObject);
 begin
   // Post the custom message WM_AFTER_SHOW to our form 
  PostMessage(Self.Handle, WM_AFTER_SHOW, 0, 0);
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   // Post the custom message WM_AFTER_CREATE to our form 
  PostMessage(Self.Handle, WM_AFTER_CREATE, 0, 0);
 end;

Код демонстрирует, как реализовать пользовательские события AfterShow и AfterCreate в приложении на Delphi.

Основная идея заключается в отправке пользовательских сообщений (WM_AFTER_SHOW и WM_AFTER_CREATE) из обработчиков событий OnShow и OnCreate формы соответственно. Эти пользовательские сообщения затем обрабатываются приватными методами (WmAfterShow и WmAfterCreate), которые выполняют некоторые действия после отображения или создания формы.

Разбивка кода:

  1. Константы WM_AFTER_SHOW и WM_AFTER_CREATE определяют уникальные идентификаторы сообщений, которые будут использоваться для отправки сообщений в форму.
  2. Класс TForm1 определен, который наследуется от TForm. Он включает в себя приватные методы для обработки пользовательских сообщений и общественные методы для отправки этих сообщений.
  3. В обработчике события FormShow, пользовательское сообщение WM_AFTER_SHOW отправляется в форму с помощью PostMessage.
  4. Аналогично, в обработчике события FormCreate, пользовательское сообщение WM_AFTER_CREATE отправляется в форму с помощью PostMessage.
  5. Приватные методы WmAfterShow и WmAfterCreate обрабатывают пользовательские сообщения, выполняя некоторые действия (в этом случае, отображается окно сообщений).
  6. Используя этот подход можно декуплировать код, который нужно выполнить после отображения или создания формы, от событий самих по себе. Это может быть полезно, если код занимает значительное количество времени для выполнения или если вам нужно выполнить несколько задач после отображения формы.

Альтернативные решения:

  1. Использовать встроенные события AfterShow и AfterCreate, предоставляемые классом TForm.
  2. Использовать отдельный поток или таймер: Если код, который нужно выполнить после отображения или создания формы, является ресурсоемким или занимает много времени для выполнения, может быть полезно выполнить его в отдельном потоке или использовать таймер для задержки его выполнения.

В целом, этот код предоставляет гибкий и повторяемый способ реализации пользовательских событий в приложениях на Delphi.

Реализация событий AfterShow и AfterCreate в приложении на Delphi достигается за счет отправки пользовательских сообщений через метод PostMessage.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Свойства и События ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 14:20:18/0.0057408809661865/1