Главная страница
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.015 c
15-1214478285
Ega23
2008-06-26 15:04
2008.08.10
To-Do List - показать всё


6-1191841928
Elen
2007-10-08 15:12
2008.08.10
Закрыть подключение через NetFileClose


3-1204041756
Reindeer Moss Eater
2008-02-26 19:02
2008.08.10
MSSQL 2005 и политика паролей домена


2-1215697755
Zhentos
2008-07-10 17:49
2008.08.10
Что-то не могу найти ф-цию сравнения чисел по модулю


2-1215595887
fedorovandrey
2008-07-09 13:31
2008.08.10
Как организовать работу приложения?