请教选中treeview任意一个节点,要求找出该节点下的所有叶子结点.谢谢!

解决方案 »

  1.   

    叶子结点是不包括有子结点的结点,用递归.var
        str:array of string;///////保存所有下面的结点的text
        cnt:integer;////////下面结点的个数procedure TForm1.GetChildNode(Node:TTreeNode);
    var
        i:integer;
    begin
        for i:=0 to Node.Count-1 do
        begin
            if Node.Item[i].HasChildren=false then
            begin
                str[cnt]:=Node.Item[i].Text;
                inc(cnt);
            end else
                GetChildNode(Node.Item[i]);
        end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
        i:integer;
    begin
        setlength(str,TreeView1.Items.Count);
        GetChildNode(TreeView1.Selected);    Memo1.Lines.Clear;
        for i:=0 to cnt-1 do
            Memo1.Lines.Add(str[i]);
    end;
      

  2.   

    var
    jie1,jie2,jie3:Ttreeview;
    begin
    jie1:=treeview1.selected;   //得到选择的节点
    jie2:=jie1.getfirstchild;   //得到选择节点的第一个子节点  jie3:=jie2;
        while  jie3.getfirstchild<>nil do  //如果子节点存在,则遍历循环
          begin
        treeview1.selected:=jie3; 
            (记录节点).........
            jie3:=jie3.getnext;  //得到下一个邻近节点
          end;end;