Um Baumstrukturen aufzubauen kann man das
Komposite Design Pattern verwenden.
Was aber kaum bekannt ist: mit der Klasse
TComponent
kann man mit wenig Aufwand eine Baumstruktur aufbauen:
Delphi-Quellcode:
TDatenObjekt = class(TComponent)
public
Bezeichnung : string;
end;
var
wurzel : TComponent;
t : TDatenObjekt;
begin
wurzel := TComponent.Create(nil);
t := TDatenObjekt.Create(wurzel);
t.Bezeichnung := 'Zweig A';
t := TDatenObjekt.Create(wurzel);
t.Bezeichnung := 'Zweig B';
t := TDatenObjekt.Create(t);
t.Bezeichnung := 'Blatt 1 an Zweig B';
t := TDatenObjekt.Create(t.Owner);
t.Bezeichnung := 'Blatt 2 an Zweig B';
In dem man an der Wurzel einsteigt und über das Array
Components[]
iteriert, kann man auf alle Knoten der Baumstruktur zugreifen.
Die Anzahl der Objekte bekommt man über das Property
ComponentCount
.
Delphi-Quellcode:
// Alle Knoten rekursiv besuchen
procedure BaumAnzeigen(c:TComponent);
var
i : Integer;
begin
if not Assigned(c) then
exit;
if c is TDataObjekt then
writeln(TDataObjekt(c).Bezeichnung)
else
writeln('?');
for i := 0 to c.ComponentCount-1 do
BaumAnzeigen(c.Components[i]);
end;
...
BaumAnzeigen(wurzel);