?? 遞歸自動生成層次樹.txt
字號:
自動生成分層樹
數據庫結構
id parent name .....flag
1 0 str 1
2 1 str 2
flag 是標記字段,你可以標記不同的內容,
pinfo=^nodepro;
nodepro=record
id:integer;
str:string;
flag:integer;
end;
select * from flb
where (parent=:@parentid) and (flag=:@flag)
order by flb_id
Faddtreenode(Mtree:Ttreeview;Mnode:Ttreenode;fieldid,fieldstr,fieldflag:string;parentid,flagid:integer);
var
childnum:integer;
nd,nd1:Tfctreenode;
begin
with mydata.Aqy_flb do
try
if active then close;
parameters[0].Value:=parentid;
parameters[1].Value:=flagid;
prepared:=true;
open;
if not isempty then
begin
disablecontrols;
first;
nd:=nil;
while not eof do
begin
new(info);
info.id:=fieldbyname(fieldid).Asinteger;
info.str:=fieldbyname(fieldstr).asstring;
info.flag :=fieldbyname(fieldflag).AsInteger ;
nd:=Mtree.Items.AddChildobject(Mnode,info.str,info);
next;
end;
nd1:=nd.parent; //返回到所加節點的父節點
nd:=nd1.GetFirstChild; //父節點的第一個葉節點
for childnum:=0 to nd1.Count-1 do
begin
Faddtreenode(Mtree,nd,fieldid,fieldstr,fieldflag,Pinfo(nd.data)^.id,flagid);
nd:=nd.GetNextSibling; // 葉節點的同級節點
end;
enablecontrols;
end else exit ;
prepared:=false;
except
messagebox(handle,'操作數據時出現錯誤!','錯誤',mb_ok);
end;
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -