关闭窗口中的事件代码 |
答題得分者是:jest0024
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
代码如下:
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 發送簡訊給我 |
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 發送簡訊給我 |
else
Action := caNone; //按取消不會關閉視窗
这个已经实现了。(我还是有点觉得寄怪,好象应该不写什么代码安取消就是对话框消失的)
if Application.MessageBox('有收费项目未完成,是否确定退出?','提示',MB_OKCANCEL)=IDOK then
brzlhxform.ShowModal;//这一行代码不是我要的功能,只是为了程序好运行瞎写的,我要写的这一行代码是sfform.close(也就是本窗口关闭,但一执行就是死循环了)
------
我的编程起步于ktop,我将永远支持ktop |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: 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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |