165 lines
3.9 KiB
ObjectPascal
165 lines
3.9 KiB
ObjectPascal
unit TaskDemoDataModule;
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFNDEF COMPILER6_UP}
|
|
Forms,
|
|
{$ENDIF}
|
|
SysUtils, Classes, ActnList, ImgList, Controls, StdActns, JclTask;
|
|
|
|
type
|
|
TDM = class(TDataModule)
|
|
lstImage: TImageList;
|
|
lstAction: TActionList;
|
|
actFileExit: TAction;
|
|
actTaskProp: TAction;
|
|
actTaskAdd: TAction;
|
|
actTaskDelete: TAction;
|
|
actTaskRefresh: TAction;
|
|
actTaskRun: TAction;
|
|
actTaskStop: TAction;
|
|
procedure actTaskPropUpdate(Sender: TObject);
|
|
procedure actTaskPropExecute(Sender: TObject);
|
|
procedure actTaskAddExecute(Sender: TObject);
|
|
procedure actTaskDeleteExecute(Sender: TObject);
|
|
procedure DataModuleCreate(Sender: TObject);
|
|
procedure DataModuleDestroy(Sender: TObject);
|
|
procedure actTaskRefreshExecute(Sender: TObject);
|
|
procedure actTaskRunExecute(Sender: TObject);
|
|
procedure actTaskStopExecute(Sender: TObject);
|
|
procedure actTaskStopUpdate(Sender: TObject);
|
|
procedure actTaskRunUpdate(Sender: TObject);
|
|
procedure actFileExitExecute(Sender: TObject);
|
|
private
|
|
FTask: TJclTaskSchedule;
|
|
FOnRefresh: TNotifyEvent;
|
|
|
|
function GetSelectedTask: TJclScheduledTask;
|
|
public
|
|
property Task: TJclTaskSchedule read FTask;
|
|
property SelectedTask: TJclScheduledTask read GetSelectedTask;
|
|
|
|
property OnRefresh: TNotifyEvent read FOnRefresh write FOnRefresh;
|
|
end;
|
|
|
|
var
|
|
DM: TDM;
|
|
|
|
implementation
|
|
|
|
uses Windows, Dialogs, TaskDemoMain;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TDM.DataModuleCreate(Sender: TObject);
|
|
begin
|
|
try
|
|
if not TJclTaskSchedule.IsRunning then
|
|
TJclTaskSchedule.Start;
|
|
except
|
|
Application.HandleException(Self);
|
|
end;
|
|
|
|
FTask := TJclTaskSchedule.Create;
|
|
FTask.Refresh;
|
|
|
|
FOnRefresh := nil;
|
|
end;
|
|
|
|
procedure TDM.DataModuleDestroy(Sender: TObject);
|
|
begin
|
|
FreeAndNil(FTask);
|
|
end;
|
|
|
|
procedure TDM.actTaskPropUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := Assigned(frmMain.lstTasks.Selected);
|
|
end;
|
|
|
|
function TDM.GetSelectedTask: TJclScheduledTask;
|
|
begin
|
|
Result := TJclScheduledTask(frmMain.lstTasks.Selected.Data);
|
|
end;
|
|
|
|
procedure TDM.actTaskPropExecute(Sender: TObject);
|
|
begin
|
|
SelectedTask.ShowPage;
|
|
SelectedTask.Save;
|
|
SelectedTask.Refresh;
|
|
end;
|
|
|
|
procedure TDM.actTaskAddExecute(Sender: TObject);
|
|
var
|
|
TaskName: string;
|
|
ATask: TJclScheduledTask;
|
|
begin
|
|
TaskName := 'unnnamed';
|
|
if InputQuery('Please input a task name', 'Task Name', TaskName) then
|
|
try
|
|
ATask := Task.Add(TaskName);
|
|
if ATask.ShowPage then
|
|
begin
|
|
ATask.Save;
|
|
ATask.Refresh;
|
|
if Assigned(FOnRefresh) then FOnRefresh(Self);
|
|
end
|
|
else
|
|
begin
|
|
Task.Remove(ATask);
|
|
end;
|
|
except
|
|
on E: Exception do
|
|
{$IFDEF COMPILER6_UP}
|
|
ApplicationShowException(E);
|
|
{$ELSE}
|
|
Application.ShowException(E);
|
|
{$ENDIF}
|
|
end;
|
|
end;
|
|
|
|
procedure TDM.actTaskDeleteExecute(Sender: TObject);
|
|
begin
|
|
Task.Remove(SelectedTask);
|
|
if Assigned(FOnRefresh) then FOnRefresh(Self);
|
|
end;
|
|
|
|
procedure TDM.actTaskRefreshExecute(Sender: TObject);
|
|
begin
|
|
FTask.Refresh;
|
|
if Assigned(FOnRefresh) then FOnRefresh(Self);
|
|
end;
|
|
|
|
procedure TDM.actTaskRunExecute(Sender: TObject);
|
|
begin
|
|
SelectedTask.Run;
|
|
end;
|
|
|
|
procedure TDM.actTaskStopExecute(Sender: TObject);
|
|
begin
|
|
SelectedTask.Terminate;
|
|
end;
|
|
|
|
procedure TDM.actTaskStopUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := Assigned(frmMain.lstTasks.Selected) and
|
|
(SelectedTask.Status = tsRunning);
|
|
end;
|
|
|
|
procedure TDM.actTaskRunUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := Assigned(frmMain.lstTasks.Selected) and
|
|
(SelectedTask.Status <> tsRunning);
|
|
end;
|
|
|
|
procedure TDM.actFileExitExecute(Sender: TObject);
|
|
begin
|
|
if Assigned(Application.MainForm) then
|
|
begin
|
|
Application.HelpCommand(HELP_QUIT, 0);
|
|
Application.MainForm.Close;
|
|
end;
|
|
end;
|
|
|
|
end.
|