如下,本来我要它(label1)显示从0到9,10到19..100到109
结果只显示从100到109
我试过其他的循环次数,都是只在最后有效
为什么?
能够怎样实现我原来的需要?(即每次循环都让时钟有效,做一些操作,到一定程度后失效,进入下次循环)
谢谢
var
  Form1: TForm1;
  a,b:integer;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
begin
a:=10*i;
b:=10*i+10;
timer1.Enabled:=true;
end
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if a<b then
begin
label1.Caption:=inttostr(a);
inc(a);
end
else
timer1.Enabled:=false;
end;/////////////////////////////////////////////
不过在之间加入一个showmessage()
就可以
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
begin
a:=10*i;
b:=10*i+10;
timer1.Enabled:=true;
showmessage('dfadfas');//加入这句就可以了,但是这是不允许出现在程序中的
end
end;
谢谢!!!!!!!!!!!!!!

解决方案 »

  1.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      label1.Caption:=inttostr(a);
      inc(a);
      if a > 100 then
        Timer1.Enabled := False;
      end;
    end;是要这个吗?
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    begin
    for i:=1 to 10 do
    begin
    a:=10*i;
    b:=10*i+10;
    timer1.Enabled:=true;repeat application.ProcessMessages;
    until timer1.Enabled=false;end
    end;
      

  3.   

    在ShowMessage的地方改为一个Application.ProcessMessages;这是单线程的问题如果改为多线程就不会出现这种问题