如何在 Lazarus Pascal 中使用 TTimeEdit?
How to use TTimeEdit in Lazarus Pascal?
我需要及时自动将文件从一个目录复制到另一个目录(由用户设置,如22:00)。我如何设置我的复制计划程序(每天直到手动停止)以在 TTimeEdit 中设置的时间开始?
这是我的代码:
var
ScheduleStart : TTime;
begin
Timer1.Enabled := false;
ScheduleStart := (AutoStartTime.Time);
if ScheduleStart > Now then Timer1.Enabled := true
else
begin
showmessage('Copying is started...');
end;
end;
有人可以帮我解决这个问题吗?
我想您的代码在定时器 (Timer1) 的 OnTimer 事件处理程序中运行。我不知道这个计时器的间隔,可能是 1 秒。因此,当计时器激活后一秒钟过去时,将调用此事件处理程序,但您的第一行会禁用计时器。还有一行可以再次启用计时器,但是当当前时间早于 ScheduleStart 时将永远不会到达。要解决此问题:删除“Timer1.Enabled := false”。这样,计时器会定期检查是否达到 ScheduleStart。当它是你必须停用计时器以防止一次又一次地触发你的副本。因此,我将按如下方式更改您的代码:
// Code to start the timer
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := true;
end;
// Code executed regularly while the timer it enabled.
procedure TForm1.Timer1Timer(Sender: TObject);
var
ScheduleStart : TTime;
begin
ScheduleStart := AutoStartTime.Time;
if Now() >= ScheduleStart then
begin
// strop triggering the event any more
Timer1.Enabled := false;
// Execute the process
ShowMessage('Copying has started...');
end;
end;
我需要及时自动将文件从一个目录复制到另一个目录(由用户设置,如22:00)。我如何设置我的复制计划程序(每天直到手动停止)以在 TTimeEdit 中设置的时间开始?
这是我的代码:
var
ScheduleStart : TTime;
begin
Timer1.Enabled := false;
ScheduleStart := (AutoStartTime.Time);
if ScheduleStart > Now then Timer1.Enabled := true
else
begin
showmessage('Copying is started...');
end;
end;
有人可以帮我解决这个问题吗?
我想您的代码在定时器 (Timer1) 的 OnTimer 事件处理程序中运行。我不知道这个计时器的间隔,可能是 1 秒。因此,当计时器激活后一秒钟过去时,将调用此事件处理程序,但您的第一行会禁用计时器。还有一行可以再次启用计时器,但是当当前时间早于 ScheduleStart 时将永远不会到达。要解决此问题:删除“Timer1.Enabled := false”。这样,计时器会定期检查是否达到 ScheduleStart。当它是你必须停用计时器以防止一次又一次地触发你的副本。因此,我将按如下方式更改您的代码:
// Code to start the timer
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := true;
end;
// Code executed regularly while the timer it enabled.
procedure TForm1.Timer1Timer(Sender: TObject);
var
ScheduleStart : TTime;
begin
ScheduleStart := AutoStartTime.Time;
if Now() >= ScheduleStart then
begin
// strop triggering the event any more
Timer1.Enabled := false;
// Execute the process
ShowMessage('Copying has started...');
end;
end;