Форум: "Основная";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизКонструктор для элемента коллекции Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c