由根节点开始构造,构造过程中第归构造到没个子孙节点 //构造根 procedure TMain.RootTree(treeview1:ttreeview); var NodeTemp : TTreeNode; pstr : ^string; Query:TADOQuery; begin Query:=TADOQuery.Create(self); query.Connection:=BgConnection; try Treeview1.Items.BeginUpdate; with query do begin SQL.Text :='select top 1 * from xzdm order by xcode'; open; sort:='xcode'; if isempty then exit; NodeTemp := nil; while not eof do begin new(pstr); pstr^ := FieldByName('key').AsString; NodeTemp :=treeview1.Items.AddObject(nil, trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr); Next; end; end; while NodeTemp <> nil do begin CreateTree(Query, NodeTemp,treeview1); NodeTemp:=NodeTemp.getPrevSibling; end; treeview1.Items.EndUpdate; finally Query.Free; end; end;//构造树 procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode); var pstr1, pstr2 : ^string; NodeTemp : TTreeNode; begin pstr1 := NodeParent.Data; with QuerySource do begin close; sql.Clear; sql.Text:='SELECT key,xcode,xname FROM xzdm WHERE parent = ' + '''' + pstr1^ + ''''; open; if isempty then exit; NodeTemp := nil; while not eof do begin new(pstr2); pstr2^ := FieldByName('key').AsString; NodeTemp := TreeView1.Items.AddChildObject(NodeParent, trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr2); Next; end; end; while NodeTemp <> nil do begin CreateTree(QuerySource,NodeTemp,treeview1); NodeTemp := Nodetemp.getPrevSibling; end; end;
//构造根
procedure TMain.RootTree(treeview1:ttreeview);
var
NodeTemp : TTreeNode;
pstr : ^string;
Query:TADOQuery;
begin
Query:=TADOQuery.Create(self);
query.Connection:=BgConnection;
try
Treeview1.Items.BeginUpdate;
with query do
begin
SQL.Text :='select top 1 * from xzdm order by xcode';
open;
sort:='xcode';
if isempty then exit;
NodeTemp := nil;
while not eof do
begin
new(pstr);
pstr^ := FieldByName('key').AsString;
NodeTemp :=treeview1.Items.AddObject(nil,
trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr);
Next;
end;
end;
while NodeTemp <> nil do
begin
CreateTree(Query, NodeTemp,treeview1);
NodeTemp:=NodeTemp.getPrevSibling;
end;
treeview1.Items.EndUpdate;
finally
Query.Free;
end;
end;//构造树
procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode);
var
pstr1, pstr2 : ^string;
NodeTemp : TTreeNode;
begin
pstr1 := NodeParent.Data;
with QuerySource do
begin
close;
sql.Clear;
sql.Text:='SELECT key,xcode,xname FROM xzdm WHERE parent = ' + '''' + pstr1^ + '''';
open;
if isempty then exit;
NodeTemp := nil;
while not eof do
begin
new(pstr2);
pstr2^ := FieldByName('key').AsString;
NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr2);
Next;
end;
end;
while NodeTemp <> nil do
begin
CreateTree(QuerySource,NodeTemp,treeview1);
NodeTemp := Nodetemp.getPrevSibling;
end;
end;
www.myjinsui.com/down