Application.Terminate 為何失效 ? |
答題得分者是:P.D.
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
程式執行過程中, 按下 Button5 居然無法停止程式, 為什麼呢 ?
procedure TForm1.Button5Click(Sender: TObject); begin Application.Terminate; end;全文請看: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=73800
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 是在迴圈中, 但迴圈沒有加 Application.ProcessMessages (請看全文)提供你我的做法, 一般我不會利用其他button來直接中斷 privae closeap: boolean; .... procedure Tform1.button1click... begin closeap:= False; repeat ...... Application.ProcessMessage; if closeap then break; until .... if closeap then Application.Terminate; end; procedrue TForm1.Button5click.... beign closeap:= True; end; |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
Button2 按不下去, 程式跑不停
var Form1: TForm1; closeap : boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin closeap:= False; repeat Edit1.Text:='Testing...'; Form1.Repaint; if closeap then break; until False; if closeap then Application.Terminate; end; procedure TForm1.Button2Click(Sender: TObject); begin closeap:= True; end;
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: Button2 按不下去, 程式跑不停當然囉, 你忘了加上紅色的部份, 所以無法跳脫迴圈去執行button2var Form1: TForm1; closeap : boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin closeap:= False; repeat Edit1.Text:='Testing...'; Form1.Repaint; Application.ProcessMessage; if closeap then break; until False; if closeap then Application.Terminate; end; procedure TForm1.Button2Click(Sender: TObject); begin closeap:= True; end; |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 成功了, 感謝 Application.ProcessMessages; 後面應該有個 s 請問一下, 如果程式中有多個獨立的迴圈 那便成每個迴圈都要這樣設定了, 有其他好方法嗎 ?這種寫法是我個人比較常用的, 並非代表就只有這樣, 因為有時候意欲結束程式前可能還有其他必須要先執行的作業, 那就可以在 if closeap 下做, 而不寫在中斷的button上, 因為畢竟我們是透過Application.ProcessMessages來暫離執行其他, 這有點類似Thread的樣子, 所以要想在迴圈在執行中斷或關閉, 我的觀念是最好先真正用break中斷迴圈再來做其他事比較好, 但其實原本你的寫法也是可以的(以此例比較簡單來說), 只要加上 Application.ProcessMessages也可以跳脫迴圈去執行其他button的命令~ 以上為個人的想法, 僅提供參考, 至於您想要更好的方法, 這就得視您的程式是如何撰寫, 但我認為一定還有其他更好的, 可留待您來發掘了! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |