我在程序里面已设置了不能使用ALT+F4组合键失效,只能通过关闭按钮关闭程序
因为如果不设置成失效,用这个组合键关闭时,也会报错如下:
工程检测到错误类EAccessViolation,失效代码如下:
procedure TForm10.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key=VK_F4) and (ssAlt in shift) then// 使窗体的 Alt+F4 快捷键(关闭窗体)失效
Key :=0;
end;这样可以使得用户在使用时不能通过ALT+F4组合键来关闭窗体,可是如果在任务栏右击运行的程序,然后点“关闭”时就出错了,弹出很多的窗口,内容如下:
标题为:工程名称
Access violation at address D6C2C4CB.Read of address D6C2C4CB.
  我想使用鼠标右击关闭可以关闭,但不能使用ALT+F4组合键关闭,这样可以做到吗?请高手指点,谢谢!

解决方案 »

  1.   

    已把 form 的Borderstyle属性设为bsNone
    关闭按钮是自己另外加的一个BUTTON,我在设置关闭按钮时,就弹出另外一窗体,然后再单击是才可以关闭
    具体代码如下
    // 这是第一个窗体也就主窗上的关闭按钮
    procedure TfrmMain.SpeedButton6Click(Sender: TObject);
    begin
      Application.CreateForm(TForm8, Form8);
      form8.Show;
    end;
    // 这是另外一个窗体的“是”按钮关闭窗体及整个程序
    procedure TForm8.ToolButton2Click(Sender: TObject);
    begin
      frmMain.Comm1.StopComm;
      frmMain.Comm1.Free;
      frmMain.Timer1.Free;
      frmMain.Timer2.Free;
      frmMain.Timer3.Free;
      frmMain.Timer4.Free;
      frmMain.Timer5.Free;
      frmMain.WindowsMediaPlayer1.close;
      frmMain.WindowsMediaPlayer1.Free;
      form8.Close;
      frmMain.Close;
    end;
      

  2.   


      frmMain.Comm1.StopComm;
      frmMain.Comm1.Free;
      frmMain.Timer1.Free;
      frmMain.Timer2.Free;
      frmMain.Timer3.Free;
      frmMain.Timer4.Free;
      frmMain.Timer5.Free;
      frmMain.WindowsMediaPlayer1.close;
      frmMain.WindowsMediaPlayer1.Free;这段应该放在frmMain.Close里面
    而且并不是很必要(frmMain.Comm1.StopComm;这个到有需要)光从这段也看不出产生问题的地方
      

  3.   

    timer事件,线程事件,释放timer调用释放掉的资源 
      

  4.   

    DELPHI如何禁用在任务栏用鼠标右键关闭呢?
      

  5.   

     frmMain.Comm1.StopComm;
      frmMain.Comm1.Free;
      frmMain.Timer1.Free;
      frmMain.Timer2.Free;
      frmMain.Timer3.Free;
      frmMain.Timer4.Free;
      frmMain.Timer5.Free;
      frmMain.WindowsMediaPlayer1.close;
      frmMain.WindowsMediaPlayer1.Free;
    这段代码一放入formclose中