![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посылка сообщений в MDI приложении
Oleksiy © (2004-05-19 17:48:00)Подскажите как правильно в mdi приложении послать сообщение всем child-окнам, и как правильно это сообщение обработать в child-окне
Digitman (2004-05-20 08:57:00) [1]
> Oleksiy (19.05.04 18:30) [2]
а зачем сообщения-то ? зачем идти в соседнюю комнату через Америку ?
пусть каждая из твоих доч.форм является прямым или дальним наследником некоего класса TSomeBaseMDIChildClass и имеет один и тот же публичный метод SomePublicMethod(), вызов которого с теми или иными параметрами приводит к обновлению чего-то на этой форме
тогда
with Application.MainForm do
for i := 0 to MDIChildCount - 1 do
begin
TSomeBaseMDIChildClass(MDIChildren[i]).SomePublicMethod(.. SomeParameters);
Application.ProcessMessages; //если нужно
end;
NAlexey (2004-05-20 08:46:00) [2]>Oleksiy (19.05.04 19:23) [4]
Конечно тема на мой взгляд несовсем WinAPI. Но всеже. Регистрировать необязательно если сообщения рассылаются в рамках "своего" приложения. Достаточно так:
constи в дочерней форме ловишь:
CM_BROADCAST = WM_USER + 1;
...
begin
SendMessage(MDIChildFrm.Handle, CM_BROADCAST, 0 ,0);
...
procedure CmBroadCast(var Message: TMessage); message CM_BROADCAST;
Как перебрать дочерние формы тебе уже сказали...
Oleksiy (2004-05-19 19:23:00) [3]а можно поподробнее, как зарегистрировать и обрабатывать правильно
B00mer (2004-05-19 19:10:00) [4]Перебери в цикле все окна (Application.MainForm.MDIChildren[i])
ну и посылай каждому сообщение.
Сообщение можешь зарегистрировать свое (RegisterWindowMessage) а в своих окнах его обрабатывать.
Oleksiy (2004-05-19 18:30:00) [5]потому как есть окно настроек, после закрытия которого, необходимо послать всем открытым child-окнам различные сообщения, кому то грид перерисовать, кому то данные обновить
Digitman (2004-05-19 18:10:00) [6]нафига это делать ? если объекты доч.форм всегда доступны в контексте объекта родформы ?