符合定时器的程序

Procedures in line with timer

我习惯于使用 ProgressBar 和 Timer 来做一些进度队列/在线流程。 我正在寻找 TTimer 和 ProgressBar 的替代品。 这就是我想说的。 这是 OnTimer 事件:

    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
    ProgBar1.Position := ProgBar1.Position +1;
    if ProgBar1.Position = 10 then
    begin
    m1.Lines.Add('Progress 1 : Exec A') ;
     ExecAA(Sender);
    end;
    if ProgBar1.Position = 20 then
    begin
    m1.Lines.Add('Progress 2 : Exec B');
    ExecAB(Sender);
    end;
     if ProgBar1.Position = 30 then
    begin
    m1.Lines.Add('Progress 3 : Exec C');
    ExecAC(Sender);
    end;
// and so on, and so forth ...
    end;

由于我不需要看到ProgressBar,所以我暂时隐藏这个ProgressBar。 我试过用Timer和整数来代替,但是好像不太合适。

 procedure TForm1.tmr1Timer(Sender: TObject);
    var
    xx : Integer;
    begin
    xx := xx + 1;
    if xx = 10 then
    .....

是否可以通过其他方式在不使用任何 ProgressBar 的情况下实现完全相同的功能?

 procedure TForm1.tmr1Timer(Sender: TObject);
 var
   xx : Integer;
 begin
   xx := xx + 1;
   if xx = 10 then
 .....

这里的问题是xx是一个局部变量。每次调用计时器时,您都会获得局部变量的新实例。更复杂的是,您没有初始化局部变量。编译器应该警告你这一点。我相信您已启用提示和警告,并且正在注意它们。

您需要的是一些持久状态。您需要您的整数值比计时器的持续时间更长。不使用局部变量,而是使用 class.

的成员