delphi if then else求助

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:28:02
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:Integer;
begin
if i<10 then
begin
i:=i+1;
label.Caption := IntToStr(i) ;
end
else
begin
Timer1.Enabled := False;
end;
end;

end.
编译不能通过。我是想实现labl1 上数字从1显示到10

当然不能通过了,首先,label.Caption,这个label,是不是少了个编号什么的?比如label1
第二,即使编译通过了,label也不会显示1到10的,因为你的i变量是过程变量,每次触发这个事件时,i变量都会被这个Timer初始化掉。i<10这个条件永远也不能成立。

你可以把i声明为全局变量,初始化为0,就可以了。
比如,把
var i:integer;移到
implementation
var i:Integer;//移到这里
{$R *.dfm}
在FormCreate里面把 i:=0;

第二种改法,先把lable1的Caption先改为1,然后:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+1);
if StrToInt(Label1.Caption)=10 then Timer1.Enabled:=False;
end;