Die Zugriffsverletzungen könnten durch deine Kombination der Codes bedingt sein. Hier übernehme ich den Code von ShowChildren() nach DoProcess() und passe den Aufruf so an, dass für alle Knoten auf der ersten Ebene die direkten Unterknoten ausgegeben werden - ungetestet:
Delphi-Quellcode:
procedure TDemoForm.DoProcess(tn: TTreeNode);
begin
tn := tn.GetFirstChild;
while Assigned(tn) do
begin
ShowMessage(tn.Text);
tn := tn.GetNextSibling;
end;
end;
procedure TDemoForm.ProcessButtonClick(Sender: TObject);
var
tn: TTreeNode;
begin
tn := TreeView.Items.GetFirstNode;
while Assigned(tn) do
begin
DoProcess(tn);
tn := tn.getNextSibling;
end;
end;
marabu