在ContextPopup事件中访问MousePos参数获得光标位置,然后GetNodeAt方法获得当前光标所在的节点,然后弹出相对应的菜单。

解决方案 »

  1.   

    对于ListView,用GetItemAt方法获得节点。
      

  2.   

    Treeview or Tlistview
    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      HT : THitTests ;
      p:string;
    begin
    with TreeView1 do
    begin
       HT:= GetHitTestInfoAt(X ,Y ) ;
       if (button = mbRight) and (htOnRight in Ht)then
       begin
         treeview1.PopupMenu:=popupMenu1;//在这里,你可以给它动态的给TpopupMenu 或是再新建一个;
         getNodeat(x,y).Selected;
         P:='这是'+getNodeat(x,y).text+'结点的快捷菜单';
         showmessage(p);
       end else
       treeview1.PopupMenu:=nil;
    end;
    end;