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

Вниз

Создание компонента   Найти похожие ветки 

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

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1136962318
barograph
2006-01-11 09:51
2006.01.29
Господа помогите разобраться


10-1112286625
mik1971
2005-03-31 20:30
2006.01.29
как передать массив структур в СОМ


2-1136810258
BiggieSmalls
2006-01-09 15:37
2006.01.29
И еще немного реестра


3-1132752186
NetName
2005-11-23 16:23
2006.01.29
обновление таблицы ADO


15-1136313078
Nous Mellon_
2006-01-03 21:31
2006.01.29
Бездельничаю. Забава на смекалку.