for I:=0 to TeeeView.Item.Count-1 do begin
if TreeView.Items.Item[I].Text='要选的' then begin
TreeView.Items.Item[I].Expand(False);
Exit;
end;
end;
if TreeView.Items.Item[I].Text='要选的' then begin
TreeView.Items.Item[I].Expand(False);
Exit;
end;
end;
速度慢是因为treeview在不停地刷新显示.
for i:=0 to TeeeView.Item.Count-1 do begin
if TreeView.Items.Item[i].Text='要选的' then
begin
TreeView.Selected := TreeView.Items.Item[i];
Break;
end;
end;
TreeView.Items.EndUpdate; //在选过之后用
var
i:integer;
begin
for i:=0 to TreeView.Items.Count-1 do
begin
if TreeView.Items.Item[i].Text='要选的' then
begin
TreeView.Items.Item[i].Selected:=True;
Break;
end;
TreeView.Items.Item[i].Expand(True);
end;
SendMessage(listbox.handle,lb_SetTopIndex,15,0);//这个可让listbox滚到15条
SendMessage(memo.handle,WM_VSCROLL, SB_PAGEDOWN,0);//这个让Memo下翻页
或TVM_EXPAND按F1看看,不够的话再点帮助窗口中的Group键,至于写消息真的没时间了,你自己试试吧!
visible,beginupdate-endupdate可以避免闪烁,但是显然后者更合适
至于无论是sendmessage还是treeview_expand还是node.expand,都需要for循环判断,各位没有更好的方法,因此注定了速度没有明显差别,如果nodes很多,只好让用户等了。
唯一的办法(我能想到的)是先解决显示出来的那些node,然后在后台处理其他的(最好再开一个进程)。