S
sushicheng
Unregistered / Unconfirmed
GUEST, unregistred user!
我用递归法生成Treeview节点.但需要1分多钟.请问高手该如何处理.相信各位
肯定遇到过同样的问题.Access数据库.记录有4000条.很急.老板已经催几次了.
他看过久其的产品.人家只需3,4秒.分全部捧上.
代码如下:
procedure TJdhzFrm.InitArray(var arr: TArr);//放入数组.
var
i:integer;
sql:string;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select * from dwqkb');
Query.Open;
Query.First;
SetLength(arr,Query.RecordCount);
i:=0;
while not Query.Eof do
begin
arr.id:=Query.fieldbyname('dwtydm').AsString;
arr.preId:=Query.fieldbyname('dm1').AsString;//.Fields[1].AsString;
arr.Dwmc:=Query.fieldbyname('dwmc').AsString;
Inc(i);
Query.Next;
end;
end;
procedure TJdhzFrm.CreateTree(var arr: TArr);
var
pTNodeInfo;
procedure CreateTree(PreTNodeInfo;preNode:TTreeNode;var arr:TArr);
var
pInfoTNodeInfo;
node:TTreeNode;
i:integer;
begin
i:=length(arr)-1;
while i>=0 do
begin
new(pInfo);
pInfo:=@arr;
if pInfo.preId=pre.id then
begin
node:=treeview1.Items.AddChild(preNode,pInfo.id+'|'+pInfo.Dwmc);
node.Data:=pInfo;
CreateTree(pInfo,node,arr);
end;
i:=i-1;
end;
end;
begin
new(p);
p.id:=s;
createTree(p,nil,arr);
treeview1.FullExpand;
end;
procedure TJdhzFrm.Button1Click(Sender: TObject);//
var
arr:Tarr;
begin
Initarray(arr);
treeview1.Items.BeginUpdate;
CreateTree(arr);
treeview1.Items.EndUpdate;
end;
肯定遇到过同样的问题.Access数据库.记录有4000条.很急.老板已经催几次了.
他看过久其的产品.人家只需3,4秒.分全部捧上.
代码如下:
procedure TJdhzFrm.InitArray(var arr: TArr);//放入数组.
var
i:integer;
sql:string;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select * from dwqkb');
Query.Open;
Query.First;
SetLength(arr,Query.RecordCount);
i:=0;
while not Query.Eof do
begin
arr.id:=Query.fieldbyname('dwtydm').AsString;
arr.preId:=Query.fieldbyname('dm1').AsString;//.Fields[1].AsString;
arr.Dwmc:=Query.fieldbyname('dwmc').AsString;
Inc(i);
Query.Next;
end;
end;
procedure TJdhzFrm.CreateTree(var arr: TArr);
var
pTNodeInfo;
procedure CreateTree(PreTNodeInfo;preNode:TTreeNode;var arr:TArr);
var
pInfoTNodeInfo;
node:TTreeNode;
i:integer;
begin
i:=length(arr)-1;
while i>=0 do
begin
new(pInfo);
pInfo:=@arr;
if pInfo.preId=pre.id then
begin
node:=treeview1.Items.AddChild(preNode,pInfo.id+'|'+pInfo.Dwmc);
node.Data:=pInfo;
CreateTree(pInfo,node,arr);
end;
i:=i-1;
end;
end;
begin
new(p);
p.id:=s;
createTree(p,nil,arr);
treeview1.FullExpand;
end;
procedure TJdhzFrm.Button1Click(Sender: TObject);//
var
arr:Tarr;
begin
Initarray(arr);
treeview1.Items.BeginUpdate;
CreateTree(arr);
treeview1.Items.EndUpdate;
end;