数据库中的记录如下:
id Type Name
1 aaa aaa
2 bbb bbb
3 ccc ccc
4 bbb ddd
5 aaa fff
6 ccc ggg
实现下面效果:类型汇总
+ -----aaa
|__aaa
|__fff
+ -----bbb
|__bbb
|__ddd
+ -----ccc
|__ccc
|___ggg请帮帮我????????
id Type Name
1 aaa aaa
2 bbb bbb
3 ccc ccc
4 bbb ddd
5 aaa fff
6 ccc ggg
实现下面效果:类型汇总
+ -----aaa
|__aaa
|__fff
+ -----bbb
|__bbb
|__ddd
+ -----ccc
|__ccc
|___ggg请帮帮我????????
id Type Name Parent(父节点的ID,0表示根节点)
1 aaa aaa 0
2 bbb bbb 0
3 ccc ccc 0
4 bbb ddd 2
5 aaa fff 1
6 ccc ggg 2
1、一进窗体就把树组织起来,这种方法优点是窗体进入的时候较慢,但进入了以后就正常!
了!
具体到你的结构上,可以这样做:
先加入一级节点:
select name from 表 group by name
这样你将可以加入 aaa,bbb,ccc三个节点了!
然后你对根节点进行遍历,对每一个节点,取它的Caption,然后再用语句:
select name from 表 where name=遍历根节点的值
语句如下:
var
count:Integer
begin
with Query1 do
begin
close;
sql.clear;
sql.add('select name from 表 group by name');
open;
where not eof do
begin
treeview1.items.add(nil,fieldbyname('name').asstring);
next;
end;
//根节点加完了,开始加子节点了
for count:=0 to Treeview1.items.count-1 do
begin
//
if Treeview1.items[count].level=0 then
begin
close;
sql.clear;
sql.add('select name from 表 where name=:name')
parambyname('name').asstring:=Treeview1.items[count].caption;
open;
while not eof do
begin
//加入子节点
next;
end;
end;
end;
end;
end;
2、在进入的时候只加入一级节点,当用户单击了某一个节点了后再组织这个节点的子节点。这样做的好处是速度快,而且简单。楼主你自己去试试,我就是这样做的呢!
帮帮我,谢谢!
我觉的"for count:=0 to Treeview1.items.count-1 do"以下的语句没有执行。