Форум: "Основная";
Текущий архив: 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.036 c