//過程
procedure TForm1.calacanodemoney(anode:ttreenode);
//中的
achild:=anode.getfirstchild;語句出現在遞歸中好像邏輯上有錯誤。

解决方案 »

  1.   

    while aNode<> nil do//逻辑错
      begin
        if aNode.HasChildren then CalacANodeMoney(aNode); //计算Money
        aNode := aNode.GetNextSibling; //找下一个顶结点
      end;
    end;
      

  2.   

    递归写错了
    见下个例子
    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;