Главная страница
    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.46 MB
Время: 0.045 c
1-1101816916
jiran
2004-11-30 15:15
2004.12.12
Есть описание фукции на С++, как правильно описать на Delphi ?


1-1101449056
Игорь нтк
2004-11-26 09:04
2004.12.12
десятичный разряд


3-1100494317
Explorer
2004-11-15 07:51
2004.12.12
Выбор c одним DataSet


4-1098867565
GuestTM
2004-10-27 12:59
2004.12.12
Как отловить ACCESS VIOLATION...


1-1101545019
alo
2004-11-27 11:43
2004.12.12
можно получить элемент set а по строке?





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