我创建了Form1
,并在上面放置了一个ProgressBar,它可以通过计时器从1到100%移动,并将以下代码放入其中:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := ProgressBar1.Position + 1;
Label1.Caption := IntToStr(ProgressBar1.Position) + ' %';
if ProgressBar1.Position = 100 then
Button1.Enabled := True;
end;
定时器的间隔值为50,因此当它变为100%时,按钮激活,当我按下它时,Form2会显示以下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
但是我想删除按钮,我希望它在没有按钮的情况下自动发生,这样当程序运行时,Form1
出现,ProgressBar从1%移动到100%,然后Form1消失,Form2出现。
我该怎么做?
我试过这个:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := ProgressBar1.Position + 1;
Label1.Caption := IntToStr(ProgressBar1.Position) + ' %';
if ProgressBar1.Position = 100 then
begin
Form1.Close;
Form2.Show;
end;
end;
但是当执行程序时,它挂起了,我得到了无限的消息(无限循环),我不知道为什么?
解决办法是什么?
1条答案
按热度按时间acruukt91#
您所显示的代码不应“挂起”应用程序。然而,它确实有几个问题。
最大的问题是你让计时器运行,所以它会连续关闭
Form1
,每50ms显示一次Form2
,因为ProgressBar的Position
保持在100。另外,假设
Form1
是您的MainForm
,那么关闭MainForm
将默认终止您的进程。尝试更像这样的东西: