Вниз
Скачать: 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
1-1086773327
NameLess
2004-06-09 13:28
2004.06.27
Динамическая обработка


14-1086562766
GanibalLector
2004-06-07 02:59
2004.06.27
Всего лишь 7 критических ошибок...


1-1087166154
Mobias
2004-06-14 02:35
2004.06.27
как изменить


3-1085979974
angelcom
2004-05-31 09:06
2004.06.27
Програмно обновить статистику всех индексов


8-1081724616
Bonial
2004-04-12 03:03
2004.06.27
Проигрывание MIDI - ноты.




   Наверх