TREEVIEW樹  - 產品信息
    - 可樂
      -百事可樂
      -可口可樂
    - 餅干
    - 香煙如果我想獲取產品信息下的子節點個數,改怎么獲取?答案: 可樂 餅干 香煙 (3個字節點)然后我想獲取可樂欄目下的字節點,又該怎么獲取?答案: 百事可樂 可口可樂 ("可樂" 下的 2個字節點)

解决方案 »

  1.   

    function TForm1.GetChildNodeCount(node: TTreenode): integer;
    begin
    result:=0;
    node:=node.getFirstChild;
    while node<>nil do
      begin
      result:=result+1;
      node:=node.GetNext;
      end;
    end;procedure TForm1.TreeView1Click(Sender: TObject);
    begin
    label1.Caption:='节点-'+TreeView1.Selected.Text+'有:'+inttostr(GetChildNodeCount(TreeView1.Selected))+'个子结点';
    end;
      

  2.   

    GetChildNodeCount函数你可随意使用,想获取哪个结点的子结点个数就获取
      

  3.   


    如果我想在memo中自動列出各個節點的子節點個數,代碼應該改成什么?也就是不適用TreeView1.Selected用法如:memo.text{產品信息有3個節點百事可樂有2個節點.}
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    d:integer;
    begin
    for i:=0 to TreeView1.Items.Count-1 do
       begin
       d:=GetChildNodeCount(TreeView1.Items[i]);
       if d>0 then
          memo1.Lines.Add(TreeView1.Items[i].Text+'有'+inttostr(d)+'个结点');
       end;
    end;function TForm1.GetChildNodeCount(node: TTreenode): integer;
    begin
    result:=0;
    node:=node.getFirstChild;
    while node<>nil do
      begin
      result:=result+1;
      node:=node.GetNext;
      end;
    end
      

  5.   


    procedure TForm3.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
     for I := 0 to TreeView1.Items.Count - 1 do
      begin
        if TreeView1.Items[I].HasChildren then
           Memo1.Lines.Add(TreeView1.Items[I].Text+'有'+IntToStr(TreeView1.Items[I].Count)+'个节点');
      end;
    end
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
      s: string;
      ttn: ttreenode;
    begin
      i := 0;
      s := '';
      ttn := treeview1.Selected.getFirstChild;
      if ttn<>nil then
      begin
        s := ttn.Text;
        inc(i);
      end;
      while ttn<>nil do
      begin
        ttn := ttn.GetNextChild(ttn);
        if ttn<>nil then
        begin
          s := s+' '+ttn.Text;
          inc(i);
        end;
      end;
      showmessage(treeview1.Selected.Text+':有'+inttostr(i)+'节点('+' '+s+')');
    end;