Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Проблема при создании компонента.   Найти похожие ветки 

 
Awod   (2004-02-02 13:18) [0]

У меня есть написанный компонент на основе TCustomControl. В нём есть published свойство Images : TImageList;
Создаю ещё один компонент. В его состав входит первый. Как сделать так чтобы свойства первого компонента можно было редактировать во втором компоненте (как например Font во многих компонентах) и при этом изменения сохранялись?


 
Digitman ©   (2004-02-02 13:22) [1]


> В его состав входит первый


здесь - подробней ...
что значит "в состав" ?


 
Awod   (2004-02-02 13:34) [2]

TBase1 = class(TCustomControl)
private
FImage : TImageList;
published
property Image : TImageList read Fimage write FImage;
end;

TBase2 = class(TCustomControl)
private
FBase1 : TBase1;
end;

Ессесвенно всё эти классы создаются в конструкторе соответствующих объектов


 
Digitman ©   (2004-02-02 13:44) [3]

все это в design-time требуется ? с использованием инспектора объектов ?

а, собственно, design-time-редактор компонента TBase1 ты уже написал ?


 
Awod   (2004-02-02 13:45) [4]

Да в design-time.
Нет. А для чего его писать в данной ситауции?
ЗЫ: я их ни разу не писал, так что мона поподробней? :)


 
Digitman ©   (2004-02-02 13:53) [5]


> А для чего его писать в данной ситауции?


как это для чего ? ты же сам поставил такую задачу !?


> я их ни разу не писал, так что мона поподробней


Это - к Юрию Зотову


 
Семен Сорокин ©   (2004-02-02 14:02) [6]

2Awod
если я правильно понял, то надо сделать возможность доступа к ImageList, так что тебе мешает сделать published-свойство:

TBase2 = class(TCustomControl)
private
FBase1 : TBase1;
procedure SetBase1(Value: TBase1);
published
property Base1: TBase1 read FBase1 write SetBase1;
end;


 
Awod   (2004-02-02 14:02) [7]

Если выложить компонент TBase1 на форму, то свойства сохраняются, а если выложить второй и обявить
published
property Base1 : TBase1 read Base1;

то в редакторе свойств компонента можно выставить свойство Image для Base1, но оно не сохраняется в dfm. То есть для того чтобы оно сохранялось требуется написать редактор свойств для компонента TBase1?

PS: С редактором свойств я разобираюсь.


 
Awod   (2004-02-02 14:06) [8]

2"Семен Сорокин"
Если сделать так как ты говоришь, то я смогу выбрать компонент на форме который требуется подключить, но не выставить и сохранить в нём свойства.


 
yo   (2004-02-02 14:22) [9]

Попробуй поставить у дочернего компонента флаг csSubcomponent


 
Awod   (2004-02-02 14:40) [10]

Получилось!!!
Спб :)


 
Юрий Зотов ©   (2004-02-02 14:48) [11]

> Awod

И еще - такое объявление свойства
property Image : TImageList read Fimage write FImage;
в сочетании с "всё эти классы создаются в конструкторе соответствующих объектов" приведет к утечке памяти при присваивании.

Если же при таком объявлении свойства сделать Image не внутренним компонентом, а ссылкой на внешний компонент, то при его удалении будем получать Access Violation.

Вывод - в любом случае нужен метод SetImage. В первом варианте потребуется еще Assign, а во втором - Notification.


 
Awod   (2004-02-02 15:00) [12]

2 Юрий Зотов.
Я не венрно написал. Объект первого класса удаляется в деструкторе второго класса. В первом ImageList не удаляется. Notification используется.


 
Юрий Зотов ©   (2004-02-02 15:51) [13]

> Awod (02.02.04 15:00) [12]

Значит, должно быть так:
property Image : TImageList read Fimage write SetImage;


 
Awod   (2004-02-02 18:46) [14]

>Юрий Зотов © (02.02.04 15:51) [13]
Работает также
property Image : TImageList read Fimage;
При этом все свойства можно редактировать


 
Юрий Зотов ©   (2004-02-02 18:50) [15]

> Awod (02.02.04 18:46) [14]

Что-то странное Вы говорите. Image все же в КАКОЙ секции находится? И в TBase1 он создается, или нет?



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
6-38983
Aleksey
2003-12-10 09:14
2004.02.13
Управление WinGate-ом


3-38693
onix
2004-01-21 14:48
2004.02.13
Исполнение процедуры в FB


3-38749
Kadr
2004-01-21 12:00
2004.02.13
Проблема с подключением


7-39114
Zaratustra
2003-11-27 13:20
2004.02.13
Хук клавиатуры


3-38722
Крутыш
2004-01-25 12:40
2004.02.13
Счётчик в Access обнулить