循环已经开始,如何点击按钮取消(100分)

  • 主题发起人 主题发起人 lkf
  • 开始时间 开始时间
L

lkf

Unregistered / Unconfirmed
GUEST, unregistred user!
假如已经循环一个事件,
如何点击按钮退出循环。
 
用线程来完成这个工作咯
 
开两个线程,一个用来循环,一个用来点击取消按钮.
 
for ..... begin
; if exitflag then break;
end
 
你在消息循环内部加入
application.processmessages;
 
同意楼上。
 
agree 卷起千堆雪tyn
 
另一种方法:

var
; Start :Integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
; start := start+1;
; if start>=20 then ; //循环
; ; start := 0;
; Button1.Caption := IntTostr(start);
; invalidate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
; start := 3;
; Timer1.Interval := 80;
; Timer1.Enabled := True;
; Button1.Caption := IntTostr(start);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
; Timer1.Enabled := not Timer1.Enabled; ;//中止循环
end;
 
试一试我的方法:
给按键button的click事件加入一个停止标记:
var stop:boolean;
begin
stop:=true;
end;
再在循环体开始处加入:
for ....
begin
..
if stop=true then break;
end;
即可。
 
application.processmessages;
 
反正循环体内得加条件查询才行.
 
application ;onidle 事件,具体看帮助
 
var stop:boolean;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
; stop:=false;
; for i:=0 to 100 do begin
; ; if stop then break;
; ; label1.Caption:=inttostr(i);
; ; application.ProcessMessages;
; ; sleep(100);
; end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
; stop:=true;
end;
 
同意楼上j_shen2000的说法!!
 
方法都写着呢,我就不多说了:)
 
在循环中设计类似exitflag标志的及类似思路不能解决问题,
因为循环即已开始,不会相应其他事件(要等循环所在事件体结束)

线程可以解决的,我也知道,但我怕麻烦。processmessages比较简单。
 
用application.processmessages就行了
 
application.processmessages简单实用
 

Similar threads

S
回复
0
查看
692
SUNSTONE的Delphi笔记
S
S
回复
0
查看
780
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部