Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: 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 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.033 c
14-1086891993
Knight
2004-06-10 22:26
2004.06.27
Гы... :)


1-1087140161
lena19
2004-06-13 19:22
2004.06.27
проблема с указателями или access violation по адресу xxxxxxxxxxx


14-1086625212
_студент
2004-06-07 20:20
2004.06.27
Экзамен по схемотеху. Билет № 13


1-1087284152
PenguinX
2004-06-15 11:22
2004.06.27
DLL и Device Context


3-1085925576
ИМХО
2004-05-30 17:59
2004.06.27
Работа с dbf через ADO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский