delphi 7计时器重置

non*_*one 2 delphi timer

怎么可以重置TTimer1所以即使是ontimer触发器,计数重新启动?

问题是针对设计时命令执行运行时.

And*_*and 12

我想你实际上就是这个意思

var
  Timer1: TTimer;
Run Code Online (Sandbox Code Playgroud)

然后,要重置计时器,请执行

Timer1.Enabled := false;
Timer1.Enabled := true;
Run Code Online (Sandbox Code Playgroud)

在我的"RejbrandCommon.pas"标准库中,我实际上已经定义了

procedure RestartTimer(Timer: TTimer);
begin
  Timer.Enabled := false;
  Timer.Enabled := true;
end;
Run Code Online (Sandbox Code Playgroud)

然后,每次我需要重新启动I计时器,我就这么做

RestartTimer(Timer1);
Run Code Online (Sandbox Code Playgroud)

当然,如果您希望在重启之前触发OnTimer程序(例如Timer1Timer),则必须这样做

Timer1.OnTimer(Self);
Timer1.Enabled := false;
Timer1.Enabled := true;
Run Code Online (Sandbox Code Playgroud)

或定义

procedure TriggerAndRestartTimer(Timer: TTimer);
begin
  Timer.OnTimer(nil);    
  Timer.Enabled := false;
  Timer.Enabled := true;
end;
Run Code Online (Sandbox Code Playgroud)

(当然,最后一个程序,TriggerAndRestartTimer不是一个方法,因此没有Self.但是,很可能Timer1Timer程序不关心Sender属性,所以你可以发送任何东西,比如nil代替Self.)

  • 我知道它有效.一直这样做.为什么不起作用?是不是定时器重置,事件没有激活,代码是否编译,计算机是否爆炸? (2认同)