Главная страница
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.047 c
15-1136458296
Piter
2006-01-05 13:51
2006.01.29
Как же неудобно отлаживать многопоточное приложение в Дельфи :(


11-1118239821
Haker
2005-06-08 18:10
2006.01.29
MainMenu


1-1135758191
guru-guru
2005-12-28 11:23
2006.01.29
Ошибка в при работе с Екселем


3-1133266091
Sanktum
2005-11-29 15:08
2006.01.29
Not a valid bookmark. (Error 3159)


6-1129401928
Black-Grin
2005-10-15 22:45
2006.01.29
NMFTP вызов LIST