Вниз
Скачать: CL | DM;

Посылка сообщений в MDI приложении   Найти похожие ветки 

 
Oleksiy   (2004-05-19 17:48) [0]

Подскажите как правильно в mdi приложении послать сообщение всем child-окнам, и как правильно это сообщение обработать в child-окне


 
Digitman ©   (2004-05-19 18:10) [1]

нафига это делать ? если объекты доч.форм всегда доступны в контексте объекта родформы ?


 
Oleksiy   (2004-05-19 18:30) [2]

потому как есть окно настроек, после закрытия которого, необходимо послать всем открытым child-окнам различные сообщения, кому то грид перерисовать, кому то данные обновить


 
B00mer   (2004-05-19 19:10) [3]

Перебери в цикле все окна (Application.MainForm.MDIChildren[i])
ну и посылай каждому сообщение.
Сообщение можешь зарегистрировать свое (RegisterWindowMessage) а в своих окнах его обрабатывать.


 
Oleksiy   (2004-05-19 19:23) [4]

а можно поподробнее, как зарегистрировать и обрабатывать правильно


 
NAlexey ©   (2004-05-20 08:46) [5]

>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;
Как перебрать дочерние формы тебе уже сказали...


 
Digitman ©   (2004-05-20 08:57) [6]


> 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;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
14-1086801955
Феликс
2004-06-09 21:25
2004.06.27
Если сократить всё человечество до деревни в 100 жителей,


1-1086763480
pasha_golub
2004-06-09 10:44
2004.06.27
Производительность (оптимизация) функции


1-1087125792
TechnoDreamer
2004-06-13 15:23
2004.06.27
Edit для времени


4-1084967268
Elysium
2004-05-19 15:47
2004.06.27
Окно всегда наверху


3-1085836984
Слэш
2004-05-29 17:23
2004.06.27
Расширить поле CHAR




   Наверх