![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опубликованные события у TPesistent
jack128 © (2005-08-29 00:48:00)День добрый.
Как известно, если у некого компонента TTestComponent есть свойство типа TSomeSubPropComponent(внутреньнее, созданное с флагом csSubComponent), то при редактировании свойств TTestComponent в Инспекторе Объектов на закладке Events мы увидем все опубликованные свойства TSomeSubPropComponent. С другой стороны, если наше свойство будет иметь тип TSomePropPersistent(то есть наследник TPersistent, но не компонент), то его события в ИО отображаться не будут. У кого нить есть соображения, почему такая дискриминация???
GuAV (2005-08-29 22:31:00) [1]TComboExItems (коллекция итемов TComboBoxEx) имеет событие OnCompare.
Яся (2005-08-29 18:30:00) [2]Не было бы никаких проблем - OnChange не published
jack128 (2005-08-29 18:27:00) [3]Юрий Зотов © (29.08.05 17:11) [5]
Там именно такой редактор и именно для НЕкомпонента.
Так именно при просмотре примера и возник вопрос ;)
Юрий Зотов © (29.08.05 17:11) [5]
а шут его знает, сам удивляюсь. Забыл, наверное...
Ну понятно. Руки не дошли. Я просто думал, может в подобном ограничении есть какой нить высокий смысл.. Ну нет, так нет...
Наиль © (29.08.05 17:56) [6]
TFont, свойство onChange
Это пабликсвойство, так что я и сейчас могу его подменить и возникнет масса проблем ;) И в любом случае оно бы не отображалось в ИО
Наиль (2005-08-29 17:56:00) [4]>[5]
Можно узнать, о каком примере речь?
>[4]
Возможно я не полностью вник в суть редакторов свойств.
Есть версия, что во всём виноват TFont, свойство onChange которого уже во-всю используется другими компонентами. И если бы борланд пошёл вашим путём, то с этим свойством возникло бы масса проблем.
Юрий Зотов (2005-08-29 17:11:00) [5]Жень, посмотри пример, о котором мы говорили. Там именно такой редактор и именно для НЕкомпонента.
А почему этого не сделал дядька Борланд... а шут его знает, сам удивляюсь. Забыл, наверное...
:о)
Если есть желание, напиши такой редактор сам, в порядке самосовершенстования. Пример у тебя есть.
jack128 (2005-08-29 16:48:00) [6]Наиль © (29.08.05 12:34) [3]
У каждого свои предназначения и не зачем требовать от них чего-то большего.
А чего такого "большего" я прошу??
Наиль © (29.08.05 12:34) [3]
А вот вслучае с методами (событиями) TPersistent цепочка может быть нарушена, т.к. TPersistent не регистрируется.
Каким образом? Событие ничем от других свойств не отличаются, и если в ИО можно редактировать свойства типа TSomePersistent.SomeIntegerProp, то точно так же можно и редактировать свойства процедурного типа.
Наиль © (29.08.05 12:34) [3]
По крайней мере, именно так я увидел логику работы TMethodProperty.
он тут не причем.
Наиль (2005-08-29 12:34:00) [7]TPersistent - обладает возможностью копирования информации из объекта в объект. А компонент - возможностью взаимодействия с дизайнером.
У каждого свои предназначения и не зачем требовать от них чего-то большего.
Проанализировав, объект TMethodProperty, пришёл к выводу, что всё дело в связи Дизайнер -> Метод. Так как компоненты регистрируются, то всегда есть прямой путь Дизайнер -> Компонент -> Метод.
Что касается TPersistent-свойств, то к ним тоже имеется прямой путь через родительский компонент.
А вот вслучае с методами (событиями) TPersistent цепочка может быть нарушена, т.к. TPersistent не регистрируется.
По крайней мере, именно так я увидел логику работы TMethodProperty.
jack128 (2005-08-29 11:05:00) [8]в том, что в ИО не отображаются его события. А у компонентных свойств отображаются.
Джо (2005-08-29 01:21:00) [9]
> jack128 © (29.08.05 00:48)
Так в чем кроется дискриминация? В том, чтоTPersistentвообще не имеет свойстваComponentStyleи, соответственно, методаSetSubComponent? Или в чем-то другом?