Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как сделать события типа: OnChildFormCreate и OnChildFormDestroy? [D7, WinXP]


kivadim ©   (2006-12-07 17:21:00) 

если у главной формы программы FormStyle := fsMDIForm, то можно ли для этой формы создать событие при котором оно происходило когда создаются или уничтожаются дочерние формы?
мне нужно чтоб главная форма реагировала и на дочерние формы не моего производства, например на окна отчетов FastReport, когда они отображаются в режиме MDIChild

с сообщениями почти не имел дело. попробовал сдетать так но не помогло... что не правильно делаю?

type
 TfMain = class(TForm)
 protected
  ...
 private
  ...
 public
    procedure MDICreate(var msg: TWMMDICREATE); message WM_MDICREATE;
    procedure MDIDestroy(var msg: TWMMDIDESTROY); message WM_MDIDESTROY;
 end;
....
procedure TfMain.MDICreate(var msg: TWMMDICREATE);
begin
MessageBox(Handle,'WM_MDICREATE','',MB_OK);
end;

procedure TfMain.MDIDestroy(var msg: TWMMDIDESTROY);
begin
MessageBox(Handle,'WM_MDIDESTROY','',MB_OK);
end;


kivadim   (2006-12-08 10:27:00) [1]

почитал что можно перехватывать эти сообщения можно...

Родительская MDI-форма создаёт специфическое окно класса MDICLIENT (дескриптор этого окна хранится в свойстве ClientHandle). И WM_MDICreate посылается именно этому клиентскому окну, а не самой форме. Перехватить это сообщение можно, например, через Application.OnMessage - так перехватываются всё сообщения, кроме WM_Quit.

никто не подскажет как именно это реализовать, а то я не догоняю?


Игорь Шевченко   (2006-12-07 17:42:00) [2]

Сообщения надо обрабатывать не у формы, а у окна, handle которого в TForm.ClientHandle


Наверх

Титульная страница Поиск, карта сайта Написать письмо