Guten Morgen Frank.
Um deine Baumstruktur rekursiv in eine TreeView zu laden genügt es, wenn die Laderoutine rekursiv ist. Deine Komponente muss lediglich eine Möglichkeit zur Iteration über die Unterkomponenten anbieten - und das tut sie ja auch ohne GetNext().
Delphi-Quellcode:
procedure AddNodes(nodes: TTreeNodes; nParent: TTreeNode; ciRoot: TCompInfo);
var
i: Integer;
ci: TCompInfo;
tn: TTreeNode;
begin
with ciRoot.Components do
for i := 0 to Pred(Count) do
begin
ci := Items[i];
tn := nodes.AddChildObject(nParent, DisplayName(ci), ci);
AddNodes(nodes, tn, ci);
end;
end;
In der Funktion DisplayName() kannst du den Anzeigenamen für die jeweilige Komponente erzeugen. Der Aufruf könnte so aussehen:
Delphi-Quellcode:
begin
with TreeView do
begin
Items.BeginUpdate;
Items.Clear;
AddNodes(Items, nil, rootComp);
Items.EndUpdate;
end;
end;
Alles nur getippt und nicht getestet.
Grüße vom marabu