比如我现在定位在第二层的第3个节点,我现在在相同的层上又增加了一个节点,提交后重新生成树,可是鼠标没法直接定位到新的节点或原来的节点,请问如何定位呢?我已经记下原来的index了,但我不知道用哪个属性定位,谢谢指点!!

解决方案 »

  1.   

    方法不止一种,最万能的方法是利用每个结点的DATA属性,比如在该属性上写个标志啊什么的,你的需求简单只需要写个INTEGER类似就可以了,然后遍历你的TREEVIEW,检查该属性,即完成定位。DATA属性上还可以附加上一个结构,那样记录的信息会更全。
      

  2.   

    每个node要有一个唯一的标识,可以用data属性保存,然后遍历节点,找到根据data值找到节点,然后设置为selected
      

  3.   

    我记下了Parent.Index和Index,可是再用啥语句定位啊?
      

  4.   

    ATreeNode.selected := True;
    Treeview.selected := ATreeNode;
      

  5.   

    Treeview.selected := Treeview.items[oldindex];

    newnode:=Treeview.add(oldnode,'new');
    Treeview.selected := newnode;
      

  6.   

    找到当前节点,selected属性设为true也行。
    treeview1.Items.Item[0].selected := True;
      

  7.   

    var node,newNode:TTreeNode;
    begin
      node:=tv1.Selected;
      newNode:=tv1.Items.AddChild(node.Parent,'滑入深渊');
      tv1.SetFocus;
      newNode.Selected:=True;
    end;
    平台XE,treeView的个别属性应该和D6、D7不同。注意Node本身的属性来定位,treeView的selected属性定位,需要首先把TreeView来SetFocus;
      

  8.   

    是想看见效果,需要tv1.SetFocus;
    不调用tv1.SetFocus;,treeview的焦点也在那个节点上
      

  9.   

    给你一段代码:  
      for i:=0 to TreeView1.items.count-1 do
      begin
        NowNode:=fcTreeView1.items[i];        
        if NowNode.Data=S then
        begin
          NowNode.selected;
          break;
        end;
      end;