如何在 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;