Форум: "Компоненты";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
ВнизВложеное свойство типа компонент Найти похожие ветки
← →
Priest © (2005-10-28 10:49) [0]Хочу сделать коллекцию, элементы которой содержат два свойство. Первое содержит класс компонента, а второе экземпляр установленного класса. При установки класса объяекта, я создаю сам объект. ПРоблема возникает в том, что из dfm строка имени класса читается позже чем сам объект...ПОэтому возникает исключение...Как правильно это сделать?
← →
Юрий Зотов © (2005-10-28 13:37) [1]Перенести строку выше. Свойства сохраняются (и читаются) в порядке их объявления.
← →
Priest © (2005-10-28 14:49) [2]Спасибо.Сделал так
TVisualizatorObject = class(TPersistent)
private
FClassVisualizatorName: string;
FVisualizator: TBaseVisualizator;
procedure SetClassVisualizatorName(const Value: string);
procedure SetVisualizator(const Value: TBaseVisualizator);
public
constructor Create(aOwner: TComponent);
destructor Destroy; override;
procedure RefreshVizualizator;
published
property ClassVisualizatorName: string read FClassVisualizatorName write
SetClassVisualizatorName;
property Visualizator: TBaseVisualizator read FVisualizator write
SetVisualizator;
end;
И когда меняется свойство ClassVisualizatorName создаю объект Visualizator...
И сделал редактор свойства ClassVisualizatorName с допустимыми классами...
А нельзя ли сделать редактор Visualizator чтобы при этом редактировались значения в виде выпадающего списка? Я делал класс производный от TClassProperty. Но у меня TVisualizatorObject вложен в элемент коллекции и поэтому редактор свойтсва появляется, но он ReadOnly. А когда TVisualizatorObject является типом свойсва компонента, то всё работает..Как быть?
← →
Юрий Зотов © (2005-10-28 15:08) [3]Если для компонента работает, а для элемента коллекции - нет, то, видимо, редактор зарегистрирован только для компонента. Надо зарегистрировать его же для элемента коллекции, тогда должно заработать.
← →
Priest © (2005-10-28 15:19) [4]Так я зарегистрировал...Я попробовал для свойства компонента, так работает. А когда регистрирую для свойств коллекции, то не работает. Появляется выпадающий список, я вижу все необходимые значения, но выбрать не могу, поле серое как при реад онли. Только что пробовал в DreamDesigner там всё работает как часы :(
Вот ещё вопрос.
Когда в инспекторе объектов я делаю
ClassVisualizatorName:="TMyClass1"
То у свойства Visualizator знак + появлеяется не сразу...Надо на него щёлкнуть 1 раз как бы для сворачивания, а второй раз объект появляется.
И я его открываю. Как сделать чтобы при смене ClassVisualizatorName сразу появлятся объект Visualizator.
И как сделать при присвоении ClassVisualizatorName:="" чтобы объект Visualizator закрывался, то инспектор объектов ошибку даёт
← →
Юрий Зотов © (2005-10-28 16:58) [5]> А когда регистрирую для свойств коллекции, то не работает
Надо регистрировать для ЭЛЕМЕНТА коллекции. Его же свойство.
> Появляется выпадающий список, я вижу все необходимые значения, но
> выбрать не могу, поле серое как при реад онли.
Код редактора - в студию.
> у свойства Visualizator знак + появлеяется не сразу...
Добавить paVolatileSubProperties и не забыть Designer.Modified.
> как сделать при присвоении ClassVisualizatorName:="" чтобы объект
> Visualizator закрывался,
Уничтожить его в методе записи свойства. Ссылку обнулить.
> то инспектор объектов ошибку даёт
Добавить paVolatileSubProperties и не забыть Designer.Modified.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.021 c