Browse Source

* Provide hook to detect changes when loading from stream (bug ID 33375)

git-svn-id: trunk@38452 -
michael 7 years ago
parent
commit
e8e59a44b8
2 changed files with 17 additions and 0 deletions
  1. 3 0
      packages/fcl-report/src/fpreport.pp
  2. 14 0
      packages/fcl-report/src/fpreportstreamer.pp

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

@@ -5807,7 +5807,10 @@ begin
     Name := AReader.ReadString('Name', 'UnknownName');
   except
     On E : EComponentError do
+      begin
       Name:=AllocateName;
+      AReader.Modified;
+      end;
   end;
 end;
 

+ 14 - 0
packages/fcl-report/src/fpreportstreamer.pp

@@ -28,7 +28,12 @@ uses
 type
 
   { Using an abstract class in case we want to support multiple output writers. eg: JSON, XML etc }
+
+  { TFPReportStreamer }
+
   TFPReportStreamer = class(TComponent)
+  private
+    FIsModified: Boolean;
   public
     function PushCurrentElement: TObject; virtual; abstract;
     function PushElement(const AName: String): TObject; virtual; abstract;
@@ -67,6 +72,8 @@ type
     function    ReadDateTime(AName: String; ADefault: TDateTime): TDateTime; virtual; abstract;
     function    ReadBoolean(AName: String; ADefault: Boolean): Boolean; virtual; abstract;
     function    ReadStream(AName: String; AValue: TStream) : Boolean; virtual; abstract;
+    Procedure Modified;
+    Property IsModified : Boolean Read FIsModified;
   end;
 
 
@@ -145,6 +152,13 @@ const
   { Summary of ISO 8601  http://www.cl.cam.ac.uk/~mgk25/iso-time.html }
   cIntlDateTimeStor = 'yyyymmdd"T"hhnnss';    // for storage
 
+{ TFPReportStreamer }
+
+procedure TFPReportStreamer.Modified;
+begin
+  FIsModified:=True;
+end;
+
 
 { TFPReportJSONStreamer }