两种方法:
1。用第三方控件,如http://www.csdn.net/dev/Delphi/Samples/hotkeys.zip中提供的,解开后在Source\Components\SheAr.dpk,有原码,很好用,并且支持动画图标。2。在弹出菜单时激活你的窗体(Active),原因好象是Delphi的Bug.希望对你有帮助。

解决方案 »

  1.   

    两种方法:
    1。用第三方控件,如http://www.csdn.net/dev/Delphi/Samples/hotkeys.zip中提供的,解开后在Source\Components\SheAr.dpk,有原码,很好用,并且支持动画图标。2。在弹出菜单时激活你的窗体(Show),原因好象是Delphi的Bug.希望对你有帮助。
      

  2.   

    两种方法:
    1。用第三方控件,很多,如http://www.csdn.net/dev/Delphi/Samples/hotkeys.zip中提供的,解开后在Source\Components\SheAr.dpk,有原码,很好用,并且支持动画图标。2。
    位置:
        定义 Point:TPoint;
        调用GetCursorPos(Point);
        Point.x, Point.y即为鼠标相对于屏幕的坐标,可用此坐标直接设置菜单位置。菜单问题:
        在弹出菜单前激活窗体(用Windows API:SetForeGroundWindow),原因好象是Delphi的Bug(见《Delphi 3 从入门到精通》,电子工业出版社).代码如下:
      if Screen.ActiveForm<>nil then
        SetForeGroundWindow(Screen.ActiveForm.Handle)
      else
        SetForeGroundWindow(Form1.Handle);  //Form1:当前窗体  GetCursorPos(Point);
      PopupMenu.Popup(Point.X, Point.Y);  //PopupMenu:要弹出的菜单-----------------
    希望对你有帮助。