如何在保留间隔时在Delphi中暂停TTimer
?所以,例如,我TTimer
10秒间隔,当我设置计时器暂停工作后7秒时,它将保存其状态,然后当我恢复计时器时,在3秒后激活。
非常感谢你们!
答案 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