怎样在关闭操作系统时触发程序!并按确定后在关闭系  |
尚未結案
|
xiaoning79627
初階會員 發表:46 回覆:60 積分:26 註冊:2002-11-10 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! Form元件有OnClose事件和OnCloseQuery事件, 按触發的先后順序來講是OnCloseQuery ==> OnClose, OnCloseQuery事件會傳回一個CanClose的Boolean值, 并不會真正的關閉視窗, 如果傳回值為True則允許關閉, 并触發OnClose中的事件, 如果傳回值為False則不允許關閉, 也就不會触發OnClose中的事件了.
您可將如下程式碼寫在OnCloseQuery事件中:
begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then CanClose := False; end; //以上這一段即可在OnCloseQuery時, 出現訊息窗口, 如果使用者按下的是mrCancel按鈕, 則回傳值為False, 即不會触發OnClose中事件. 如果為True, 則触發OnClose事件.另一種寫在OnClose事件中的方法, 但這個事件沒有回傳值, 所以要通過Abort的方法來中斷程式的執行, 程式碼如下: begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then Abort(); end; //此種方法也可根据使用者按下哪一個鍵來判斷是否關閉視窗或者中斷程式, 即不關閉.參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
xiaoning79627
初階會員 發表:46 回覆:60 積分:26 註冊:2002-11-10 發送簡訊給我 |
引言: 您好! Form元件有OnClose事件和OnCloseQuery事件, 按触發的先后順序來講是OnCloseQuery ==> OnClose, OnCloseQuery事件會傳回一個CanClose的Boolean值, 并不會真正的關閉視窗, 如果傳回值為True則允許關閉, 并触發OnClose中的事件, 如果傳回值為False則不允許關閉, 也就不會触發OnClose中的事件了. 您可將如下程式碼寫在OnCloseQuery事件中:您好,您误会我的意思了(可能是我表叙的不够清楚)。我是想在关闭操作系统(begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then CanClose := False; end; //以上這一段即可在OnCloseQuery時, 出現訊息窗口, 如果使用者按下的是mrCancel按鈕, 則回傳值為False, 即不會触發OnClose中事件. 如果為True, 則触發OnClose事件.另一種寫在OnClose事件中的方法, 但這個事件沒有回傳值, 所以要通過Abort的方法來中斷程式的執行, 程式碼如下:begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then Abort(); end; //此種方法也可根据使用者按下哪一個鍵來判斷是否關閉視窗或者中斷程式, 即不關閉.參考看看! ===================== 努力,相信會獲得美麗! 忻晟 |
xiaoning79627
初階會員 發表:46 回覆:60 積分:26 註冊:2002-11-10 發送簡訊給我 |
引言:引言: 您好! Form元件有OnClose事件和OnCloseQuery事件, 按触發的先后順序來講是OnCloseQuery ==> OnClose, OnCloseQuery事件會傳回一個CanClose的Boolean值, 并不會真正的關閉視窗, 如果傳回值為True則允許關閉, 并触發OnClose中的事件, 如果傳回值為False則不允許關閉, 也就不會触發OnClose中的事件了. 您可將如下程式碼寫在OnCloseQuery事件中:您好,您误会我的意思了(可能是我表叙的不够清楚)。 我是想在关闭操作系统(>>< face="Verdana, Arial, Helvetica"> 努力,相信会做的更好!begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then CanClose := False; end; //以上這一段即可在OnCloseQuery時, 出現訊息窗口, 如果使用者按下的是mrCancel按鈕, 則回傳值為False, 即不會触發OnClose中事件. 如果為True, 則触發OnClose事件.另一種寫在OnClose事件中的方法, 但這個事件沒有回傳值, 所以要通過Abort的方法來中斷程式的執行, 程式碼如下:begin if MessageDlg('您确定要關閉視窗嗎?', mtConfirmation, [mbOK, mbCancel], 0) = mrCancel then Abort(); end; //此種方法也可根据使用者按下哪一個鍵來判斷是否關閉視窗或者中斷程式, 即不關閉.參考看看! ===================== 努力,相信會獲得美麗! 忻晟 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession); begin inherited; if MessageDlg('確定要關閉?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Message.Result:=0; } end; end.--- Everything I say is a lie. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |