Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Внизкак отправить сообщение в дочерние окна? Найти похожие ветки
← →
diday (2004-08-31 14:40) [0]С сообщениями начал работать я. Отправляю через SendMessage с указанием формы некоторой. Форма сообщения ловит, а дочерние формы (фреймы) не хотят. как отправить сообщения ко всем дочерним формам?
← →
Digitman © (2004-08-31 14:50) [1]
> Отправляю через SendMessage с указанием формы некоторой
т.е. параметром ты передаешь хэндл окна формы ? ну так а что же ты хочешь ? кому ты послал, тот и получил !
укажи хэндл окна конкретного фрейма, тогда фрейм будет получать
← →
diday (2004-08-31 14:53) [2]Ну а если дочерних форм много и все вложенные тогда что нужно все перебирать, а нельз ярассылать сообщение всему приложению?
← →
Игорь Шевченко © (2004-08-31 15:11) [3]
> а нельз ярассылать сообщение всему приложению?
Нет.
← →
diday (2004-08-31 15:21) [4]хорошо, есть такой вариант:
- создать в родительском окне список объектов.
- каждый фрейм закатывает себя при создании в этот список.
- при отправке сообщения перебирать список, и отправлять сообщение соответствующему объекту (фрейму).
такой вариант пойдет, или это через назад?
← →
Игорь Шевченко © (2004-08-31 15:25) [5]
> - при отправке сообщения перебирать список, и отправлять
> сообщение соответствующему объекту (фрейму).
> такой вариант пойдет, или это через назад?
Хороший вариант. А какие сообщения, кстати, должны отправляться ?
← →
Digitman © (2004-08-31 15:47) [6]
> такой вариант пойдет, или это через назад?
он , конечно, пойдет, но через "назад"
ибо такой список уже существует и создавать его еще раз нет никакой необходимости
есть спиок Screen.Forms, хранящий инф-цию обо всех созданных в приложении объектах-наследникакх класса TForm
каждая форма и каждый контрол на ней - это компонент, а класс TComponent имеет метод св-во-список Components[], пройдясь по которому в цикле можно выбрать те компоненты, которые есть наследники класса TFrame, и получить хэндлы их окон
если фрейм вложен не непосредственно в форму, а в другой компонент, например, панель, то искать фрейм следует уже в списке Панель.Components[]
← →
Игорь Шевченко © (2004-08-31 15:51) [7]
> он , конечно, пойдет, но через "назад"
? Эт почему ? Оно, конечно перебирать Screen.Forms а затем компоненты на них будет несколько дольше, чем сделать список только тех компонентов, которым нужно что-то послать.
← →
diday (2004-08-31 16:12) [8]А насколько долше?
Тут просто трабла возникла при создании списка, он создается после того как скриэтилась форма (на OnCreate). То бишь при попытке добавлять фрейма в список объектов на этапе создания оного фрейма на форме, оказывается что списка ешшо не существует.
← →
Игорь Шевченко © (2004-08-31 16:13) [9]
> Тут просто трабла возникла при создании списка, он создается
> после того как скриэтилась форма (на OnCreate).
Создай список в конструкторе формы до вызова inherited и будет тебе счастье
← →
diday (2004-08-31 16:21) [10]Ура, я почти счастлив :) всем спасибо я понял "концепцию програмирования DELPHI" :)
← →
Digitman © (2004-08-31 16:24) [11]
> diday (31.08.04 16:12) [8]
> А насколько долше?
настолько насколько много компонентов ты разместил на формах и дочерних их компонентах
одход с перебором существующих списков хорош при относительно небольшом суммарном кол-ве компонентов создаваемых в том числе в ран-тайм
если же компонентов весьма много и создаются они искл-но по дизайн-тайм , то разумеется лучше вести свои списки
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c