在窗体的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,就是什么都不做