Solange nach oben gegen, bis ANode.Parent = nil ist, was hat Result dann immer für einen Wert?
Und noch was: Wenn der übergebene Node = nil ist -> knallt es!
Also...
Delphi-Quellcode:
function GetTopItem(ANode : TTreeNode) : TTreeNode;
begin
while assigned(ANode) and assigned(ANode.Parent) do
ANode := ANode.Parent;
Result := ANode;
end;
und was spricht gegen TreeView.Items.GetFirstNode in Verbindung mit TreeNode.getNextSibling?