在窗体的onclose事件输入以下代码:
if (messagebox(handle,'您确定要关闭程序吗?','标题',MB_YesNo)=ID_no) then
close;疑问1.当关闭程序时,会弹出确认对话框确认你是否退出,我点‘是’为什么就退出程序了?我这里不是……YesNo)=ID_no了吗,我的理解是点否才退出程序 为什么啊??~~~
疑问2:当关闭程序时,会弹出确认对话框确认你是否退出,我点‘否’ 结果死循环 元芳,如何解这个死循环?
if (messagebox(handle,'您确定要关闭程序吗?','标题',MB_YesNo)=ID_no) then
close;疑问1.当关闭程序时,会弹出确认对话框确认你是否退出,我点‘是’为什么就退出程序了?我这里不是……YesNo)=ID_no了吗,我的理解是点否才退出程序 为什么啊??~~~
疑问2:当关闭程序时,会弹出确认对话框确认你是否退出,我点‘否’ 结果死循环 元芳,如何解这个死循环?
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;
问题一:由上面知道OnClose事件里不能写Close;那如何写呢?楼上的给出了答案……是通过设置OnClose事件中参数Action来操作的,Action的默认值是caHide(隐藏),改为caFree就是真正的关闭,改为caNone,就是什么都不做
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (MessageBox(Handle, '您确定要关闭程序吗?', '标题', MB_YESNO) <> ID_YES) then
begin
Action:= caNone;
Exit;
end;
end;
begin
if Application.MessageBox('您确定要关闭程序吗?', '标题', MB_YESNO)<>ID_YES) then
begin
CanClose:=true;
exit;
end
else //Do other things.
end;书上说,这样才是对的。。
楼主的问题,应该是closequery还有一些时机,vcl并没有很好的提供事件,比如form初次稳定显示时,此时需要初始化信息,重新调整各个可见控件的位置
现在只能靠通用的active(但必须是初次)及resize