设置计时器暂停

kse*_*een 6 delphi timer

如何TTimer在保持间隔的情况下暂停Delphi?所以,举例来说,我TTimer间隔10秒,当我设定的计时暂停前7秒钟后工作的,它会保存其状态,然后当我重启定时器,将剩下的3秒后开火.

非常感谢!

rel*_*tiv 13

Timer.interval :=1000;
ICount:integer;
Run Code Online (Sandbox Code Playgroud)

在create procedure中,将icount设置为0

Procedure timerevent(sender:tobject);
Begin
    If icount=10 then
    Begin
       // do proccess
     Icount = 0;
   End;
   Inc(icount);
End;
Run Code Online (Sandbox Code Playgroud)

现在你可以在任何地方停止计时器

  • +1 Creative解决方案.分辨率仅为1秒,但可能没问题. (5认同)

Dav*_*nan 9

你不能用一个TTimer围绕SetTimerAPI 的松散包装器做到这一点.

为此,您需要跟踪计时器何时开始以及何时暂停计时器.然后你会知道剩下多少时间.需要暂停时,将timer Enabled属性False设置为,并将间隔设置为剩余时间.不要忘记,在计时器第一次触发后,您需要将其间隔重置为真实间隔.

从上面可以看出,a TTimer不是最适合您的问题.但是,如果说生产一种TTimer支持暂停你想要的方式的变体并不是非常困难,而且非常有趣.