请问谁有TreeView与数据库连接的源代码?(100分)

  • 主题发起人 主题发起人 Rik
  • 开始时间 开始时间
HTTP://GO7.163.COM/LUYEAR/DELPHI.HTM
有我些的一個程序,很詳細的
 
to 左右手:
你说的自然是通过SQL查询获得结果,但在大数据库中,这个查询就有问题,你
可以测试测试dxDBTreeView,那个效果我可不知道如何实现
 
谁有dxDBTreeView的download地址!?[:)]
 
我有Express的dxDBTreeView源码(ver 1.02),但不记得在何处downland,需要可来信:gzcyp2000@21cn.com.
但此控件效率不是太好,对数据库结构有要求。
如谁有更高ver的,请告诉我。
 
我在我的程序里是这样实现的,不知有没有更好的办法:
1。数据库要求有4个字段:id:integer;parent:integer;title:string;child:boolean;
其中id作为节点的唯一标志,parent标识此节点的父节点,title当然就是标题了,child
表示此节点是否有子节点。
2。加载:首先加载parent为0(0表示第一层),并标识是否有子节点,其余的节点等到
使用者展开节点时再加载。
速度上可以说非常快。
我在我的风云书库中就是使用此方法。
有兴趣可以看看http://delphiuser.home.chinaren.com

 
我建议另一种做法:
通过编码算法去实现层次结构:
如:1-2-3
101001 102005
这种好处是:充分体现的分类关系.不用去管它的父子关系,因为本身都有已经体现了.
缺点:级数定了就不能乱改了!!
 
我就有这样的控件
 
你到www.codelphi.com中文开发在线上看看,好象是今天才发表了一篇文章
 
你到delphi大学(http://delphibig.home.sohu.com/program.htm)
TipExplorer
分类管理Tips的程序,也是演示如何使用TreeView和ListView的好例子

不知道合适你吗?
 
to:sherman
按照我说的方法应该不会慢的,因为你每次提取的数据不会很多,用SQL来执行应该是很快的
当然,象你说的,遇到大数据库怎么办,也有办法,你在后台开一个线程,让它一点一点
的把数据从数据库中提取出来,写进树里,前端的东西该干吗还干吗,这样就能实现了。
我现在正计划写一个这样的控件,但是最近实在忙,没有时间,等我做完,如果需要,到时
给你一个,不过别闲烂。
 
我的作好了,
http://go7.163.com/luyear/delphi.htm
 
数据结构:id varchar 18 not null primary key ,  
upid varchar 18 not null default 0,
name varchar 20 not null unique,  
desc varchar 80 ,
level smallint not null default 0 (例100 => 1 , 100100 => 2 )

function TDMPUB.treeAdd(var Atree :TTreeView) :boolean;
var node :array of TTreenode;
rootnode : TTreenode;
str0,str :string;
Alevel :integer;
begin
str0 := 'select max(level)'
+ ' from epgroup ';

str := 'select level,groupid,groupupid,groupname,groupdesc'
+ ' from epgroup order by groupid';

with qrypub do begin
close;
sql.Clear;
sql.Add(str0);
open;

if fields[0].AsInteger > 0 then
setlength(node,fields[0].AsInteger+1)
else
exit;

node[0] := Atree.Items.GetFirstNode;

close;
sql.Clear;
sql.Add(str);
open;
while not eof do begin
alevel := fieldbyname('level').asinteger;
node[alevel] := atree.Items.AddChild(node[alevel-1],
fieldbyname('groupid').AsString+'_'+ fieldbyname('groupname').AsString );
next;
end;
result := true;
end;
end;

另:加data指针会更好控制,谁有这部分就代码贴出来吧
 
http://delphi.mychangshu.com
程云的dbtreeview
 
多人接受答案了。
 
后退
顶部