Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание компонента [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]

Покажите объявление класса, код конструктора и деструктора.


Наверх

Титульная страница Поиск, карта сайта Написать письмо