有2张表:
  部门表:DEPID,DEPNAME
  员工表:EMPID,EMPNAME,DEPID
生成的形如:
  部门名称1--|
            |-员工姓名
            |-员工姓名
            
  部门名称2—|
            |-员工姓名谢谢!!

解决方案 »

  1.   

    我有个例子 改改就行了:
    procedure TForm_main.tianjiatreeview;
    var
      i: integer;
      node: Ttreenode;
    begin
      with dm do
      begin
         //添加公司分类:
        TreeView_list.Items[0].Item[0].Item[0].DeleteChildren;
        with ADOQuery_temp do
        begin
          close;
          SQL.Clear;
          SQL.Add('select * from gongsifenlei');
          Open;
        end;
        for i := 0 to ADOQuery_temp.RecordCount - 1 do
        begin
          node := TreeView_list.Items.AddChild(TreeView_list.Items[0].Item[0].Item[0], ADOQuery_temp.FieldByName('mingcheng').AsString);
          node.ImageIndex := 1;
          node.SelectedIndex := 1;
          ADOQuery_temp.Next;
        end;
         //添加公司行业:
        TreeView_list.Items[0].Item[0].Item[1].DeleteChildren;
        with ADOQuery_temp do
        begin
          close;
          SQL.Clear;
          SQL.Add('select * from hangye');
          Open;
        end;
        for i := 0 to ADOQuery_temp.RecordCount - 1 do
        begin
          node := TreeView_list.Items.AddChild(TreeView_list.Items[0].Item[0].Item[1], ADOQuery_temp.FieldByName('mingcheng').AsString);
          node.ImageIndex := 1;
          node.SelectedIndex := 1;
          ADOQuery_temp.Next;
        end;
         //添加联系人分类:
        TreeView_list.Items[0].Item[1].Item[0].DeleteChildren;
        with ADOQuery_temp do
        begin
          close;
          SQL.Clear;
          SQL.Add('select * from lianxirenfenlei');
          Open;
        end;
        for i := 0 to ADOQuery_temp.RecordCount - 1 do
        begin
          node := TreeView_list.Items.AddChild(TreeView_list.Items[0].Item[1].Item[0], ADOQuery_temp.FieldByName('mingcheng').AsString);
          node.ImageIndex := 1;
          node.SelectedIndex := 1;
          ADOQuery_temp.Next;
        end;
         //添加联系人来源:
        TreeView_list.Items[0].Item[1].Item[1].DeleteChildren;
        with ADOQuery_temp do
        begin
          close;
          SQL.Clear;
          SQL.Add('select * from laiyuan');
          Open;
        end;
        for i := 0 to ADOQuery_temp.RecordCount - 1 do
        begin
          node := TreeView_list.Items.AddChild(TreeView_list.Items[0].Item[1].Item[1], ADOQuery_temp.FieldByName('mingcheng').AsString);
          node.ImageIndex := 1;
          node.SelectedIndex := 1;
          ADOQuery_temp.Next;
        end;
      end;
    end;
      

  2.   

    var 
      TN,TN1 : TTreenode;
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.text := 'select a.depname m b.empname n from 部门表 a, 员工表 b where a.depid = b.depid order by a.depname b.empname ';
      open;
      if recordcount = 0 then exit;
      TN := treeview1.items.add(nil,fieldbyname('m').asstring);
      while not eof do
      begin
        if TN = fieldbyname('m').asstring then
        begin
          treeview1.items.addchild(TN,fieldbyname('n').asstring);
        end
        else begin
          TN := treeview1.items.add(nil,fieldbyname('m').asstring);
          treeview1.items.addchild(TN,fieldbyname('n').asstring);
        end;    next;
      end;
      
    end;