如题

解决方案 »

  1.   

    1、设置popupmenu1的autopopup属性为false;
    2、设置form的popupmenu属性为popupmenu1
    3、
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    if (ssShift in Shift) then
    self.PopupMenu1.Popup (self.Left +x,self.Top +y);end;
      

  2.   

    if shift=[ssShift] then     
             showmessage('只按下了shift');
      

  3.   

    我想前面两位大侠是误会了我的意思,
    我是问怎么判断在点击popupmenu某一项menuitem的
    同时是否按下了shift键,而不是怎么去控制弹出。
      

  4.   

    这样应该可以,放到click事件中
    if getkeystate(vk_Rshift)<0 then
        showmessage('你按下了右shift键');//左shift换成vk_Lshift.
      

  5.   

    ssl2000(大宋)办法不错,已经搞定了,谢谢!