当前位置:Gxlcms > 数据库问题 > 根据数据库结构生成RzCheckTree

根据数据库结构生成RzCheckTree

时间:2021-07-01 10:21:17 帮助过:31人阅读

TUIOperate.FillTree(RzCheckTree: TRzCheckTree); var findq: TADOQuery; node: TTreeNode; //这个方法是根据记录的id字段值,查找RzCheckTree上的父节点 function FindParentNode(id:Integer):TTreeNode; var i:Integer; begin Result := nil; for i := 0 to RzCheckTree.Items.Count - 1 do begin //比较Node的Data值和记录的id值 if Integer(RzCheckTree.Items[i].Data) = id then begin Result := RzCheckTree.Items[i]; Break; end; end; end; begin findq := TADOQuery.Create(nil); findq.Connection := controler.DataConnect.Connection; //这里的Connection指向你的数据连接 try RzCheckTree.Items.BeginUpdate; RzCheckTree.Items.Clear; //选出所有记录,并按parentid排序,这样可以保证先添加顶级节点,在下级记录添加时,总能找到父节点 findq.SQL.Text := SELECT * FROM [Catalog] order by parentid,id; findq.Open; while not findq.Eof do begin //如果是最顶级,直接添加到RzCheckTree if findq.FieldByName(parentid).AsInteger = -1 then //将id值,保存在Node的Data中,以便查找用 RzCheckTree.Items.AddObject(nil,findq.FieldByName(CatalogName).AsString,Pointer(findq.FieldByName(id).AsInteger)) else begin //查找上级节点 node := FindParentNode(findq.FieldByName(parentid).AsInteger); if node <> nil then RzCheckTree.Items.AddChildObject(node,findq.FieldByName(CatalogName).AsString,Pointer(findq.FieldByName(id).AsInteger)); end; findq.Next; end; finally findq.Free; RzCheckTree.Items.EndUpdate; end; end;

 

根据数据库结构生成RzCheckTree

标签:效率   执行   tac   结构   addchild   items   cti   upd   treenode   

人气教程排行