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;

解决方案 »

  1.   

    先treeview.Visible := false,作完后再treeview.Visible := true可以大大加快速度,也基本上看不出闪烁来.
    速度慢是因为treeview在不停地刷新显示.
      

  2.   

    Treeview.Items.BeginUpdate;//在选之前用
    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;  //在选过之后用
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    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;
      

  4.   

    虽然没有实现过,但肯定用API:SendMessage是可以实现的,你可以查一下TreeView的消息常数(应该是以CM_开头的)
      

  5.   

    给你两个提示的例子:
    SendMessage(listbox.handle,lb_SetTopIndex,15,0);//这个可让listbox滚到15条
     SendMessage(memo.handle,WM_VSCROLL, SB_PAGEDOWN,0);//这个让Memo下翻页
      

  6.   

    以上同志们的方法都只能在同一进程内使用,而且是在作Windows可以做的重复多余的笨工作
      

  7.   

    终于帮你找到了,在代码窗口贴  TreeView_Expand
    或TVM_EXPAND按F1看看,不够的话再点帮助窗口中的Group键,至于写消息真的没时间了,你自己试试吧!
      

  8.   

    做出来后也请贴出来共享一下,TMD,忙死了!
      

  9.   

    小弟搞出来了,来者有分!
    visible,beginupdate-endupdate可以避免闪烁,但是显然后者更合适
    至于无论是sendmessage还是treeview_expand还是node.expand,都需要for循环判断,各位没有更好的方法,因此注定了速度没有明显差别,如果nodes很多,只好让用户等了。
    唯一的办法(我能想到的)是先解决显示出来的那些node,然后在后台处理其他的(最好再开一个进程)。