⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 递归自动生成层次树.txt

📁 大量Delphi开发资料
💻 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 + -