begin
  treeview1.items.add(nil,'公司');
  treeview1.items.add(treeview1.items[0],'公关'); 
  treeview1.items.add(treeview1.items[0],'财务'); 
  treeview1.items.add(treeview1.items[0].item[0],'张三'); 
  treeview1.items.add(treeview1.items[0].item[0],'李四'); 
end;

解决方案 »

  1.   

    给你个简单的例子:
    首先加入控件“TreeView1”
    建树过程:
        var
            dd:TTreeNode;
    begin
        dd:=TreeView1.Items.AddChild(nil,'公司');//建树根
        dd:=TreeView1.Items.AddChild(dd,'部门');//在刚建树根上再建树枝
        dd:=TreeView1.Items.AddChild(dd,'小组');//在刚建树枝上再建树枝
        TreeView1.Items.AddChild(dd,'职员');//在刚建树枝上再建树叶
    end;
      

  2.   

    给你个简单的例子:
    首先加入控件“TreeView1”
    建树过程:
        var
            dd:TTreeNode;
    begin
        dd:=TreeView1.Items.AddChild(nil,'公司');//建树根
        dd:=TreeView1.Items.AddChild(dd,'部门');//在刚建树根上再建树枝
        dd:=TreeView1.Items.AddChild(dd,'小组');//在刚建树枝上再建树枝
        TreeView1.Items.AddChild(dd,'职员');//在刚建树枝上再建树叶
    end;
      

  3.   

    跟你说个秘诀:
    先做一个文本文件,格式如下:
    A00
     B01
      C01
       D01
       D02
       D03
      C02
       D11
       D12   
     B02
    ....说明:前面的空格数量作为层数,注意不要多了或少了!
    然后导进树中去,很方便的,哈哈!
      

  4.   

    以下为我的一个程序段:
    构建结构树:
    表结构:(tree_name,tree_code,tparent_code)//根节点
    procedure tfrm_tree_union.build_tree;
    begin
    //查找根节点
    // frm_onland.run_animate(frm_tree_union,animate1);
     query1.active:=false;
     query1.SQL.Clear;
     query1.SQL.Add('select * from gh_tree_union where parent_code=''0''');
     try
      query1.ExecSQL;
     except
      frm_onland.close_animate(frm_tree_union,animate1);
      messagedlg('读取根节点出错!',mterror,[mbok],0);
      exit;
     end;
     query1.Active:=true;
     if query1.RecordCount=0 then
     begin
      frm_onland.close_animate(frm_tree_union,animate1);
      messagedlg('没有根节点,请先建立根节点!',mterror,[mbok],0);
      exit;
     end;
     treeview1.Items.Clear;
    //建立根节点
     with treeview1.Items do
     begin
      v_treenode:=add(nil,query1.fieldbyname('tree_name').AsString);
      has_child:=true;
     // 下级子节点
      build_treenode(v_treenode,query1.fieldbyname('tree_code').AsString);
      //图片显示是否有子节点
     end;
     //全部子节点:
     build_leaf;
    end;
     //一级子节点
    procedure tfrm_tree_union.build_treenode(tree_node:ttreenode;parentcode:string);
    var
     i:integer;
     tree_name:string;
    begin
     //frm_onland.run_animate(frm_tree_union,animate1);
     animate1.Visible:=true;
     animate1.Active:=true;
     query2.Active:=false ;
     query2.SQL.Clear;
     query2.SQL.Add('select * from gh_tree_union where parent_code='''+parentcode+'''');
     try
      query2.ExecSQL;
     except
      //frm_onland.close_animate(frm_tree_union,animate1);
      messagedlg('构建子节点出错!',mterror,[mbok],0);
      exit;
     end;
     query2.Active:=true;
     if query2.RecordCount=0 then
     begin
     // frm_onland.close_animate(frm_tree_union,animate1);
     // messagedlg('此节点下无子节点!',mtinformation,[mbok],0);
      exit;
     end
     else
     begin
      for i:=0 to query2.RecordCount-1 do
      begin
       tree_name:=query2.fieldbyname('tree_name').AsString;
       treeview1.Items.AddChild(tree_node,tree_name);
       query2.Next;
      end;
     end;
     animate1.Active:=false;
     animate1.Visible:=false;
     //frm_onland.close_animate(frm_tree_union,animate1);
    end;
     
    //全部子节点
    //建立其它子节点
    //其构建顺序为:根据一级节点数,从上向下依次建立!
    procedure tfrm_tree_union.build_leaf;
    var
     i,j,k,m:integer;
     str:string;
    begin
     k:=0;
     //计算一级子单位数.
     query1.Close;
     query1.SQL.Clear;
     query1.SQL.Add('select m=count(*) from gh_tree_union where parent_code=''00000''');
     try
      query1.Open;
     except
      messagedlg('检索一级子节点出错!',mterror,[mbok],0);
      exit;
     end;
     m:=query1.fieldbyname('m').AsInteger;
     //构建树!
     //如m<5,则取默认值5
     if m<5 then
      m:=5;
     for j:=0 to m do //此处J并不表示树的层数,而表示一级子节点数!
     begin
      animate1.Visible:=true;
      animate1.Active:=true;  for i:=k to treeview1.Items.Count-1 do
      begin
      //frm_onland.run_animate(frm_tree_union,animate1);
       v_treenode:=treeview1.Items[i];
       if v_treenode.HasChildren then
       begin
        continue;
       end;
       str:=v_treenode.Text;
       query1.Active:=false;
       query1.SQL.Clear;
       query1.SQL.Add('select tree_code from gh_tree_union where tree_name='''+str+'''');
       try
        query1.ExecSQL;
       except
       // frm_onland.close_animate(frm_tree_union,animate1);
        messagedlg('检索代码出错!',mterror,[mbok],0);
        exit;
       end;
       query1.Active:=true;
       if query1.RecordCount=0 then
       begin
       // frm_onland.close_animate(frm_tree_union,animate1);
        messagedlg('此单位代码不存在!',mterror,[mbok],0);
        exit;
       end;
       str:=query1.fieldbyname('tree_code').AsString;
       build_treenode(v_treenode,str);
       k:=i;
       label5.Caption:=inttostr(k);
      end;
      animate1.Active:=false;
      animate1.Visible:=false;
     end;
    end;