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

怎样在关闭操作系统时触发程序!并按确定后在关闭系&#32

尚未結案
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-23 18:07:29 IP:219.130.xxx.xxx 未訂閱
怎样在关闭操作系统时触发程序!并按确定后在关闭系统?谢谢! 努力,相信会做的更好!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-23 20:04:49 IP:63.84.xxx.xxx 未訂閱
您好!    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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-24 11:46:45 IP:218.16.xxx.xxx 未訂閱
引言: 您好! 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-24 11:48:18 IP:218.16.xxx.xxx 未訂閱
引言:
引言: 您好! 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;
//此種方法也可根据使用者按下哪一個鍵來判斷是否關閉視窗或者中斷程式, 即不關閉.
參考看看! ===================== 努力,相信會獲得美麗! 忻晟
您好,您误会我的意思了(可能是我表叙的不够清楚)。 我是想在关闭操作系统(>< face="Verdana, Arial, Helvetica"> 努力,相信会做的更好!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-24 11:58:33 IP:202.39.xxx.xxx 未訂閱
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.
系統時間:2024-11-23 3:45:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!