Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Как отправить сообщение всем активным формам, одного класса?   Найти похожие ветки 

 
Erik1 ©   (2004-11-30 15:31) [0]

Как отправить сообщение всем активным формам, одного класса? Вобщето мне надо оповестить дочернею форму о закрытии родителя. Я передаю дочерней форме Owner родителя, сейчас думаю как лучше оповестить. Пока перебираю в цикле, возмоно есть лучший метод.


 
Digitman ©   (2004-11-30 15:39) [1]


> мне надо оповестить дочернею форму о закрытии родителя


что-то мне кажется, что ты путаешь понятия Владелец и Родитель


 
TUser ©   (2004-11-30 15:49) [2]


> Как отправить сообщение всем активным формам, одного класса?

FindWindowEx + рекурсия даст тебе список хендлов этих форм


 
Digitman ©   (2004-11-30 15:54) [3]

форма - это, прежде всего, окно.

если это окно top-level, то вызов Send/Postmessage c параметром hWnd = HWND_BROADCAST позволяет известить все такие окна безо всякого цикла

остается только в форме нужного класса "поймать" сообщение и обработать его нужным образом


 
Erik1 ©   (2004-11-30 16:01) [4]

К сожалению это MDI ащкьф и необязательно top-level. Разумеется я могу сделать
 for I := 0 to Screen.CustomFormCount - 1 do
   if (Screen.CustomForms[i] is TBaseEditForm) then
     with TBaseEditForm(Screen.CustomForms[i]) do
     begin
       if ListForm = Self then
         ListForm := nil;
Или тоже самое с MDIChildren[i], а как лучше всего их оповещать.
to Digitman
Ничего я нипутаю, просто мир у нас такой нестабильный. И переопределять коистркутор в который раз нехочится, поэтому и пользуюсь параметром AOwner


 
TUser ©   (2004-11-30 16:06) [5]


> Digitman ©   (30.11.04 15:54) [3]

ИМХО, не надо пользоваться бродкастом. Мало ли кто его еще поймает. Если надо именно всем окнам данного класса - тогда [2]


 
Digitman ©   (2004-11-30 16:21) [6]


> ИМХО, не надо пользоваться бродкастом. Мало ли кто его еще
> поймает


никто его не поймает, если грамотно пользовать RegisterWindowMessage()


> Erik1 ©   (30.11.04 16:01) [4]


если уж так претит цикл, попробуй подойти к задаче с иной стороны - использовать сист.объекты синхронизации, например, events

каждая форма данного класса при создании стартует, а при уничтожении терминирует доп.трэд .. этот трэд ждет срабатывание объекта синхронизации (перевод объекта в сигн.состояние осуществляет род.форма) и при обнаружении факта срабатывания вызывает нужные методы формы .. хэндл объекта передается доч.форме при вызове ее конструктора



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

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

Наверх




Память: 0.48 MB
Время: 0.063 c
3-1100225895
peGaZ
2004-11-12 05:18
2004.12.12
БД в текстовый файл


6-1096703357
Pat
2004-10-02 11:49
2004.12.12
FTP протокол. Канал данных


14-1101236092
Undert
2004-11-23 21:54
2004.12.12
Странный вопрос про буфера ;)


14-1101183994
VMcL
2004-11-23 07:26
2004.12.12
Tech. support


14-1101045870
Piter
2004-11-21 17:04
2004.12.12
Зачем делать Set8087CW после вызова WinApi функций?