program demohtmlfragment;
{$mode objfpc}
uses
browserapp, JS, Classes, SysUtils, Web, htmlfragment;
type
TMyHTMLFragment = Class(THTMLFragment)
end;
{ TMyApplication }
TMyApplication = class(TBrowserApplication)
FFragment : TMyHTMLFragment;
FBtnShow : TJSHTMLButtonElement;
FBtnHide : TJSHTMLButtonElement;
procedure doRun; override;
private
procedure BindElements;
procedure CreateFragment;
function DoHideClick(aEvent: TJSMouseEvent): boolean;
procedure DoHTMLLoaded(Sender: TObject);
procedure DoRendered(Sender: TObject);
function DoShowClick(aEvent: TJSMouseEvent): boolean;
procedure DoUnRendered(Sender: TObject);
end;
procedure TMyApplication.BindElements;
begin
FBtnShow:=TJSHTMLButtonElement(GetHTMLElement('btnShow'));
FBtnShow.OnClick:=@DoShowClick;
FBtnHide:=TJSHTMLButtonElement(GetHTMLElement('btnHide'));
FBtnHide.OnClick:=@DoHideClick;
end;
Procedure TMyApplication.CreateFragment;
begin
FFragment:=TMyHTMLFragment.CreateNew(Self);
FFragment.Name:='login';
FFragment.ParentID:='form-parent';
FFragment.HTMLFileName:='login.html';
FFragment.OnHTMLLoaded:=@DoHTMLLoaded;
FFragment.OnRendered:=@DoRendered;
FFragment.OnUnRendered:=@DoUnRendered;
end;
function TMyApplication.DoHideClick(aEvent: TJSMouseEvent): boolean;
begin
FFragment.Hide;
end;
procedure TMyApplication.DoHTMLLoaded(Sender: TObject);
begin
FBtnShow.classList.Remove('is-primary');
FBtnShow.classList.Add('is-info');
end;
procedure TMyApplication.DoRendered(Sender: TObject);
begin
FbtnShow.disabled:=True;
FbtnHide.disabled:=False;
end;
function TMyApplication.DoShowClick(aEvent: TJSMouseEvent): boolean;
begin
if not Assigned(FFragment) then
CreateFragment;
FFragment.Show;
end;
procedure TMyApplication.DoUnRendered(Sender: TObject);
begin
FbtnShow.disabled:=False;
FbtnHide.disabled:=True;
end;
procedure TMyApplication.doRun;
begin
Terminate;
BindElements;
end;
var
Application : TMyApplication;
begin
Application:=TMyApplication.Create(nil);
Application.Initialize;
Application.Run;
end.