Форум: "Компоненты";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Вниз
Свойства self-made компонента - ничего не понимаю! Найти похожие ветки
← →
olookin © (2005-02-22 21:53) [0]Почему настройки self-made компонента, сделанные в дизайн-тайме, сбрасываются до дефолтных при запуске программы и как поправить эту ситуацию?
Заранее спасибо...
← →
olookin © (2005-02-22 22:00) [1]Так, кажется можно обойтись условием
if csDesigning in ComponentState then ...
Однако при запуске программы возникает исключение Invalid property path. Что я делаю не так?
← →
olookin © (2005-02-22 22:13) [2]Боже какой я тормоз. Все прекрасно функционирует. Просто в данной программе я настройки компонента при запуске делал из ini-файла.
Вопрос снят.
← →
olookin © (2005-02-22 22:49) [3]Новый вопрос.
Есть метод Create у некоторого свойства (т.е. суть объекта, например property Obj: TMyObject ....) базового компонента. В этом методе происходит, например, сначала обнуление некоторого подствойства TMyObject, а затем его назначение (в моем случае это статический массив строк). Есть наследник от этого объекта-свойства, создающийся динамически в сторонней программе, использующей компонент. Но раз он создается динамически, то он снова вызывает метод Create соотв. свойства-объекта базового компонента, и снова обнуляет и назначает статический массив, теряя при этом все то, что сделано в дизайн-тайме над этим самым подсвойством базового комопнента. Как запретить ему это делать?
Вероятно, я не очень доходчиво объяснил. Если так, то поясню. У компонента есть свойство List: TStringList. Содержимое оного можно менять, но при помещении компонента из палитры на форму в List: TStringList заносится содержимое по умолчанию, например строка "default". В дизайн-тайме можно добавить/удалить содержимое строк в List. Но при исполнении программы динамически создается экземпляр-наследник от этого свойства, вызывается его метод Create и содержимое List восстанавливается до default-ного. Чего, разумеется, не хочется, а хочется, чтобы в наследника передался List, сформированный в дизайн-тайме. Как же это сделать?
Отмечу также, что после запуска программы исходное свойство базового компонента заменяется на созданного динамически наследника.
Заранее спасибо.
← →
Набережных С. © (2005-02-23 08:57) [4]
> olookin © (22.02.05 22:49) [3]
Все равно не понятно. Есть объект-контейнер, у него внутренний объет TStringList. Создается внешний объект-наследник от TStringList. Какая связь между внутренним и внешним объектом? Как я понимаю, это разные экземпляры. И что за метод такой Create, который у всех нормальных объектов является конструктором? Т.е. непонятна фраза
> динамически создается экземпляр-наследник от этого свойства,
> вызывается его метод Create
Мож, лучше код покажешь?
> Отмечу также, что после запуска программы исходное свойство
> базового компонента заменяется на созданного динамически
> наследника.
Может быть, нужно Assign делать, а не экземпляр объекта менять?
← →
Чапаев © (2005-02-23 11:42) [5]Думаю, автору следует ознакомиться с методом Loaded().
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c