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

如何在迴圈內偵測使用者取消

答題得分者是:cmf
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-09 21:28:46 IP:218.187.xxx.xxx 未訂閱
我在form 上有一個開始的按鈕 在按了開始後會執行一個數目很大的迴圈動作 為了讓不耐久等的使用者能有取消的機會 我在form 上又加了一個取消的按鈕 如何在迴圈內偵測使用者按下了取消的按鈕而馬上退出回圈呢?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-09 21:54:42 IP:61.70.xxx.xxx 未訂閱
procedure TForm1.FormCreate(Sender: TObject); begin Stop.Enabled:= FALSE ; Start.Enabled:= TRUE;    end;    procedure TForm1.StartClick(Sender: TObject); begin Stop.Enabled:= TRUE; Start.Enabled:= FALSE;    while true do begin  application.ProcessMessages;  if  Stop.Enabled= FALSE then break; end;    Stop.Enabled:= FALSE ; Start.Enabled:= TRUE;    end;    procedure TForm1.StopClick(Sender: TObject); begin    Stop.Enabled:= FALSE;    end;    僅供參考,歡迎繼續發言
------
︿︿
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-10 11:34:04 IP:152.104.xxx.xxx 未訂閱
試看看把這一段程式加到你的Loop if (GetAsyncKeyState(VK_ESCAPE) <> 0) or (GetAsyncKeyState(VK_CANCEL) <> 0) then // escape key or ctrl Break key if MessageDlg('要停止執行嗎?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then Break; 發表人 - 懷舊的人 於 2003/03/10 11:36:55
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-10 11:59:02 IP:61.221.xxx.xxx 未訂閱
請問application.ProcessMessages;的用意是什麼?    
引言: procedure TForm1.FormCreate(Sender: TObject); begin Stop.Enabled:= FALSE ; Start.Enabled:= TRUE; end; procedure TForm1.StartClick(Sender: TObject); begin Stop.Enabled:= TRUE; Start.Enabled:= FALSE; while true do begin application.ProcessMessages; if Stop.Enabled= FALSE then break; end; Stop.Enabled:= FALSE ; Start.Enabled:= TRUE; end; procedure TForm1.StopClick(Sender: TObject); begin Stop.Enabled:= FALSE; end; 僅供參考,歡迎繼續發言
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-10 12:06:02 IP:61.221.xxx.xxx 未訂閱
謝謝 但有時侯可以 有時候會失效        
引言: 試看看把這一段程式加到你的Loop if (GetAsyncKeyState(VK_ESCAPE) <> 0) or (GetAsyncKeyState(VK_CANCEL) <> 0) then // escape key or ctrl Break key if MessageDlg('要停止執行嗎?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then Break; 發表人 - 懷舊的人 於 2003/03/10 11:36:55
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-10 12:06:06 IP:61.218.xxx.xxx 未訂閱
application.ProcessMessages 它可以處理 WINDOWS 訊息儲列        僅供參考,歡迎繼續發言
------
︿︿
系統時間:2024-05-03 20:51:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!