首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于关闭程序后确认是不是关闭 messagebox

2013-01-05 
关于关闭程序后确认是否关闭messagebox在窗体的onclose事件输入以下代码:if (messagebox(handle,您确定要

关于关闭程序后确认是否关闭 messagebox
在窗体的onclose事件输入以下代码:

if (messagebox(handle,'您确定要关闭程序吗?','标题',MB_YesNo)=ID_no) then
 close;


疑问1.当关闭程序时,会弹出确认对话框确认你是否退出,我点‘是’为什么就退出程序了?我这里不是……YesNo)=ID_no了吗,我的理解是点否才退出程序   为什么啊??~~~
疑问2:当关闭程序时,会弹出确认对话框确认你是否退出,我点‘否’ 结果死循环  元芳,如何解这个死循环?
[解决办法]
在onclose无论写什么代码窗口都会关闭,正确写法是在onclosequery事件写这段代码,并把self.close改为CanClose:=true;就可以了
[解决办法]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg('你真的要关闭窗口吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
    Action := caFree //caHide,caMinimize
  else
    Action := caNone;
end;
或者:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('你真的要关闭窗口吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
    CanClose := True
  else
    CanClose := False;
end;
[解决办法]
先回答问题二:Close;这句代码会触发OnClose事件……所以点关闭后,提示框出来了,选择了No,然后代码里面执行Close语句,便触发OnClose事件,之后提示框再次出来,选择No,再执行Close代码……知道为何死循环了吧?
问题一:由上面知道OnClose事件里不能写Close;那如何写呢?楼上的给出了答案……是通过设置OnClose事件中参数Action来操作的,Action的默认值是caHide(隐藏),改为caFree就是真正的关闭,改为caNone,就是什么都不做
[解决办法]
喂,应该写在Ooclosequery事件中吧。。

热点排行