while aNode<> nil do//逻辑错 begin if aNode.HasChildren then CalacANodeMoney(aNode); //计算Money aNode := aNode.GetNextSibling; //找下一个顶结点 end; end;
递归写错了 见下个例子 function SetChildFlag(node: TTreeNode; Flag: Integer): TTreeNode; var myNode: TTreeNode; begin MyNode:=Node.getFirstChild; while myNode<>nil do MyNode:=SetChildFlag(MyNode,Flag); Node.ImageIndex:=Flag; Result:=Node.GetNextChild(Node); end;
begin
if aNode.HasChildren then CalacANodeMoney(aNode); //计算Money
aNode := aNode.GetNextSibling; //找下一个顶结点
end;
end;
见下个例子
function SetChildFlag(node: TTreeNode; Flag: Integer): TTreeNode;
var
myNode: TTreeNode;
begin
MyNode:=Node.getFirstChild;
while myNode<>nil do
MyNode:=SetChildFlag(MyNode,Flag);
Node.ImageIndex:=Flag;
Result:=Node.GetNextChild(Node);
end;