X
xiao_q654321
Unregistered / Unconfirmed
GUEST, unregistred user!
问题如下:
在Treeview中增加节点速度很快,但从中删除节点速度要慢得多
(即使用了BeginUpdate/EndUpdate也不起作用),不知如何提高删除速度?
示例代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
TmpNode,FirstNode:TTreeNode;
i:integer;
begin
Begintime:=gettickcount;
FirstNode:=TreeView1.Items.AddFirst(nil,'0');
for i:=1 to 400 do
begin
TmpNode:=TreeView1.Items.AddChild(FirstNode,IntToStr(i));
TmpNode:=TreeView1.Items.AddChild(TmpNode,IntToStr(i));
TmpNode:=TreeView1.Items.AddChild(TmpNode,IntToStr(i));
end;
endtime:=gettickcount;
label1.Caption :=inttostr(endtime-begintime);//向树状图中增加1201个节点
//并显示所需时间(大约为0.17s)
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
Begintime:=gettickcount;
treeview1.Items.BeginUpdate;
for i:=TreeView1.Items.Count -1 downto 0 do
TreeView1.Items.Delete;
treeview1.Items.EndUpdate;
endtime:=gettickcount;
label2.Caption :=inttostr(endtime-begintime);//一个一个的删除所有节点
//显示所需时间(大约需要30s)
end;
有没有提高删除速度的办法?
——请看清楚再回答,这里只是一个示例,表示速度的差异,实际上我并不是要删除所有
的节点,所以必须遍历并一个一个删除。
在Treeview中增加节点速度很快,但从中删除节点速度要慢得多
(即使用了BeginUpdate/EndUpdate也不起作用),不知如何提高删除速度?
示例代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
TmpNode,FirstNode:TTreeNode;
i:integer;
begin
Begintime:=gettickcount;
FirstNode:=TreeView1.Items.AddFirst(nil,'0');
for i:=1 to 400 do
begin
TmpNode:=TreeView1.Items.AddChild(FirstNode,IntToStr(i));
TmpNode:=TreeView1.Items.AddChild(TmpNode,IntToStr(i));
TmpNode:=TreeView1.Items.AddChild(TmpNode,IntToStr(i));
end;
endtime:=gettickcount;
label1.Caption :=inttostr(endtime-begintime);//向树状图中增加1201个节点
//并显示所需时间(大约为0.17s)
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
Begintime:=gettickcount;
treeview1.Items.BeginUpdate;
for i:=TreeView1.Items.Count -1 downto 0 do
TreeView1.Items.Delete;
treeview1.Items.EndUpdate;
endtime:=gettickcount;
label2.Caption :=inttostr(endtime-begintime);//一个一个的删除所有节点
//显示所需时间(大约需要30s)
end;
有没有提高删除速度的办法?
——请看清楚再回答,这里只是一个示例,表示速度的差异,实际上我并不是要删除所有
的节点,所以必须遍历并一个一个删除。