procedure TForm1.Timer1Timer(Sender: TObject);
var keystate:TKeyboardState;
begin
    GetKeyboardState(keystate);
    if keystate[vk_rbutton] and $80 <>0 then
    exit;
end;

解决方案 »

  1.   

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin  if button=mbleft then
          exit
      else
      begin
        PopupMenu1.popup(Self.Left+Button1.Left+Button1.Width+10,Self.Top+Button1.top+Button1.Height-30);
        end;end;
      

  2.   

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin  if button=mbleft then
          exit
      else
      begin
        PopupMenu1.popup(Self.Left+Button1.Left+Button1.Width+10,Self.Top+Button1.top+Button1.Height-30);
        end;end;
      

  3.   

    截取form的鼠标消息,然后判断,如果是右键消息,则将该消息设置为0。
    procedure My_FormOperate(var Message: TMessage); message WM_MBUTTONDOWN;procedure TForm_Main.My_FormOperate(var Message: TMessage);
    begin
      Message.??? = 0
    end;
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
       procedure MyProcedure(var Msg: TMsg; var Handled: Boolean);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure TForm1.MyProcedure(var Msg: TMsg; var Handled: Boolean);
     begin
       if Msg.message=WM_RBUTTONDOWN then
          Msg.message:=WM_NULL;
     end;
    procedure TForm1.FormShow(Sender: TObject);
    begin
     Application.OnMessage:=MyProcedure;
    end;end.