treeview问题:如何获得 选定节点的全部子节点,并储存在list内

解决方案 »

  1.   

    想要windows资源管理器那样的,由treeview到listview。谢谢
      

  2.   

    应该是遍历了Selected.getFirstChild//得到第一个子节点
    GetNext//得到下一个子节点
      

  3.   

    D自己有一个demo,可以去看看
      

  4.   

    写个小程序 娱乐一下procedure TForm1.Button1Click(Sender: TObject);  //点击按钮 加载子节点数据
    var
     NodeTest:TTreeNode;
    begin
     NodeTest:= TreeView1.Selected.getFirstChild;
     ListBox1.Items.Add(NodeTest.Text);
     AddNodeList(NodeTest);
    end;procedure TForm1.AddNodeList(NodeFirst:TTreeNode); //递归过程
    begin
     if NodeFirst.getNextSibling<>nil then
       begin
       ListBox1.Items.Add(NodeFirst.Text);
       AddNodeList(NodeFirst.getNextSibling);
       end;
    end;
      

  5.   


    procedure TForm1.AddNodeList(NodeFirst:TTreeNode);
    begin
     if NodeFirst.getNextSibling<>nil then
       begin
       ListBox1.Items.Add(NodeFirst.getNextSibling.Text);  //这写错了点 我太马虎了 哈哈
       AddNodeList(NodeFirst.getNextSibling);
       end;
    end;
      

  6.   

    你随便改下不就可以了? 这还要我来改? 数据显示位置 参考Listview用法procedure TForm1.Button1Click(Sender: TObject);
    var
     NodeTest:TTreeNode;
    begin
     NodeTest:= TreeView1.Selected.getFirstChild;
     with ListView1.Items.Add do //(NodeTest.Text);
      begin
       caption:=NodeTest.Text;//'1212';
      end;
     AddNodeList(NodeTest);
    end;procedure TForm1.AddNodeList(NodeFirst:TTreeNode);
    begin
     if NodeFirst.getNextSibling<>nil then
       begin
      // ListView1.Items.Add(NodeFirst.getNextSibling.Text);
       with ListView1.Items.Add do //(NodeTest.Text);
      begin
       caption:=NodeFirst.getNextSibling.Text;//'1212';
      end;
       AddNodeList(NodeFirst.getNextSibling);
       end;
    end;
      

  7.   

    ListView用法://增加项或列(字段)ListView1.Clear;
    ListView1.Columns.Clear;
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.Columns.Items[0].Caption:='id';
    ListView1.Columns.Items[1].Caption:='type';
    ListView1.Columns.Items[2].Caption:='title';
    ListView1.Columns.Items[2].Width:=300;
    Listview1.ViewStyle:=vsreport;
    Listview1.GridLines:=true;               //注:此处代码也可以直接在可视化编辑器中完成,也可写成以下这样begin
    with listview1 do
    begin
    Columns.Add;
    Columns.Add;
    Columns.Add;
    ViewStyle:=vsreport;
    GridLines:=true;
    columns.items[0].caption:='进程名';
    columns.items[1].caption:='进程ID';
    columns.items[2].caption:='进程文件路径';
    Columns.Items[0].Width:=100;
    Columns.Items[1].Width:=100;
    Columns.Items[2].Width:=150;
    end
    end; //增加记录
    with listview1.items.add do 
    begin 
    caption:='1212'; 
    subitems.add('hh1'); 
    subitems.add('hh2'); 
    end; //删除 
    listview1.items.delete(0);
      

  8.   


    windows资源管理器的所有功能在DELPHI上都可以实现,而且很简单。