1
A
回答
9
我想你实际上意味着
var
Timer1: TTimer;
然后,复位定时器,做
Timer1.Enabled := false;
Timer1.Enabled := true;
在我的 “RejbrandCommon.pas” 标准库,其实我已经定义
procedure RestartTimer(Timer: TTimer);
begin
Timer.Enabled := false;
Timer.Enabled := true;
end;
然后,每次我需要重新启动I计时器,我只是做
RestartTimer(Timer1);
当然,如果你想OnTimer
程序(例如, Timer1Timer
)重启前触发,你必须做
Timer1.OnTimer(Self);
Timer1.Enabled := false;
Timer1.Enabled := true;
或定义
procedure TriggerAndRestartTimer(Timer: TTimer);
begin
Timer.OnTimer(nil);
Timer.Enabled := false;
Timer.Enabled := true;
end;
(当然,最后一道工序,TriggerAndRestartTimer
,不是方法,因此没有Self
。然而,最有可能的Timer1Timer
过程不关心Sender
属性,所以你可以只发送任何东西,如nil
,而不是Self
)
1
有在设计时无法做到这一点。让处理程序禁用TTimer
然后重新启用它。
1
重置TTimer以重新触发其事件很简单。当您禁用并启用TTimer时,您的timertimeout事件将根据您设置的时间间隔重新触发。例如,
Timer1.interval:=1000; //milliseconds
Timer1.enabled:=false;
Timer1.enabled:=true;
下一次启用和禁用定时器时,Timer1事件将在一秒钟内启动。
相关问题
- 1. 德尔菲跳动
- 2. 布朗菲尔德vs格林菲尔德发展?
- 3. 德尔菲阵列的TEdit
- 4. 德尔菲Maxmind geoip查询
- 5. 德尔菲表加入
- 6. 德尔菲击中输入
- 7. 德尔菲队列和同步参数
- 8. 德尔菲弦/字符串数组
- 9. 简单的德尔菲TTimer程序
- 10. 德尔菲帧销毁/隐藏
- 11. 比特菲尔德与3个国家...?
- 12. 德尔菲通用约束问题
- 13. 火鸟v 2.5和德尔菲挂
- 14. 德尔菲法签名转换成C#
- 15. 德尔菲+网络摄像头
- 16. 在德尔福7
- 17. 德尔福7 __ArrayList
- 18. 德尔福:简单的hh:mm:ss定时器
- 19. 德尔福7和Windows Vista
- 20. 德尔福7继承
- 21. 德尔福7 TAdoQuery太慢
- 22. 德尔福7和事件
- 23. 在艾菲尔
- 24. 德尔福7德尔福XE2 res文件问题
- 25. 转换德尔福7代码与德尔福2009年工作
- 26. 与许多单位的德尔菲项目需要很多运行
- 27. 德尔福 - Variants.pas单位是过时
- 28. 德尔菲情节抛物线与分辨率
- 29. 德尔菲的接口继承和观察者模式
- 30. 德尔菲新项目不是从form1开始
试过这个,不行。 – none 2010-10-10 14:50:37
我知道它的工作原理。一直这样做。为什么它不起作用?是不是定时器重置,是不是正在触发的事件,不是代码编译,计算机是否爆炸? – 2010-10-10 17:08:15
@none:这绝对有效。 – gabr 2010-10-10 20:39:27