Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

Посылка сообщений в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.031 c
1-1086742079
Алекс А
2004-06-09 04:47
2004.06.27
Помогите переделать if в формулу? Что-то торможу я


1-1087225645
Ivolg
2004-06-14 19:07
2004.06.27
Имя файла


1-1087293114
Aleksej
2004-06-15 13:51
2004.06.27
Исключения в FormActivate, Create и т. д.


14-1086803093
Vasya.ru
2004-06-09 21:44
2004.06.27
Баттон в виде рычага


3-1086077795
Kirill
2004-06-01 12:16
2004.06.27
Несколько полей для связи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский