|
@@ -39,6 +39,7 @@ uses
|
|
Types,
|
|
Types,
|
|
SysUtils,
|
|
SysUtils,
|
|
DateUtils,
|
|
DateUtils,
|
|
|
|
+ Quick.Commons,
|
|
//Quick.Chrono,
|
|
//Quick.Chrono,
|
|
Quick.Value,
|
|
Quick.Value,
|
|
{$IFNDEF FPC}
|
|
{$IFNDEF FPC}
|
|
@@ -227,10 +228,15 @@ type
|
|
procedure DoExpire;
|
|
procedure DoExpire;
|
|
function GetTaskName : string;
|
|
function GetTaskName : string;
|
|
function StartAt(aStartDate : TDateTime) : IScheduledTask;
|
|
function StartAt(aStartDate : TDateTime) : IScheduledTask;
|
|
|
|
+ function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+ function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+ function StartOnDayChange : IScheduledTask;
|
|
procedure RunOnce;
|
|
procedure RunOnce;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer); overload;
|
|
|
|
+ procedure RepeatEveryDay;
|
|
|
|
+ procedure RepeatEveryWeek;
|
|
function IsFinished : Boolean;
|
|
function IsFinished : Boolean;
|
|
procedure Cancel;
|
|
procedure Cancel;
|
|
property Name : string read GetTaskName;
|
|
property Name : string read GetTaskName;
|
|
@@ -310,10 +316,15 @@ type
|
|
function OnExpired(aTaskProc : TTaskProc) : IScheduledTask; virtual;
|
|
function OnExpired(aTaskProc : TTaskProc) : IScheduledTask; virtual;
|
|
function OnExpired_Sync(aTaskProc : TTaskProc) : IScheduledTask; virtual;
|
|
function OnExpired_Sync(aTaskProc : TTaskProc) : IScheduledTask; virtual;
|
|
function StartAt(aStartDate : TDateTime) : IScheduledTask;
|
|
function StartAt(aStartDate : TDateTime) : IScheduledTask;
|
|
|
|
+ function StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+ function StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+ function StartOnDayChange : IScheduledTask;
|
|
procedure RunOnce;
|
|
procedure RunOnce;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aEndTime : TDateTime); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer); overload;
|
|
procedure RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer); overload;
|
|
|
|
+ procedure RepeatEveryDay;
|
|
|
|
+ procedure RepeatEveryWeek;
|
|
function IsFinished : Boolean;
|
|
function IsFinished : Boolean;
|
|
procedure Cancel;
|
|
procedure Cancel;
|
|
end;
|
|
end;
|
|
@@ -1238,6 +1249,33 @@ begin
|
|
fNextExecution := aStartDate;
|
|
fNextExecution := aStartDate;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TScheduledTask.StartOnDayChange: IScheduledTask;
|
|
|
|
+begin
|
|
|
|
+ Result := Self;
|
|
|
|
+ ClearSchedule;
|
|
|
|
+ fScheduleMode := TScheduleMode.smRunOnce;
|
|
|
|
+ fStartDate := ChangeTimeOfADay(Tomorrow(),0,0,0);
|
|
|
|
+ fNextExecution := fStartDate;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TScheduledTask.StartTodayAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+begin
|
|
|
|
+ Result := Self;
|
|
|
|
+ ClearSchedule;
|
|
|
|
+ fScheduleMode := TScheduleMode.smRunOnce;
|
|
|
|
+ fStartDate := ChangeDateOfADay(Now(),aHour,aMinute,aSecond);
|
|
|
|
+ fNextExecution := fStartDate;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TScheduledTask.StartTomorrowAt(aHour, aMinute: Word; aSecond : Word = 0): IScheduledTask;
|
|
|
|
+begin
|
|
|
|
+ Result := Self;
|
|
|
|
+ ClearSchedule;
|
|
|
|
+ fScheduleMode := TScheduleMode.smRunOnce;
|
|
|
|
+ fStartDate := ChangeTimeOfADay(Tomorrow(),aHour,aMinute,aSecond);
|
|
|
|
+ fNextExecution := fStartDate;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TScheduledTask.RepeatEvery(aInterval: Integer; aTimeMeasure: TTimeMeasure);
|
|
procedure TScheduledTask.RepeatEvery(aInterval: Integer; aTimeMeasure: TTimeMeasure);
|
|
begin
|
|
begin
|
|
if fStartDate = 0.0 then ClearSchedule;
|
|
if fStartDate = 0.0 then ClearSchedule;
|
|
@@ -1261,6 +1299,16 @@ begin
|
|
fEnabled := True;
|
|
fEnabled := True;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TScheduledTask.RepeatEveryDay;
|
|
|
|
+begin
|
|
|
|
+ RepeatEvery(1,tmDays);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TScheduledTask.RepeatEveryWeek;
|
|
|
|
+begin
|
|
|
|
+ RepeatEvery(7,tmDays);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TScheduledTask.RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer);
|
|
procedure TScheduledTask.RepeatEvery(aInterval : Integer; aTimeMeasure : TTimeMeasure; aRepeatTimes : Integer);
|
|
begin
|
|
begin
|
|
if fStartDate = 0.0 then ClearSchedule;
|
|
if fStartDate = 0.0 then ClearSchedule;
|