Was Sir Rufo meint: Dein Create ist als overload
deklariert, das wird so nie aufgerufen, es muss override
heißen.
Und wie schon gesagt, fehlt dort das inherited.
Zudem meine ich noch, dass die Konstruktoren völlig falsch gewählt sind und darum niemals aufgerufen werden.
Entweder man überschreibt den Konstruktor
TCollectionItem.Create( Collection : TCollection );
Delphi-Quellcode:
TMyItem = class( TCollectionItem )
public
constructor Create( Collection : TCollection ); override;
end;
constructor TMyItem.Create( Collection : TCollection );
begin
inherited {Create( Collection )};
...
end;
oder, wenn einen die übergebenen Werte im Konstruktor egal sind, dann überschreibt man einfach
TObject.AfterConstruction;
Delphi-Quellcode:
TMyItem = class( TCollectionItem )
public
procedure AfterConstruction; override;
end;
procedure TMyItem.AfterConstruction;
begin
inherited;
...
end;
Für das Ableiten von Klassen unterstützt einen die
IDE (
"Use the force, Luke!")
Im Deklarationteil der neuen Klasse drückt man beherzt <STRG>+<LEERTASTE> und bekommt (wie durch Zauberhand)
Nun wählt man sich gemütlich eine (
oder auch mehrere) Einträge aus und hämmert auf <ENTER>
Ah, ja ... und nun? Ein weitere beherzter Druck auf <UMSCH>+<STRG>+C bringt uns zu
Also so ein Hinweis "die Klasse ist noch neu, da habe ich das
inherited
noch weggelassen" dokumentiert nur die Unkenntnis im Umgang mit der
IDE. Aber gegen Unkenntnis kann man etwas unternehmen