Browse Source

* Fix bug #0033656: scan report for data loops and add them to ReportData

git-svn-id: trunk@38905 -
michael 7 years ago
parent
commit
da133b2456
1 changed files with 30 additions and 0 deletions
  1. 30 0
      packages/fcl-report/src/fpreport.pp

+ 30 - 0
packages/fcl-report/src/fpreport.pp

@@ -1610,6 +1610,7 @@ type
     function CreateReportData: TFPReportDataCollection; virtual;
     function CreateLayouter : TFPReportLayouter; virtual;
 
+    procedure CollectReportData; virtual;
     procedure RestoreDefaultVariables; virtual;
     procedure DoPrepareReport; virtual;
     procedure DoBeginReport; virtual;
@@ -8757,10 +8758,39 @@ begin
   end;
 end;
 
+procedure TFPCustomReport.CollectReportData;
+
+  Procedure CheckData(D : TFPReportData);
+
+  begin
+    if (D<>Nil) and (ReportData.FindReportDataItem(D)=Nil) then
+      ReportData.AddReportData(D);
+  end;
+
+Var
+  I,J : integer;
+  P : TFPReportCustomPage;
+  B : TFPReportCustomBandWithData;
+
+begin
+  For i:=0 to PageCount-1 do
+    begin
+    P:=Pages[i];
+    CheckData(P.Data);
+    For J:=0 to P.BandCount-1 do
+      if (P.Bands[J] is TFPReportCustomBandWithData) then
+        begin
+        B:=TFPReportCustomBandWithData(P.Bands[J]);
+        CheckData(B.Data);
+        end;
+    end;
+end;
+
 procedure TFPCustomReport.RunReport;
 begin
   DoBeginReport;
   StartLayout;
+  CollectReportData;
   Validate;
   FExpr := TFPexpressionParser.Create(nil);
   try