Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Свойства self-made компонента - ничего не понимаю!


olookin ©   (2005-02-22 21:53:00) 

Почему настройки self-made компонента, сделанные в дизайн-тайме, сбрасываются до дефолтных при запуске программы и как поправить эту ситуацию?

Заранее спасибо...


Чапаев   (2005-02-23 11:42:00) [1]

Думаю, автору следует ознакомиться с методом Loaded().


Набережных С.   (2005-02-23 08:57:00) [2]


> olookin ©   (22.02.05 22:49) [3]

Все равно не понятно. Есть объект-контейнер, у него внутренний объет TStringList. Создается внешний объект-наследник от TStringList. Какая связь между внутренним и внешним объектом? Как я понимаю, это разные экземпляры. И что за метод такой Create, который у всех нормальных объектов является конструктором? Т.е. непонятна фраза
>  динамически создается экземпляр-наследник от этого свойства,
> вызывается его метод Create


Мож, лучше код покажешь?

> Отмечу также, что после запуска программы исходное свойство
> базового компонента заменяется на созданного динамически
> наследника.

Может быть, нужно Assign делать, а не экземпляр объекта менять?


olookin   (2005-02-22 22:49:00) [3]

Новый вопрос.

Есть метод Create у некоторого свойства (т.е. суть объекта, например property Obj: TMyObject ....) базового компонента. В этом методе происходит, например, сначала обнуление некоторого подствойства TMyObject, а затем его назначение (в моем случае это статический массив строк). Есть наследник от этого объекта-свойства, создающийся динамически в сторонней программе, использующей компонент. Но раз он создается динамически, то он снова вызывает метод Create соотв. свойства-объекта базового компонента, и снова обнуляет и назначает статический массив, теряя при этом все то, что сделано в дизайн-тайме над этим самым подсвойством базового комопнента. Как запретить ему это делать?

Вероятно, я не очень доходчиво объяснил. Если так, то поясню. У компонента есть свойство List: TStringList. Содержимое оного можно менять, но при помещении компонента из палитры на форму в List: TStringList заносится содержимое по умолчанию, например строка 'default'. В дизайн-тайме можно добавить/удалить содержимое строк в List. Но при исполнении программы динамически создается экземпляр-наследник от этого свойства, вызывается его метод Create и содержимое List восстанавливается до default-ного. Чего, разумеется, не хочется, а хочется, чтобы в наследника передался List, сформированный в дизайн-тайме. Как же это сделать?

Отмечу также, что после запуска программы исходное свойство базового компонента заменяется на созданного динамически наследника.

Заранее спасибо.


olookin   (2005-02-22 22:13:00) [4]

Боже какой я тормоз. Все прекрасно функционирует. Просто в данной программе я настройки компонента при запуске делал из ini-файла.

Вопрос снят.


olookin   (2005-02-22 22:00:00) [5]

Так, кажется можно обойтись условием

if csDesigning in ComponentState then ...

Однако при запуске программы возникает исключение Invalid property path. Что я делаю не так?


Наверх

Титульная страница Поиск, карта сайта Написать письмо