数据表结构: dm cm
1 五金
101 产品类
10101 型钢类
101010050 瓦片磁钢
101010097 不锈钢锻件
2 毛胚
201 磁针
20101 .....
201010027 .....
3 半成品
301 .....
30101 .....
依次类推
要实现以下树:
五金
产品类
型钢类
瓦片磁钢
不锈钢锻件
毛胚
磁针
....
半成品
.....
请教高手!
1 五金
101 产品类
10101 型钢类
101010050 瓦片磁钢
101010097 不锈钢锻件
2 毛胚
201 磁针
20101 .....
201010027 .....
3 半成品
301 .....
30101 .....
依次类推
要实现以下树:
五金
产品类
型钢类
瓦片磁钢
不锈钢锻件
毛胚
磁针
....
半成品
.....
请教高手!
比如
ID Name PID
1 五金 0
101 产品类 1
10101 型钢类 101
这样的话你就可以通过 做两个函数直接在TreeView中显示出树型效果了。
//寻找给定PID的父节点
function TfrmUManage.FindParent(pid: string): Ttreenode;
var
i:integer;
pp:^string;
k:string;
begin
result:=nil;
if pid='0' then
exit; for i:=tv.Items.Count-1 downto 0 do
begin
new(pp);
pp:=tv.Items[i].data;
k:=pp^;
if k=pid then
result:=tv.Items[i];
end;
end;
//装载权限树
procedure TfrmUManage.LoadTree;
var
pp:^string;
node:TtreeNode;
k:integer;
begin
with dstDefine do
begin
close;
commandtext:='';
commandtext:='select * from tblQuoteDefine ORDER BY PID';
Open;
first;
end;
tv.Items.Clear;
while not dstDefine.Eof do
begin
New(pp);
Node:=tv.Items.AddChild(FindParent(dstDefine['PID']),dstDefine['Qname']);
pp^:=dstDefine['QID'];
Node.Data:=pp;
case node.Level of
0:begin
node.SelectedIndex:=1;
Node.ImageIndex:=0;
end;
1:begin
node.SelectedIndex:=2;
Node.ImageIndex:=2;
end;
2:begin
k:=JudgeQuote(String(pp^));
node.SelectedIndex:=k;
Node.ImageIndex:=k;
end;
end;
dstDefine.Next;
end;
end;