* notification interface

This commit is contained in:
Michaël Van Canneyt 2022-06-18 14:52:59 +02:00
parent 7367b27a66
commit e7a7f6946e

View File

@ -1,6 +1,7 @@
unit htmlfragment; unit htmlfragment;
{$mode ObjFPC} {$mode ObjFPC}
{$INTERFACES CORBA}
interface interface
@ -11,6 +12,15 @@ Type
TCustomHTMLFragment = class; TCustomHTMLFragment = class;
{ TFragmentHandler } { TFragmentHandler }
IRendered = Interface
Procedure HTMLAvailable;
end;
IFragmentClient = Interface ['{984EDD58-4F93-40BA-A757-06AC293D11F9}']
Procedure HTMLLoaded;
Procedure HTMLRendered;
end;
TFragmentHandler = Class(TObject) TFragmentHandler = Class(TObject)
Private Private
@ -66,6 +76,7 @@ Type
procedure SetUseProjectHTML(AValue: Boolean); procedure SetUseProjectHTML(AValue: Boolean);
Protected Protected
procedure CheckRendered(const aOperation: string); procedure CheckRendered(const aOperation: string);
procedure DoOnHTMLLoaded; virtual;
procedure DoOnRender; virtual; procedure DoOnRender; virtual;
procedure DoOnUnRender; virtual; procedure DoOnUnRender; virtual;
procedure DoRender; virtual; procedure DoRender; virtual;
@ -270,9 +281,16 @@ end;
procedure TCustomHTMLFragment.DoOnRender; procedure TCustomHTMLFragment.DoOnRender;
Var
I : Integer;
aClient : IFragmentClient;
begin begin
if Assigned(FOnRendered) then if Assigned(FOnRendered) then
FOnRendered(Self); FOnRendered(Self);
For I:=0 to ComponentCount-1 do
if Supports(Components[i],IFRagmentClient,aClient) then
aClient.HTMLRendered;
end; end;
procedure TCustomHTMLFragment.DoOnUnRender; procedure TCustomHTMLFragment.DoOnUnRender;
@ -333,14 +351,28 @@ begin
DoOnUnRender; DoOnUnRender;
end; end;
procedure TCustomHTMLFragment.DoOnHTMLLoaded;
Var
I : Integer;
aClient : IFragmentClient;
begin
if Assigned(FOnHTMLLoaded) then
FOnHTMLLoaded(Self);
For I:=0 to ComponentCount-1 do
if Supports(Components[i],IFRagmentClient,aClient) then
aClient.HTMLLoaded;
end;
procedure TCustomHTMLFragment.Show; procedure TCustomHTMLFragment.Show;
Procedure DoStartRender(Sender : TObject; const aName : string); Procedure DoStartRender(Sender : TObject; const aName : string);
begin begin
FTemplate:=GlobalTemplates[aName]; if not UseProjectHTMLFile then
if Assigned(FOnHTMLLoaded) then FTemplate:=GlobalTemplates[aName];
FOnHTMLLoaded(Self); DoOnHTMLLoaded;
Render; Render;
end; end;
@ -349,11 +381,7 @@ Var
begin begin
if UseProjectHTMLFile then if UseProjectHTMLFile then
begin DoStartRender(GlobalTemplates,N)
if Assigned(FOnHTMLLoaded) then
FOnHTMLLoaded(Self);
Render;
end
else else
begin begin
N:=TemplateName; N:=TemplateName;