我做了一个treeview操作树,现在我想在我的程序主菜单中关联这个树结构的操作(比如在树结构中有一个数据远传管理项,然后我在主菜单中有一个数据管理项,怎样实现点击菜单中的数据管理项,等同于树结构中的数据管理项),不能用treeview1.item[1].selected:=true;因为如果这样的话,我要是在树结构中加了一项,这个数字就变了,有没有其他好办法呀?

解决方案 »

  1.   

    你可以给每个节点分配Data值,然后再点击菜单时只要查找相应的的Data值即可。
      

  2.   

    转载
    我这个函数可以实现对某个分支的遍历,如果你想遍历整个TreeView,用Count和AbsoluteIndex做个循环
    就可以了,就不用什么遍历了,看看对你是否有用。
    procedure TForm1.Ransack(iParentIndex : Integer);
                 //iParentIndex是你所要遍历的那个分支的
                 //根节点的绝对序号,就是该节点的AbsoluteIndex属性
    var
     ParentNode, ChildNode, TempNode : TTreeNode;
     //父节点  子节点   临时中转节点
    begin
     ParentNode := TreeView1.Items.Item[iParentIndex];
     ChildNode := ParentNode.getFirstChild;
     while ChildNode <> nil do //找到第一个子节点了
     begin
      //-----------------------------
      Memo1.Lines.Add(ChildNode.Text);
      //这里是找到子节点后你的处理代码
      //-----------------------------
      TempNode := ChildNode.getFirstChild;
      if TempNode <> nil then //如果还有子节点,则递归
      begin
       Ransack(ChildNode.AbsoluteIndex);
      end;
      TempNode := ChildNode;
      ChildNode := ParentNode.GetNextChild(TempNode);
     end;
    end;
      

  3.   

    我已经给data赋值了,然后怎样查找呀?
      

  4.   

    to:(AWolfBoy(龍行江湖))
    赋值都错了,怎么赋值呀?
    能不能说得清楚一些呀
      

  5.   

    要用Pointer进行强制转换。
    例:
     testNode.Data := Pointer(menucaption);
      

  6.   

    testNode.Data :=pointer(10)
    这样是不是可以,还有怎样取出来?
    testNode.Data^这样好像取不出来呀,