Главная страница
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.027 c
14-1100870142
ПЛОВ
2004-11-19 16:15
2004.12.12
Где достать голосовой профиль для украинского языка?


4-1099235634
Владимир Березин
2004-10-31 18:13
2004.12.12
Вопрос о стилях окон


3-1100240523
sergeii
2004-11-12 09:22
2004.12.12
Export v Excel


10-1071058945
ShimA
2003-12-10 15:22
2004.12.12
BOA.Deactivate


10-1057851689
sam08
2003-07-10 19:41
2004.12.12
не получается элементарная клиент-серв. с  использ. CORBA