如何实现TREEVIEW从数据库里取数据生成树结构? 我只知道如何生成两层的树结构:如1 |---1 ---2 2 |---5可是我想生成三层,或四层就不懂了。如1 |---1 ---2 2 |---5 |---11 ---51请教 谢谢!问题简单,分数也不多,但请帮忙,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 欢迎大家加入DELPHI程序员群1805366 ,一起交流技术! 1首先,在单元接口部分声明一记录类型及其指针,用来保存你的树节点需传递的信息。type pchar=^str; str=record tcaption:string; num:integer; end;然后用递归写一生成树的函数,这里要注意算法了2可以试试第三方控件ExpressDBTree 前段時間剛問過這個問題,已經解決了,代碼如下----------------數據表------------------id upid name1 0 一級目錄13 1 二級目錄12 3 三級目錄15 0 一級目錄24 5 二級目錄21 0 一級目錄3----------------程序如下------------------//定義目錄樹指針type pmyid = ^Tpmyid; Tpmyid = record nodeid: string; nodename: string; end;...........//遞歸載入子目錄procedure TfrmMain.ReadNode(ownNode: TTreeNode; NodeId: string);//OwnNode:Pater node NodeId:self nodeid;var curNode: TtreeNode; curID, curName: string; adoquery: TAdoQuery; myid: pmyid;begin adoquery := Tadoquery.create(parent); adoquery.Connection := AdoCon; adoquery.sql.text := 'select * from tree1 where up_id=''' + NodeID + ''''; with adoquery do begin open; first; while not eof do begin curID := FieldByName('id').AsString; curName := fieldByName('Crop_name').AsString; new(myid); myid^.nodeid := curID; myid^.nodename := curName; curNode := treeview1.Items.AddChildObject(ownNode, curName, myid); ReadNode(curNode, curid); next; end; close; free; end;end;//載入根目錄procedure TfrmMain.LoadData;var CurNode:TTreeNode; MyID:pMyID;begin new(MyID); MyID^.nodeid:='0'; CurNode:=Treeview1.Items.AddChildObject(nil,'公司',MyID); //?入根?? ReadNode(CurNode,'0');end;----------------------------------------- 如何实现字幕向上翻滚效果??? 如何用DELPHI区分彩色图和黑白图(多色与单色)?? 今天混了一下午CSDN,散200分 DELPHI怎么获取EXCEL文件的工作表个数呀? 存储过程请教 我怎么创建方法 怎样删除动态数组中的某个元素? 怎么实现BMP到JPG的转换 怎样在天网个人防火墙中设置,让外面的人只能访问我WWW服务的指定的网址。( 如何将Panel控件的四个角去掉?就是像圆形的一样. 有谁能发给我一个RAVE临时表打印的例子啊!我在网上找了好久都没找着,难过! &&&&&&&&&&&&心情是在不爽!!!,散分&&&&&&&&&&&&&&&&&&
首先,在单元接口部分声明一记录类型及其指针,用来保存你的树节点需传递的信息。
type
pchar=^str;
str=record
tcaption:string;
num:integer;
end;
然后用递归写一生成树的函数,这里要注意算法了
2
可以试试第三方控件
ExpressDBTree
----------------數據表------------------
id upid name
1 0 一級目錄1
3 1 二級目錄1
2 3 三級目錄1
5 0 一級目錄2
4 5 二級目錄2
1 0 一級目錄3
----------------程序如下------------------
//定義目錄樹指針
type
pmyid = ^Tpmyid;
Tpmyid = record
nodeid: string;
nodename: string;
end;
...........
//遞歸載入子目錄
procedure TfrmMain.ReadNode(ownNode: TTreeNode; NodeId: string);
//OwnNode:Pater node NodeId:self nodeid;
var
curNode: TtreeNode;
curID, curName: string;
adoquery: TAdoQuery;
myid: pmyid;
begin
adoquery := Tadoquery.create(parent);
adoquery.Connection := AdoCon;
adoquery.sql.text := 'select * from tree1 where up_id=''' + NodeID + '''';
with adoquery do
begin
open;
first;
while not eof do
begin
curID := FieldByName('id').AsString;
curName := fieldByName('Crop_name').AsString;
new(myid);
myid^.nodeid := curID;
myid^.nodename := curName;
curNode := treeview1.Items.AddChildObject(ownNode, curName, myid);
ReadNode(curNode, curid);
next;
end;
close;
free;
end;
end;
//載入根目錄
procedure TfrmMain.LoadData;
var
CurNode:TTreeNode;
MyID:pMyID;
begin
new(MyID);
MyID^.nodeid:='0';
CurNode:=Treeview1.Items.AddChildObject(nil,'公司',MyID); //?入根??
ReadNode(CurNode,'0');
end;
-----------------------------------------