主题:TreeView问题
hank8820
[专家分:0] 发布于 2006-09-11 12:53:00
数据库中的人员表
人员编号 名字 上级领导编号
1001 张三 0
2001 李四 1001
2002 王五 1001
3001 丁六 2001
3002 田七 2001
3003 陈可 2002
3004 夏明 3001
0表示无上级领导
现在单击按钮,显示一带TreeView的窗体,问:
如何实现在窗体的onshow时,TreeView中动态地显示各人员。比如张三为根节点,李四为张三的子节点,丁六又为李四的子节点。
望知道的仁兄回复代码或者发我邮箱:ywz8820@163.com
不胜感激!
回复列表 (共2个回复)
沙发
xiaohongna [专家分:180] 发布于 2006-09-14 17:08:00
我给你做好了 给你发过去了呀
板凳
xiaohongna [专家分:180] 发布于 2006-09-14 17:16:00
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.
我来回复