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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
14-20753
Yuraz
2003-07-17 15:49
2003.08.07
Предлагаю сделать форум в рамках существ. по JavaBuilder


1-20569
odyssey
2003-07-24 09:56
2003.08.07
цвет шрифта в ячейке StrigGrid


14-20761
dabadabiabo
2003-07-21 11:35
2003.08.07
Настройки Delphi


14-20789
LOX
2003-07-21 08:30
2003.08.07
Вентиляторы


1-20543
NetKnight
2003-07-23 16:01
2003.08.07
Как упростить алгоритм.