如何拦截Form中的系统关闭按钮事件 ( 积分: 100 )

  • 主题发起人 主题发起人 catfox
  • 开始时间 开始时间
C

catfox

Unregistered / Unconfirmed
GUEST, unregistred user!
关闭按钮可见, 但我想当用户点击关闭按钮时,拦截关闭事件, 自己做处理<br><br>(这个问题应该有答过的, 可惜全文检索用不了)
 
关闭按钮可见, 但我想当用户点击关闭按钮时,拦截关闭事件, 自己做处理<br><br>(这个问题应该有答过的, 可惜全文检索用不了)
 
在OnClose事件中可以处理
 
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>begin<br> &nbsp;If application.MessageBox ('是否要退出本系统?',pChar('提示信息'),mb_yesno+mb_iconquestion)=idyes then<br> &nbsp; &nbsp;canclose:=true<br> &nbsp;Else<br> &nbsp;Begin<br> &nbsp; &nbsp;canclose:=false;<br> &nbsp; &nbsp;//...<br> &nbsp;end;<br><br>end;
 
鉴于某些原因, 我要拦截系统关闭的事件。。。<br><br>不能只在OnClose或OnCloseQuery中处理就可以解决问题
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);<br>begin<br> &nbsp;if Application.MessageBox('确实要关闭系统吗?','系统询问',MB_YESNO+MB_ICONQUESTION)=idyes then<br> &nbsp; &nbsp;action:=caFree<br> &nbsp;else<br> &nbsp; &nbsp;action:=caNone;<br>end;
 
捕捉系统关闭的消息
 
to xianguo<br> &nbsp; 我就是问怎么用代码实现。。。。
 
procedure myMessage(var Msg: TWMSysCommand); message WM_SYSCOMMAND;<br><br>procedure TForm1.myMessage(var Msg: TWMSysCommand);<br>begin<br> &nbsp;if Msg.CmdType = SC_CLOSE then<br> &nbsp; begin<br> &nbsp; &nbsp; ...<br> &nbsp; end;<br> &nbsp;inherited;<br>end;
 
procedure WMClose(var msg:TMessage); message WM_CLOSE;<br><br>procedure TForm1.WMClose(var msg: TMessage);<br>begin<br> &nbsp;...<br>end;
 
把这些事件定义到Actionlist中就行了,然后把关闭按钮的Action属性设为Actionlist中的Action就行了,只要是关闭就调用这个Action就行了.
 
估计OnMessage里面也可以处理把?
 
你可以重载<br> procedure WndProc(var Message: TMessage); override;<br>这个函数,都关机的消息处理
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
615
import
I
后退
顶部