Ich habe folgendes Problem.
Ich habe eine Klasse TTLTree, die von TTreeView abgeleitet ist.
Ich habe eine Klasse TTLNodes, die von TTreeNodes abgeleitet ist.
Wie erreiche ich es nun, dass meine Klasse TTLTree unter der Eigenschaft 'Items' statt der herkömmlichen TTreeNodes meine Klasse TTLNodes benutzt? (Tatsächlich ist die Sache noch komplizierter, TTLNodes nur deswegen von mir abgeleitet wurde, damit ich auch TTLNode dort benutzen kann, denn dort habe ich die eigentliche Anpassung gemacht).
Ich habe das auf folgendem Weg probiert:
Delphi-Quellcode:
TTLTreeNode= class(TTreeNode)
private
fObjekt: TObject;
public
property Objekt:TObject read fObjekt write fObjekt;
end;
TTLTreeNodes= class(TTreeNodes)
public
Item: array of TTLTreeNode;
end;
TTLTree = class(TTreeView)
private
fRootNode: TTreeNode;
public
Items: TTLTreeNodes;
property rootNode: TTreeNode read fRootNode;
end;
Hierbei bekomme ich aber EAccessViolations, die ich nicht zuordnen kann. Aber bei der Definition von TTLTreeView.Items und TTLTreeNodes.Item habe ich schon gemerkt, dass ich da keine Ahnung was ich dort eintragen soll.
In der
OH steht die Definition folgendermaßen:
für TTreeView.Items:
property Items: TTreeNodes;
Hier fällt mir schon auf, dass das so gar nicht funktioniert, denn Delphi erwartet an dieser Stelle mindestens eine READ oder WRITE Anweisung.
für TTreeNodes.Item:
property Item[Index: Integer]: TTreeNode; default;
Hier hab ich noch mehr Verständnisprobleme. Ist das jetzt ein array oder was sagt diese Definition aus? Was bedeutet das Wort 'default' an dieser Stelle. Und auch hier das selbe Problem, dass Delphi den Mangel an READ und WRITE bemängelt.
Ich weiß nun nicht, wie ich vorgehen soll, um mein Ziel zu erreichen. Falls das ganze jetzt etwas zu konfus war, noch mal in anderen Worten.
Ich habe die Klasse TTLTreeNode von TTreeNode abgeleitet und dort eine Änderung eingebracht. Diese Klasse möchte ich nun in einem TreeView verwenden, den ich dafür (und für andere Anpassungen) auch abgeleitet habe. Wie erreiche ich das?
Gruß
Marco