Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
4-1139436066
AndreyNew
2006-02-09 01:01
2006.04.30
metafile на win API


1-1143183057
Iton
2006-03-24 09:50
2006.04.30
Текст в HTML


15-1144385959
Ega23
2006-04-07 08:59
2006.04.30
С Днём рождения! 7 апреля


2-1145097713
Antip
2006-04-15 14:41
2006.04.30
Как из способов будет правильным и быстрым?


2-1144849467
que
2006-04-12 17:44
2006.04.30
GetMem&Buffer of data





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский