符合定时器的程序
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.
的成员
我习惯于使用 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.
的成员