在stringgrid中的鼠标事件中写了代码: pm.popup(X, Y);
 
 结果弹出的菜单却不是鼠标所在的位置?
为什么?怎么改呢?
谢谢!

解决方案 »

  1.   

    为虾米不直接用popmenu控件捏?
      

  2.   

    procedure TTextOfSearchForm.sgSearchMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
     if shift=[ssRight] then
       begin
        pmIntDel.Popup(X, Y);
       end;
    end;就是这一段。怎么改?
      

  3.   

    pmIntDel 就是 popmenu控件
      

  4.   

    在鼠标的点击事件里写代码:
    var
      point: TPoint;
    begin
      GetCursorPos(&point);
      ...
      pm.popup(point.X, point.Y);
      ...
    end;
      

  5.   

    GetCursorPos(&point);请问这一句是什么意思?
    为什么要这样做?
      

  6.   

    pt := Self.ClientToScreen(X, Y);
    pm.popup(pt.X, pt.Y);pm的popup的坐标是相对与整个屏幕的,而(X,Y)是相对与该控件的,
    所以用要先转换一下,
    至于GetCursorPos,是得到鼠标在屏幕中的位置
      

  7.   

    pm.popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
      

  8.   

    将你要弹出窗口的控件的popumenu属性设为PopupMenu1,然后就行了
    什么都不用管,更不用写代码,晕