首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

按开始按钮,循环生成随机数,按停止按钮停止生成。怎么实现

2012-03-13 
按开始按钮,循环生成随机数,按停止按钮停止生成。如何实现?点击“开始”按钮,进入循环生成随机数,点击“停止”

按开始按钮,循环生成随机数,按停止按钮停止生成。如何实现?


点击“开始”按钮,进入循环生成随机数,点击“停止”按钮,跳出随机数生成循环。
生成的随机数显示在一个Lable上。

我写了以下代码,但是运行的时候,按了“开始”按钮后,程序一个劲的显示随机数,其它按钮都无法响应,连关闭都无法关闭。
请问出现这种情况的原因是什么?要如何实现?先谢了。

procedure TFrmLottery.BtnStartClick(Sender: TObject); //点击开始按钮
begin
 Stop:=False;
 while not Stop do //循环生成随机数
 begin
 Randomize;
 LblRndNum.Caption:=IntToStr(Random(5030)+1); //生成随机数,显示在label中
 sleep(SLEEPTIME); //睡眠下,免得变得太快,在label上看起来很闪
 end;
end;

procedure TFrmLottery.BtnStopClick(Sender: TObject); //点击 停止按钮
begin
Stop:=True;

[解决办法]
用一个timer好了。
按开始的时候,timer.Enabled := true;
停止,timer.Enabled := false;

在timer的OnTimer事件里:
LblRndNum.Caption:=IntToStr(Random(5030)+1);
[解决办法]
如果不想改成这样,可以在你原来的button1的代码里,sleep后面,加上一句:
Application.ProcessMessages;

因为sleep的时候,主线程阻塞在那里,不处理任何消息,相当于“死掉”一样。
所以,你button2按下去的时候,他不会去处理。
而加上这一句,就是让他去处理消息队列。
[解决办法]
在按钮1中加一句:
application.ProcessMessages;

热点排行