to stiven:
给你参考一下,我下面是处理N层目录结构
(( 书类型表(Slxtable)
1.本级编码(Bjbm) char(4)
2.类型名称(Lxmc) char(60)
3.编码级别(Bmjb) char(1)
4.类型总编码(Lxzbm) char(10) //上级+本级))
用建树过程如下:
procedure createtree(treeview1:Ttreeview);
var
stra,strb,strc,strd:string;
i,j,index1,dd:integer;
begin
treeview1.Items.Clear;
treeview1.items.add(nil,'内容性质类型');
xzrec[0].zbm:='$';
with tsg_dm do
begin
query1.Close;
query1.SQL.clear;
query1.sql.add('select Bjbm,Lxmc,Bmjb,Lxzbm from Slxtable order by Lxzbm');
query1.Prepare;
query1.Open;
query1.First;
while not query1.Eof do
begin
stra:=query1.fieldbyname('Bjbm').asstring;
strb:=query1.fieldbyname('Lxmc').asstring;
strc:=query1.fieldbyname('Bmjb').asstring;
strd:=query1.fieldbyname('Lxzbm').asstring;
j:=treeview1.items.count;
index1:=-100;
for i:=0 to j-1 do
begin
dd:=length(xzrec.zbm);
if (copy(strd,1,dd)=xzrec.zbm)and(strc=inttostr(treeview1.items.level+1)) then
index1:=i;
end;
if index1=-100 then//实际上做了100层
treeview1.Items.AddChild(treeview1.Items[0],strb)
else
treeview1.Items.AddChild(treeview1.Items[index1],strb);
xzrec[j].zbm:=strd;
xzrec[j].bjbm:=stra;
query1.Next;
end; //while not ... do
end;
end;
procedure tform1.FormCreate(Sender: TObject);
begin
createtree(treeview1);//建树
end;
你可以把你的数据库改掉;
给你点提示:
地区性质表(Dqxztable)
1.本级编码(Bjbm) char(3) 0 32 07 01
2.类型名称(Lxmc) char(20) 中国 福建省 龙岩市 永定县
3.编码级别(Bmjb) char(10) 1 2 3 4
4.类型总编码(Lxzbm) char(20)//上级+本级 0 032 03207 0320701