点击“开始”按钮,进入循环生成随机数,点击“停止”按钮,跳出随机数生成循环。
生成的随机数显示在一个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;
生成的随机数显示在一个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;
解决方案 »
- 做了一个软件怎么测试它对网络和系统资源监控呀
- 用摄像头拍A4纸,边缘变形,请问有什么方法解决?
- treeview中的双击事件如何获取非根节点的内容???
- 关于DATETIMEPICKER的问题!
- 弄不出来了……??
- 请问:网上哪里有用中文详细介绍delphi控件属性,方法,事件的书籍资料可看?
- 痛哭,早上崩机了,大大们告诉我哪里有DELPHI6下载吧
- 在线急等:access数据库,delphi下如何导出到.txt文件
- 谁知道怎么退出excel?
- 为什么我用ADOQuery执行insert时报错 CommandText does not return a result set ???
- DBgride使用的问题
- 想问问加速ide的用啥好,
按开始的时候,timer.Enabled := true;
停止,timer.Enabled := false;在timer的OnTimer事件里:
LblRndNum.Caption:=IntToStr(Random(5030)+1);
Application.ProcessMessages;因为sleep的时候,主线程阻塞在那里,不处理任何消息,相当于“死掉”一样。
所以,你button2按下去的时候,他不会去处理。
而加上这一句,就是让他去处理消息队列。
application.ProcessMessages;
begin
Stop:=False;
while not Stop do //循环生成随机数
begin
Randomize;
LblRndNum.Caption:=IntToStr(Random(5030)+1); //生成随机数,显示在label中
sleep(SLEEPTIME); //睡眠下,免得变得太快,在label上看起来很闪
application.ProcessMessages;
end;
end;
Randomize;
while not Stop do //循环生成随机数
begin
Application.ProcessMessages;
if Application.Terminated then
Break;
LblRndNum.Caption := IntToStr(Random(5030) + 1); //生成随机数,显示在label中
sleep(SLEEPTIME); //睡眠下,免得变得太快,在label上看起来很闪
end;
procedure TForm1.Button1Click(Sender: TObject);
var
memo1: Tmemo;
begin
memo1:=tmemo.Create(self);
if button1.Caption='start' then
button1.Caption :='stop'
Else if button1.Caption ='stop' then
button1.Caption :='start'
else
button1.Caption :='stop';
Randomize ;
memo1.Text :=inttostr(random(20));
Showmessage(memo1.Text );end;