線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1420
推到 Plurk!
推到 Facebook!

关闭窗口中的事件代码

答題得分者是:jest0024
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-22 17:36:28 IP:222.184.xxx.xxx 未訂閱
代码如下: procedure Tsfform.FormClose(Sender: TObject; var Action: TCloseAction); begin ADOTable2.Active:=false; ADOTable2.Active:=true; ADOTable2.First ; if ADOTable2.FieldByName('ID').AsInteger<>0 then begin if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK then brzlhxform.ShowModal; end; end; 问题1.为什么这个代码按取消时不是对话框消失,而是整个的窗口关闭,程序退出了。2.按确定时我其实不是要另一个窗口跳出,而是要关闭本窗口,但关闭的话又会产生新的ONCLOSE事件,这样就是死循环了。请问如果处理?
------
我的编程起步于ktop,我将永远支持ktop
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-22 20:08:06 IP:211.22.xxx.xxx 未訂閱
 
if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK then
begin
 if ( brzlhxform.ShowModal = mrOK ) then  //這個視窗要設定modal result的值,在根據按OK或CANCEL來傳回是mrOK或mrCancel
    .....
 else
    ....;
end
else
   Action := caNone;  //按取消不會關閉視窗
end;    以下剪一段Delphi的 modalresult 的 sample code
procedure TMyDialogBox.OKButtonClick(Sender: TObject);    begin
  ModalResult := mrOK;
end;    procedure TMyDialogBox.CancelButtonClick(Sender: TObject);
begin
  ModalResult := mrCancel;    end;    procedure TForm1.Button1Click(Sender: TObject);    begin
  if MyDialogBox1.ShowModal = mrOK then
    Beep;
end;
 
----------------------------------------------- Creation is the fundation of promotion. 發表人 - stallion 於 2005/05/22 20:13:46 發表人 - stallion 於 2005/05/22 20:14:23
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-22 20:37:12 IP:222.184.xxx.xxx 未訂閱
else Action := caNone; //按取消不會關閉視窗 这个已经实现了。(我还是有点觉得寄怪,好象应该不写什么代码安取消就是对话框消失的) if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK then brzlhxform.ShowModal;//这一行代码不是我要的功能,只是为了程序好运行瞎写的,我要写的这一行代码是sfform.close(也就是本窗口关闭,但一执行就是死循环了)
------
我的编程起步于ktop,我将永远支持ktop
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-22 20:53:58 IP:211.22.xxx.xxx 未訂閱
在自己的Close event呼叫自己Close當然有問題,使用Halt或者是Application.Terminate; ----------------------------------------------- Creation is the fundation of promotion.
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-22 20:57:34 IP:211.74.xxx.xxx 未訂閱
引言: else Action := caNone; //按取消不會關閉視窗 这个已经实现了。(我还是有点觉得寄怪,好象应该不写什么代码安取消就是对话框消失的) if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK then brzlhxform.ShowModal;//这一行代码不是我要的功能,只是为了程序好运行瞎写的,我要写的这一行代码是sfform.close(也就是本窗口关闭,但一执行就是死循环了)
1.
if Not(Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK)then Action := caNone;
2.
if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDCANCEL then Action := caNone;    
系統時間:2024-05-17 12:50:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!