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

Вниз

Свойство-компонент   Найти похожие ветки 

 
Alex134   (2003-07-25 01:21) [0]

Как можно создать компонент, одно из свойств которого также будет компонентом?


 
default   (2003-07-25 01:28) [1]

так же как ты создаёшь компонент с обычными полями
типа private FTimer: TTimer;


 
Alex134   (2003-07-25 01:32) [2]


> так же как ты создаёшь компонент с обычными полями
> типа private FTimer: TTimer;

Я не верю )


 
Marser   (2003-07-25 01:34) [3]

Дать ему тип TComponent, если для визуального компонента, то TControl или TWinControl


 
default   (2003-07-25 01:36) [4]

что странного?
посмотри исходники компонентов...
объявление типа FTimer: TTimer означает лишь выделение 4 байт
при создании объекта
естественно в нужном месте должно быть написано FTimer := TTimer.Create


 
default   (2003-07-25 01:42) [5]

http://www.delphi.h5.ru/teachdelphi/CHAPTE~1/index.HTM#1


 
Юрий Зотов   (2003-07-25 02:19) [6]

> Alex134 © (25.07.03 01:21)
> Как можно создать компонент, одно из свойств которого также
> будет компонентом?

Для начала уточняем - внутренним или внешним?



 
Alex134   (2003-07-25 16:20) [7]

Владелец и компонент-свойство являются визуальными, компонент-свойство принадлежит владельцу


 
Alex134   (2003-07-25 16:24) [8]

P.S... и компонент-свойство должен быть доступен на этапе разработки в Object Inspector


 
Юрий Зотов   (2003-07-25 17:03) [9]

Возьмите за основу вот такую схему:

type
TExternalComp = class(...) // ветка TWinControl
private
FInternalComp: ...; // ветка Control
procedure SetInternalComp(const Value: ...);
procedure ReadInternalComp(Reader: TReader);
procedure WriteInternalComp(Writer: TWriter);
protected
procedure DefineProperties(Filer: TFiler); override;
public
constructor Create(AOwner: TComponent); override;
published
property InternalComp: ...
read FInternalComp write SetInternalComp stored False;
end;

constructor TExternalComp.Create(AOwner: TComponent);
begin
inherited;
FInternalComp := T...Create(Self);
with FInternalComp do
begin
Parent := Self;
SetBounds(...);
... // Прочие настройки
end
end;

procedure TExternalComp.SetInternalComp(const Value: ...);
begin
FInternalComp.Assign(Value)
end;

procedure TExternalComp.DefineProperties(Filer: TFiler);
begin
inherited;
Filer.DefineProperty("InternalComp",
ReadInternalComp, WriteInternalComp, True)
end;

procedure TExternalComp.ReadInternalComp(Reader: TReader);
begin
FInternalComp := Reader.ReadComponent(nil)
end;

procedure TExternalComp.WriteInternalComp(Writer: TWriter);
begin
Writer.WriteComponent(FInternalComp)
end;


 
Alex134   (2003-07-25 21:08) [10]


> default © (25.07.03 01:42)
> http://www.delphi.h5.ru/teachdelphi/CHAPTE~1/index.HTM#1

tnks, хорошая статья

> Юрий Зотов

Спасибо, это именно то, что мне и требовалось



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

Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
3-20409
DBDev
2003-07-16 12:42
2003.08.07
Помогите! OLE Excel!


14-20698
Сергей Енин
2003-07-23 13:17
2003.08.07
Отправка e-mail


9-20376
VitGun
2003-02-09 16:32
2003.08.07
Drawrotate в delphiX


14-20751
Fantasy
2003-07-21 03:04
2003.08.07
математика


14-20708
VID
2003-07-23 16:29
2003.08.07
ВАЗ-2110: Разные города,разные цены? Укажите цену в Вашем городе.





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