毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

delphi的messagebox关闭了整个程序

更新时间:2012-11-5:  来源:毕业论文

在窗体的onclose事件输入以下代码:

Delphi/Pascal code12 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,就是什么都不做

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。