回 帖 发 新 帖 刷新版面

主题:TreeView问题

数据库中的人员表
人员编号 名字 上级领导编号
1001    张三  0
2001    李四  1001
2002    王五  1001
3001    丁六  2001
3002    田七  2001
3003    陈可  2002
3004    夏明  3001

0表示无上级领导
现在单击按钮,显示一带TreeView的窗体,问:
如何实现在窗体的onshow时,TreeView中动态地显示各人员。比如张三为根节点,李四为张三的子节点,丁六又为李四的子节点。
望知道的仁兄回复代码或者发我邮箱:ywz8820@163.com
不胜感激!

回复列表 (共2个回复)

沙发


我给你做好了 给你发过去了呀

板凳

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  Trelation=record              //用来记录各参数
      num:string;
      name:string;
      relat:integer;
end;
var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   str_list:Tstringlist;
   str:string;
   relation:array of Trelation;
   j,i:integer;
begin
   str_list:=Tstringlist.Create;
   str_list.LoadFromFile('D:\练习\表单.txt');
   setlength(relation,str_list.Count);
   for i:=0 to str_list.Count-1 do
     begin                                     //分离各参数
       relation[i].num:=copy(str_list[i],1,pos(char(32),str_list[i]));
       str_list[i]:=trim(copy(str_list[i],pos(char(32),str_list[i])+1,length(str_list[i])));
       relation[i].name:=trim(copy(str_list[i],1,pos(char(32),str_list[i])));
       str_list[i]:=trim(copy(str_list[i],pos(char(32),str_list[i])+1,length(str_list[i])));
       relation[i].relat:=strtoint(str_list[i]);
     end;
   for i:=0 to high(relation) do
     begin
       if relation[i].relat=0 then


       treeview1.Items.AddFirst(treeview1.Selected,relation[i].name)

       else
       begin
          j:=relation[i].relat div 1000;          //这里是tree的生成
         form1.TreeView1.Items.AddChild(treeview1.Items[j-1],relation[i].name) ;
        end;
     end;

end;

end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册