treeview 与TABLE 的结合(200分)

  • 主题发起人 主题发起人 大老虎
  • 开始时间 开始时间

大老虎

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个会计科目的Treeview,TABLE的结构是这样?
ID号 名称 级次
id name grade
101 a 1
10101 aa 2
..
102 b 1
10201 bb 2
我想要做的是这样的。
整个会计科目
|_101
| |_10101
|_102
|_10201
不管你的数据库有多少个记录都可以。拜托各位,嘻嘻。
 
1.以ID分组、按长度由小到大排序
2.分组数为Level数
3.以长度最小为父层,循环增下一层
 
数据库按ID排序
table1.first;

while not table1.eof do
begin
if 没有找到父节点 then
treeview1.items.addchild(nil, 内容)
else
node.addchild(找到节点, 内容);

table1.next;
end;

用 treeview 检索一下,有许多答案
 
若只有两级的话,下面有现成代码,若超过两级,可稍作修改。(我觉得Grade不一定要,只
要Id编号有规律就行)
procedure TFMdir.GenTree();
var nd:TTreenode;
begin
TVD.items.Clear;
with TABLE do
begin
indexname:='id'; // id 要索引
first;
while not eof do
begin
if length(FieldByName('id').AsString)=3
then nd:=TVD.items.add(nil,FieldByName('Name').AsString
else TVD.items.addchild(nd,FieldByName('Name').AsString);
Next;
end;
end;
end;
 
数据库应该设计成
id,父id
层次是隐含的,并且不需要对项目编号做复杂编码规则和判断。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部