问题描述
|
是否有人为hh:mm:ss计时器(Timer1.Interval:= 1000)编写了简短有效的代码?我可以做一个,但是我想要高效的东西。
谢谢!
我的代码:
Var MyTime:TTime;
MyTime:=EncodeTime(0,0);
procedure TForm1.Timer1Timer(Sender: TObject);
begin
MyTime:=incsecond(Mytime,1);
form1.Label1.Caption:=\'Time: \'+TimeToStr(MyTime);
end;
解决方法
添加变量以跟踪计时器的启动时间。
TForm1 = class(TForm)
private
timerStart: TDateTime;
public
proceure StartTimer;
end;
步骤启动计时器
proceure TForm1.StartTimer;
beign
timerStart := now();
timer1.interval = 1000;
timer1.enabled := true;
end;
在OnTimer事件中
Label1.caption := formatdatetime(\'hh:nn:ss\',timerStart - now()); //nn is for minutes.
这应该显示在任何间隔内花费的正确时间。
即每5秒钟显示5000,即耗时。
注意:如果不进行测试,则将计时器运行超过24小时可能不会显示正确的时差。为此,我认为datetime格式字符串应类似于dd hh:nn:ss
,以显示经过的日期