var
    a:TTreeNode;
begin
     a:=treeview1.Selected;
     排序后再treeview1.Selected:=a;
(没试过.)

解决方案 »

  1.   

    楼上的,这样好像不行,TreeView不能被赋值,我以前也遇到过这个问题.
    关注
      

  2.   

      ...
      treeview.clear;
      
      SortTreeView(...);
      
      ...
      
      {定位处理?}
      ...
      

  3.   

    var
        Temp:TTreeNode;
    begin
        Temp := TreeView1.Selected;
        排序;
        Temp.Selected := True;
    end;
      

  4.   

    treeview1.Selected:=a;
    可以这样赋值呀,没错吧?当然a.selected:=true好象更好.
      

  5.   

    我用了TreeView.Clear,所以楼上的a变量的内存地址会释放。行不通!!!
    我有了解决办法,就是用TreeView.Items[i].Text来匹配,如果有则将
    TreeView.Selected := TreeView.Items[i].Text;
    当然,在TreeView的OnChanged事件中要记录Text值到,全局变量。
    谢谢,各位的参与。有问题我们可以相互交流。
      

  6.   

    使用GetNodeAt(x,y)得到指定的Ttreenode的x,y
    使用ScrollBy(x,y)返回到指定的Ttreenode。
    大概是这样,你可以试试