getnextitem holt sich also den nächsten childnode. ich hatte gedacht er geht die items durch wie beim getnext von ttreenode. damit würden die knoten der reihe nach durchlaufen...
Root,Item1,Item1_1,Item2,Item2_1
.. und du bräuchtest nicht die seiblings extra durchlaufen...
Delphi-Quellcode:
function TTreeNode.GetNext: TTreeNode;
var
NodeID, ParentID: HTreeItem;
begin
Result :=
nil;
if (
Handle <> 0)
and (ItemId <>
nil)
then
begin
NodeID := TreeView_GetChild(
Handle, ItemId);
if NodeID =
nil then
NodeID := TreeView_GetNextSibling(
Handle, ItemId);
ParentID := ItemId;
while (NodeID =
nil)
and (ParentID <>
nil)
do
begin
ParentID := TreeView_GetParent(
Handle, ParentID);
NodeID := TreeView_GetNextSibling(
Handle, ParentID);
end;
Result := FOwner.GetNode(NodeID);
end;
end;