![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Два вопроса по разработке компонентов. [Delphi, Windows]
-=Mike=- © (2005-12-06 03:22:00)Пишу свой компонент. Возникло два вопроса:
1) Как отследить добавление нового контрола в список дочерних контролов?
property Children[ Idx: Integer ]: PControl
Т.е. мне нужно выполнить собственный код, когда у моего контрола появляется дочерний контрол.
2) Как обработать сообщение WM_NOTIFY, которое посылается родителю? Мой компонент, после установки определенных его свойств, посылает уведомление родителю (сообщение WM_NOTIFY), в обработчике которого необходимо установить параметры этого компонента. Как обработать это сообщение «изнутри» компонента???
ECM (2005-12-07 10:56:00) [1]
> в дизайн-мод когда кидаешь на мой компонент какой-нить контрол,
> то моя функция естессно не вызываетя....
А это действительно нужно (реальный вызов)? Я думаю достаточно будет сгенерировать вызов в исходном коде при помощи перекрытых методов SetupFirst(Last) в МСК... Хотя Вам конечно виднее...
> прицепить обработчик каким-нить образом к родителю
Вобщем это и имелось ввиду - как раз в функции которая добавляет потомка
и вызвать AttachProc... При этом её можно вызывать многократно - каждый раз при добавлении - обработчик будет назначен только один в этом можно убедится посмотрев на реализацию AttachProc
-=Mike=- (2005-12-07 04:19:00) [2]
> При помощи собственной функции...
Это понятно.. Примерно так пока и извернулся, но в дизайн-мод когда кидаешь на мой компонент какой-нить контрол, то моя функция естессно не вызываетя....
> Обратите внимание на "стандартный" для KOL механизм подключения
> обработчиков
Да, я в курсе. Но когда я подцепляю к компоненту этот обработчик, то он получит сообщения, направленные только ему. А мне нужно обработать сообщение, направленное родителю...
Хотя............ если прицепить обработчик каким-нить образом к родителю....
Надо будет порыть в этом направлени...
ECM (2005-12-06 12:26:00) [3]
> > ) Как отследить добавление нового контрола в список дочерних
>
> > контролов?
>
> При помощи собственной функции... это же Ваш компонент -
> что мешает?
З.Ы. Имелось ввиду добавлять дочерние контролы при помощи специально функции компонента
ECM (2005-12-06 12:24:00) [4]
> ) Как отследить добавление нового контрола в список дочерних
> контролов?
При помощи собственной функции... это же Ваш компонент - что мешает?
> 2) Как обработать сообщение WM_NOTIFY, которое посылается
> родителю?
Обратите внимание на "стандартный" для KOL механизм подключения обработчиков - см. в KOL.PAS функции AttachProc(Ex) и WndProcXXX
Как вариант можно переопределить OnMessage (это хуже - т.к. пользователь компонента может захотеть его использовать)