设置计时器暂停

时间:2011-12-12 19:27:27

标签: delphi timer

如何在保留间隔时在Delphi中暂停TTimer?所以,例如,我TTimer 10秒间隔,当我设置计时器暂停工作后7秒时,它将保存其状态,然后当我恢复计时器时,在3秒后激活

非常感谢你们!

4 个答案:

答案 0 :(得分:13)

Timer.interval :=1000;
ICount:integer;

在创建过程中,将icount设置为0

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

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

答案 1 :(得分:9)

你不能使用TTimer这是SetTimer API的松散包装。

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

从上面可以看出,TTimer不是最适合您的问题。但是,已经说过,制作一个TTimer变种并支持按照你想要的方式停顿并不是非常困难,也很有趣。

答案 2 :(得分:2)

这不是Windows计时器工具的工作方式,也不是Delphi包装器的工作方式。

当您禁用计时器时,请记下再次点火之前剩余的时间。在重新启用它之前,请将Interval属性设置为该值。下次计时器触发时,将Interval重置为原始值。

答案 3 :(得分:1)

TTimer不支持您要求的内容。正如其他人已经评论过的那样,您必须停止计时器,将其Interval重置为剩余时间,启动它,然后在下一个{{1}时停止并将其Interval重置为10秒事件被触发。

更简单的解决方案是让OnTimer保持正常运行,并有一个单独的标志告诉TTimer事件处理程序,无论何时触发它都可以执行其工作,例如:

OnTimer