procedure ReadTree(tnode: TTreeNode; Fvalue: Integer);
procedure TForm1.Button5Click(Sender: TObject); begin ReadTree(nil,0); end;
procedure TForm1.ReadTree(tnode:TTreeNode;Fvalue: Integer); Var i: integer; Flist:TStringList; Flist1:TStringList; s,str:string; snode:TTreeNode; begin with ADOQuery1 do begin close; sql.clear; sql.add('select dep_parent,dep_serial,dep_name from dt_dep where dep_parent=:v1 '); Parameters.ParamByName('V1').Value:=Fvalue; Open; First; end; Flist:=TStringList.Create; Flist1:=TStringList.Create; while not ADOQuery1.eof do begin Flist.Add(trim(ADOQuery1.fieldbyname('dep_name').asstring)); Flist1.Add(ADOQuery1.fieldbyname('dep_serial').AsString); ADOQuery1.next; end; for i:= 0 to flist.Count-1 do begin s:=flist1.Strings[i]; str:=flist.Strings[i]; snode:=Treeview1.items.addchild(tnode,str); ReadTree(snode,strtoint(s)); end; flist.free; flist1.free; end;
如果嫌这样麻烦或数据量大对速度要求严格,可以摒弃类似这种递归的方法 可先查询生成文件 Tree.txt 然后 LoadFromFile() 来实现