Форум: "Компоненты";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
ВнизСоздание компонента Найти похожие ветки
← →
Radgar © (2005-08-05 19:33) [0]Я создал свой первый компонента (почти), и у меня возник такой вопрос: Компонент мой основанна TCustomControl и состоит из нескольких TImage, так вот эти Timage у меня создаются в конструкторе Create, и создаются только если я сам создаю этот компонент в ран-тайм, а хотелось бы чтобы они создавались когда я заранее кидаю комп. на форму. Подскажите, пожалуйста, как это сделать?
← →
Юрий Зотов © (2005-08-05 19:45) [1]Покажите объявление класса, код конструктора и деструктора.
← →
Radgar © (2005-08-05 19:52) [2]
> Юрий Зотов © (05.08.05 19:45) [1]
> Покажите объявление класса, код конструктора и деструктора.TMyComponent = class
Image:TImage;
private
{ Private declarations }
protected
{ Protected declarations }
public
constructor Create(AOwner:TComponent);
destructor Destroy;
{ Public declarations }
published
{ Published declarations }
end;
constructor TMyComponent.Create(AOwner:TComponent);
begin
inherited Create(Aowner);
Height:=...;
Width:=...;
Image:=TImage.Create(slef);
Image.Parent:=self;
end;
← →
Юрий Зотов © (2005-08-05 20:13) [3]> Radgar © (05.08.05 19:52) [2]
Извините, но если Вы действительно хотите решить проблему, то, наверное, нужно приводить точный код, а не вводить людей в заблуждение. Тот, что Вы привели, даже не откомпилируется.
← →
Radgar © (2005-08-05 20:17) [4]2 Юрий Зотов
Забыл в TMyComponent = class (TCustomControl) и Image:=TImage.Create(self)
Ну еще не написал:destructor TmeComponent.Destroy;
begin
inherited Destroy;
end;
Ну вот вроде и всё.
← →
Юрий Зотов © (2005-08-05 20:45) [5]Конструктор надо перекрыть, а не закрыть (компилятор же не просто так предупреждения пишет, стоит обращать на них внимание).
При FImage:=TImage.Create(Self) деструктор можно убрать совсем. Полю Image в секции published делать нечего. Если конструктор переназначает размеры, есть смысл объявить их дефолтными.
type
TMyComponent = class(TCustomControl)
private
FImage: TImage;
public
constructor Create(AOwner: TComponent); override; //!!!
published
property Height default ...;
property Width default ...;
end;
constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited;
Height := ...;
Width := ...;
FImage := TImage.Create(Self);
FImage.Parent := Self
end;
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.052 c