Главная страница
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.068 c
1-1101538857
Sanya
2004-11-27 10:00
2004.12.12
Borland Delphi


14-1099531403
ИМХО
2004-11-04 04:23
2004.12.12
Королевство ночи...


1-1101354943
Кто---то
2004-11-25 06:55
2004.12.12
Как проще обменять шрифты двух комбобоксов ?


3-1100089389
Term
2004-11-10 15:23
2004.12.12
QReport как сделать в отчёте промежуточные итоги


3-1100166567
Автор333
2004-11-11 12:49
2004.12.12
Сложение столбца!