如题!!

解决方案 »

  1.   

    自己注册一个全局热键 alt+f4,然后什么都不做,解决了
      

  2.   

    在窗体上放一个ApplicationEvents控件在Additional页上
    在ApplicationEvents的OnMessage事件中
    begin
      if ((msg.message=WM_SYSCOMMAND) and (msg.wParam=SC_CLOSE)) then
        msg.message:=0; //屏蔽ALT+F4热键
    end;
      

  3.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if (GetKeyState($12)<0) and (GetKeyState($73)<0) then action:=canone;
    end;
      

  4.   

    //屏蔽Alt+F4
    //以下为OnCloseQuery事件
    procedure TForm1.CloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose:=False;
    end;
      

  5.   

    private
        procedure WMClose(var Message: TMessage);message WM_Close;procedure Tform1.WMClose(var Message: TMessage);
    begin
    //not response wm_close message
      if Message.WParam > 0 then
        inherited;
    end;
    //谁也关不了,除非你自己postmessage(handle,wm_close,1,0);
      

  6.   

    procedure TForm1.CloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      CanClose:=False;
    end;
      

  7.   

    form1.KeyPreview:=true;
    procedure Tform1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_F4) and (ssAlt in Shift) then
         key:=char(0)    
    end;
      

  8.   

    可以把Alt+F4作为一个快捷键,赋予空操作呀!
      

  9.   

    这个最好用:
    procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
    begin
      Handled := (GetKeyState(VK_MENU) < 0) and (Msg.CharCode = VK_F4);
    end;
      

  10.   

    procedure TForm1.CloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      abort;
    end;
      

  11.   

    我在增加一条:
    可以对wm_syscommand消息进行处理,然后就可以了,