demohtmlfragment.lpr 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. program demohtmlfragment;
  2. {$mode objfpc}
  3. uses
  4. browserapp, JS, Classes, SysUtils, Web, htmlfragment;
  5. type
  6. TMyHTMLFragment = Class(THTMLFragment)
  7. end;
  8. { TMyApplication }
  9. TMyApplication = class(TBrowserApplication)
  10. FFragment : TMyHTMLFragment;
  11. FBtnShow : TJSHTMLButtonElement;
  12. FBtnHide : TJSHTMLButtonElement;
  13. procedure doRun; override;
  14. private
  15. procedure BindElements;
  16. procedure CreateFragment;
  17. function DoHideClick(aEvent: TJSMouseEvent): boolean;
  18. procedure DoHTMLLoaded(Sender: TObject);
  19. procedure DoRendered(Sender: TObject);
  20. function DoShowClick(aEvent: TJSMouseEvent): boolean;
  21. procedure DoUnRendered(Sender: TObject);
  22. end;
  23. procedure TMyApplication.BindElements;
  24. begin
  25. FBtnShow:=TJSHTMLButtonElement(GetHTMLElement('btnShow'));
  26. FBtnShow.OnClick:=@DoShowClick;
  27. FBtnHide:=TJSHTMLButtonElement(GetHTMLElement('btnHide'));
  28. FBtnHide.OnClick:=@DoHideClick;
  29. end;
  30. Procedure TMyApplication.CreateFragment;
  31. begin
  32. FFragment:=TMyHTMLFragment.CreateNew(Self);
  33. FFragment.Name:='login';
  34. FFragment.ParentID:='form-parent';
  35. FFragment.HTMLFileName:='login.html';
  36. FFragment.OnHTMLLoaded:=@DoHTMLLoaded;
  37. FFragment.OnRendered:=@DoRendered;
  38. FFragment.OnUnRendered:=@DoUnRendered;
  39. end;
  40. function TMyApplication.DoHideClick(aEvent: TJSMouseEvent): boolean;
  41. begin
  42. FFragment.Hide;
  43. end;
  44. procedure TMyApplication.DoHTMLLoaded(Sender: TObject);
  45. begin
  46. FBtnShow.classList.Remove('is-primary');
  47. FBtnShow.classList.Add('is-info');
  48. end;
  49. procedure TMyApplication.DoRendered(Sender: TObject);
  50. begin
  51. FbtnShow.disabled:=True;
  52. FbtnHide.disabled:=False;
  53. end;
  54. function TMyApplication.DoShowClick(aEvent: TJSMouseEvent): boolean;
  55. begin
  56. if not Assigned(FFragment) then
  57. CreateFragment;
  58. FFragment.Show;
  59. end;
  60. procedure TMyApplication.DoUnRendered(Sender: TObject);
  61. begin
  62. FbtnShow.disabled:=False;
  63. FbtnHide.disabled:=True;
  64. end;
  65. procedure TMyApplication.doRun;
  66. begin
  67. Terminate;
  68. BindElements;
  69. end;
  70. var
  71. Application : TMyApplication;
  72. begin
  73. Application:=TMyApplication.Create(nil);
  74. Application.Initialize;
  75. Application.Run;
  76. end.