Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
1-38811
Minotavr
2004-02-04 22:13
2004.02.13
Ctrl+Enter


3-38725
Oleg_em
2004-01-22 07:09
2004.02.13
Ошибка при подключении к базе IB


6-38978
senya
2003-12-12 14:34
2004.02.13
SMTP Аутентификация


1-38851
Натуся
2004-02-01 23:23
2004.02.13
Плюс один месяц


3-38729
Vladimir Bolotin
2004-01-21 21:15
2004.02.13
Как скрыть от пользователя обращение к данным?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский