我给TreeView设了一个右键菜单,在TreeView的子项中单击右键时,我怎么知道被单击的是哪个子项。

解决方案 »

  1.   

    procedure TForm1.MenuItemClick(Sender: TObject);
    begin
      if not Assigned(TreeView1.Selected) then Exit;
      ShowMessage(TreeView1.Selected.Text);
    end;
      

  2.   

    procedure TForm1.MenuItemClick(Sender: TObject);
    begin
      if TreeView1.Selected=nil then Exit;
      ShowMessage(TreeView1.Selected.Text);
    end;
      

  3.   

    TreeView有两个函数可以用来获取鼠标位置的节点。
    一个是getNodeAt(好久没用Delphi了,不太记得了),看帮助吧,有代码示例。
      

  4.   

    那怎么才能使右键有选定子项的功能。
    将treeview里的rightClickSelected属性改为true
      

  5.   

    那怎么才能使右键有选定子项的功能。RrightClickSelected:=true;
      

  6.   

    有一个GetNodeAT方法,调用此方法可以得到一个结点,这个功能更底层更强大吧。
      

  7.   

    还有一个问题。我RrightClickSelected:=true;以后。
    用右键单击结点的时候,我用TreeView1.Selected取得的仍然是左键单击的结点。
    我发现,用右键单击以后,那个结点变蓝以后,但是虚线框还在那个被左键单击的结点。
    可能是那个虚线框表示的是选中的。
     怎么能取得右键单击选中的接点。