tw10736.pp 828 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. { %OPT=-Sew -vw }
  2. unit tw10736;
  3. {$mode objfpc}{$H+}
  4. interface
  5. uses
  6. Classes, SysUtils;
  7. type
  8. { TAbstractPage }
  9. TAbstractPage = class
  10. protected
  11. procedure Execute virtual; abstract;
  12. public
  13. class procedure PageExecute;
  14. end;
  15. TPageClass = class of TAbstractPage;
  16. { TPageUnknown }
  17. TPageUnknown = class(TAbstractPage)
  18. protected
  19. procedure Execute override;
  20. end;
  21. procedure HandleRequest;
  22. implementation
  23. { TAbstractPage }
  24. class procedure TAbstractPage.PageExecute;
  25. begin
  26. (*
  27. with Self.Create do try
  28. Execute;
  29. finally
  30. Free;
  31. end;
  32. *)
  33. end;
  34. { TPageUnknown }
  35. procedure TPageUnknown.Execute;
  36. begin
  37. //Whatever...
  38. end;
  39. procedure HandleRequest;
  40. //Zomaar een kleine besturing, iemand andere ideen?
  41. var Page: TPageClass;
  42. begin
  43. Page := TPageUnknown;
  44. Page.PageExecute;
  45. end;
  46. end.