-
Notifications
You must be signed in to change notification settings - Fork 1
/
ArcHRScript.pas
109 lines (92 loc) · 2.95 KB
/
ArcHRScript.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
unit ArcHRScript;
interface
uses Classes, SysUtils, Types, ArcHTMLReporter, ArcTagParser;
type
TArcHRScriptError = procedure(ASender : TObject; Error : string; Continue : boolean) of object;
THTMLReportScriptBase = class(TComponent)
private
FHTMLReporter : THTMLReporter;
FHandlerID : integer;
FScriptTag: string;
FDataReplaced: TDataReplaced;
FOnScriptError: TArcHRScriptError;
procedure SetDataReplaced(const Value: TDataReplaced);
procedure SetScriptTag(const Value: string);
protected
function ReportError(Error : string) : boolean; virtual;
public
destructor Destroy; override;
constructor Create(AOwner: TComponent); override;
procedure SetHTMLReporter(const Value: THTMLReporter); virtual;
procedure InitHandler(ASender : TObject); virtual;
procedure TagHandler(ASender : TObject; ATag : TTagItem; var AReplaceText : string; var IsTag : boolean); virtual;
published
property HTMLReporter : THTMLReporter read FHTMLReporter write SetHTMLReporter;
property ScriptTag : string read FScriptTag write SetScriptTag;
property DataReplaced : TDataReplaced read FDataReplaced write SetDataReplaced default drBoth;
property OnScriptError : TArcHRScriptError read FOnScriptError write FOnScriptError;
end;
implementation
{ TArcHRScriptBase }
constructor THTMLReportScriptBase.Create(AOwner: TComponent);
begin
inherited;
FDataReplaced := drBoth;
FScriptTag := 'datascript';
end;
destructor THTMLReportScriptBase.Destroy;
begin
inherited;
end;
procedure THTMLReportScriptBase.InitHandler(ASender: TObject);
begin
// To be Overridden
end;
function THTMLReportScriptBase.ReportError(Error: string) : boolean;
begin
Result := False;
if Assigned(FOnScriptError) then
FOnScriptError(Self, Error, Result);
end;
procedure THTMLReportScriptBase.SetDataReplaced(const Value: TDataReplaced);
var
rpt : THTMLReporter;
begin
FDataReplaced := Value;
rpt := FHTMLReporter;
HTMLReporter := nil;
HTMLReporter := rpt;
end;
procedure THTMLReportScriptBase.SetHTMLReporter(const Value: THTMLReporter);
var
i: Integer;
begin
if FHTMLReporter = Value then
exit;
if (FHTMLReporter <> nil) then
begin
FHTMLReporter.UnregisterHandler(Integer(FHandlerID));
FHTMLReporter.RemoveFreeNotification(Self);
end;
FHTMLReporter := Value;
if FHTMLReporter <> nil then
begin
FHTMLReporter.FreeNotification(Self);
FHandlerID := FHTMLReporter.RegisterHandler(FScriptTag, TagHandler, InitHandler, FDataReplaced);
end;
end;
procedure THTMLReportScriptBase.SetScriptTag(const Value: string);
var
rpt : THTMLReporter;
begin
FScriptTag := Value;
rpt := FHTMLReporter;
HTMLReporter := nil;
HTMLReporter := rpt;
end;
procedure THTMLReportScriptBase.TagHandler(ASender: TObject; ATag: TTagItem;
var AReplaceText: string; var IsTag: boolean);
begin
// To be overridden;
end;
end.