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

Вниз

Конструктор для элемента коллекции   Найти похожие ветки 

 
Flexer   (2007-12-01 01:28) [0]

У меня есть коллеция обьектов

Type
 TPeak = class(TCollectionItem)
   public
     isstep: boolean;
     ID: TPeakID;
     X, Y: integer;
     Ribe: TRibeCollection;
     procedure Draw(Canvas: TCanvas);
     constructor Create(Collection: TCollection);  virtual;
overload;

end;


Когда я делаю добавление элемента в коллекцию

Peak: TPeakCollection;
...
Peak.Add;


Элемент добавляется, но вот незадача. Koнструктор, который я опеределил для своего класса (элемента коллекии) не вызывается, а такое впечатление что выполняется конструктор родительского класса. А мне обязательно нужен свой конструктор, срабатывающий по Peak.Add; (Мне в каждом элементе нужно инициализировать инкапсулированную коллекцию  другого типа и задавать значения по умолчанию)
TPeak.Create(Collection: TCollection);  virtual;

Вот код конструктора



constructor TPeak.Create(Collection: TCollection);
begin
 inherited Create(Collection);
 beep(1000,100);
 Ribe := TRibeCollection.Create(TRibe);
end;



Я, конечно понимаю, что я так закрываю родительский конструктор, но никак не могу понять как делать правильно.


 
Flexer   (2007-12-01 01:32) [1]

Кстати, забыл сказать, если я пытаюсь сделать

constructor Create(Collection: TCollection);  override;

То компилятор ругается. Как же сделать этот override?


 
Джо ©   (2007-12-01 02:33) [2]

Если сделать
constructor Create(Collection: TCollection);  override;
то никто «ругаться» не будет.


 
Германн ©   (2007-12-01 02:56) [3]


> Джо ©   (01.12.07 02:33) [2]
>
> Если сделать
> constructor Create(Collection: TCollection);  override;
> то никто «ругаться» не будет.
>

Будет, Серёга. Будет. :(
Но что хочет сделать автор, лично я не понимаю!


 
Германн ©   (2007-12-01 03:09) [4]

Вру. Причём нагло.
:(((
Но что хочет сделать автор, все равно не понимаю!


 
Джо ©   (2007-12-01 03:10) [5]

> [3] Германн ©   (01.12.07 02:56)
> Будет, Серёга. Будет. :(

Classes.pas:
 TCollectionItem = class(TPersistent)
   ...
 public
   constructor Create(Collection: TCollection); virtual;
   ...
 end;


Отчего тут кому-то ругаться?
Ну, кроме автора, сабо самой.


 
Юрий Зотов ©   (2007-12-01 04:02) [6]

> Flexer   (01.12.07 01:28)  

> Koнструктор, который я опеределил для своего класса (элемента
> коллекии) не вызывается, а такое впечатление что выполняется
> конструктор

Когда создаете коллекцию, передавайте параметром в ее конструктор свой класс элемента. Тогда метод Add коллекции будет создавать элементы Вашего класса. Соответственно, его конструктор и вызовется.



Страницы: 1 вся ветка

Текущий архив: 2008.08.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.231 c
15-1214071119
data
2008-06-21 21:58
2008.08.10
а я в отпуске))) пишу из Турции


2-1215418081
IGray
2008-07-07 12:08
2008.08.10
Экспорт ветки реестра в REG-файл без Regedit-a.


15-1214360615
Slider007
2008-06-25 06:23
2008.08.10
С днем рождения ! 25 июня 2008 среда


15-1214169103
JetuS
2008-06-23 01:11
2008.08.10
Сниффер ICMP-пакетов


2-1215590222
kyn66
2008-07-09 11:57
2008.08.10
Скриншот окна броузера