Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-1095240506
Marina
2004-09-15 13:28
2004.10.10
Проблемы по DBF


1-1096300908
shrek
2004-09-27 20:01
2004.10.10
Помогите с массивом


9-1086861113
Andr
2004-06-10 13:51
2004.10.10
Про нормали в OpenGL


14-1095088509
Jus
2004-09-13 19:15
2004.10.10
Есть ли среди вас люди которые хотят сделать какую нибудь игру..


1-1095946842
jonik
2004-09-23 17:40
2004.10.10
Компонент TdxMemData необходимо установить фильтр





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