如何在程式結束時停止程式中所有的LOOPs? |
尚未結案
|
mathewzhao
中階會員 ![]() ![]() ![]() 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
各位先進好!
請問有沒有一個辦法,在結束程式時,可以停止程式中所有的Loops‧我試著照下面方法設計,但不起作用. 我定義了一個型別為Boolean 的 global variant,並在每個Loop中設定如果這個 Boolean variant 為 True,則 break,
當Form1.create發生時將這個variant 設為 false,
當Form1.close 發生時將這個variant 設為 true,
但Form1.close發生時,所有的Loops並沒有停止.
見以下 code:
var
TerminateLoop:Boolean;
...
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
repeat
...
if terminateLoop then break;
...
Until 1=0;
end; procedure TForm1.FormShow(Sender: TObject);
begin
...
while 1<>0 do
begin
...
if terminateLoop then break;
...
end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
...
TerminateLoop:=false;
...
end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
...
TerminateLoop:=true;
...
end;
|
Justmade
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你要在每個 LOOP 中加一句 Application.ProcessMessages 的否則 TerminateLoop:=true 根本就無機會執行 procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
repeat
...
Application.ProcessMessages;
if terminateLoop then break;
...
Until 1=0;
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |