浏览代码

* Do not call only BeforeGenerateContent of child producers, but also for the producer itself
* Call BeforeGenerateContent of childs from a TWebPageProducer

git-svn-id: trunk@14839 -

joost 15 年之前
父节点
当前提交
75ff11b24f
共有 1 个文件被更改,包括 15 次插入0 次删除
  1. 15 0
      packages/fcl-web/src/fphtml.pp

+ 15 - 0
packages/fcl-web/src/fphtml.pp

@@ -249,6 +249,7 @@ type
     procedure DoWriteVisualHeader (aWriter : THTMLWriter); virtual;
     procedure DoWriteVisualHeader (aWriter : THTMLWriter); virtual;
     procedure DoWriteVisualBody (aWriter : THTMLWriter); virtual;
     procedure DoWriteVisualBody (aWriter : THTMLWriter); virtual;
     procedure DoWriteVisualFooter (aWriter : THTMLWriter); virtual;
     procedure DoWriteVisualFooter (aWriter : THTMLWriter); virtual;
+    procedure BeforeGenerateContent; override;
     Property HeaderProducer : THTMLContentProducer read FHeaderProducer write FHeaderProducer;
     Property HeaderProducer : THTMLContentProducer read FHeaderProducer write FHeaderProducer;
     Property VisualHeaderProducer : THTMLContentProducer read FVisualHeaderProducer write FVisualHeaderProducer;
     Property VisualHeaderProducer : THTMLContentProducer read FVisualHeaderProducer write FVisualHeaderProducer;
     Property VisualBodyProducer : THTMLContentProducer read FVisualBodyProducer write FVisualBodyProducer;
     Property VisualBodyProducer : THTMLContentProducer read FVisualBodyProducer write FVisualBodyProducer;
@@ -541,6 +542,7 @@ begin
       el := WriteContent (FWriter);
       el := WriteContent (FWriter);
       if not assigned(el) then
       if not assigned(el) then
         Raise EHTMLError.CreateFmt(SErrNoContentProduced,[Self.Name]);
         Raise EHTMLError.CreateFmt(SErrNoContentProduced,[Self.Name]);
+      BeforeGenerateContent;
       ForeachContentProducer(@DoBeforeGenerateContent,True);
       ForeachContentProducer(@DoBeforeGenerateContent,True);
       result := el.asstring;
       result := el.asstring;
     finally
     finally
@@ -1071,6 +1073,19 @@ begin
     aWriter.AddElement(FVisualFooterProducer.WriteContent(aWriter));
     aWriter.AddElement(FVisualFooterProducer.WriteContent(aWriter));
 end;
 end;
 
 
+procedure THTMLCustomPageProducer.BeforeGenerateContent;
+begin
+  inherited BeforeGenerateContent;
+  if assigned(FHeaderProducer) then
+    FHeaderProducer.BeforeGenerateContent;
+  if assigned(FVisualHeaderProducer) then
+    FVisualHeaderProducer.BeforeGenerateContent;
+  if assigned(FVisualBodyProducer) then
+    FVisualBodyProducer.BeforeGenerateContent;
+  if assigned(FVisualFooterProducer) then
+    FVisualFooterProducer.BeforeGenerateContent;
+end;
+
 constructor THTMLCustomPageProducer.Create(AOwner: TComponent);
 constructor THTMLCustomPageProducer.Create(AOwner: TComponent);
 begin
 begin
   inherited Create(AOwner);
   inherited Create(AOwner);