![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонента [D7, WinXP]
Radgar © (2005-08-05 19:33:00)Я создал свой первый компонента (почти), и у меня возник такой вопрос: Компонент мой основанна TCustomControl и состоит из нескольких TImage, так вот эти Timage у меня создаются в конструкторе Create, и создаются только если я сам создаю этот компонент в ран-тайм, а хотелось бы чтобы они создавались когда я заранее кидаю комп. на форму. Подскажите, пожалуйста, как это сделать?
Юрий Зотов (2005-08-05 20:45:00) [1]Конструктор надо пере крыть, а не за крыть (компилятор же не просто так предупреждения пишет, стоит обращать на них внимание).
При 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;
Radgar (2005-08-05 20:17:00) [2]2 Юрий Зотов
Забыл в TMyComponent = class (TCustomControl) и Image:=TImage.Create(s el f)
Ну еще не написал:
destructor TmeComponent.Destroy;
begin
inherited Destroy;
end;
Ну вот вроде и всё.
Юрий Зотов (2005-08-05 20:13:00) [3]> Radgar © (05.08.05 19:52) [2]
Извините, но если Вы действительно хотите решить проблему, то, наверное, нужно приводить точный код, а не вводить людей в заблуждение. Тот, что Вы привели, даже не откомпилируется.
Radgar (2005-08-05 19:52:00) [4]
> Юрий Зотов © (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 19:45:00) [5]Покажите объявление класса, код конструктора и деструктора.