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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.58 MB
Время: 0.087 c
1-1101672773
Донской
2004-11-28 23:12
2004.12.12
Код raise.exception.create не генерит ошибки!!


1-1101861730
Дмитрий В. Белькевич
2004-12-01 03:42
2004.12.12
компоненту хитрую ищу


4-1099137379
Scorpion
2004-10-30 15:56
2004.12.12
Fiber


6-1095392327
сигишник
2004-09-17 07:38
2004.12.12
CGI + IIS


14-1100796664
matt
2004-11-18 19:51
2004.12.12
InterBase 6





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