LazReport, improved class type checking in ExportTo method from Luiz Americo, issue #14116

git-svn-id: trunk@21112 -
This commit is contained in:
jesus 2009-08-05 20:30:59 +00:00
parent 83b97ddf94
commit 0fbf06339a
2 changed files with 27 additions and 26 deletions

View File

@ -8,6 +8,7 @@ Javier Villarroya (es)
Jesus Reyes A. (mx) Jesus Reyes A. (mx)
Joerg Braun (de) Joerg Braun (de)
Junior Goncalves (br) Junior Goncalves (br)
Luiz Americo (br)
Mattias Gaertner (de) Mattias Gaertner (de)
Olivier Guilbaud (fr) Olivier Guilbaud (fr)
Petr Smolik (cz) Petr Smolik (cz)

View File

@ -789,7 +789,25 @@ type
property Pages[Index: Integer]: PfrPageInfo read GetPages; default; property Pages[Index: Integer]: PfrPageInfo read GetPages; default;
property Count: Integer read GetCount; property Count: Integer read GetCount;
end; end;
TfrExportFilter = class(TObject)
protected
Stream: TStream;
Lines: TFpList;
procedure ClearLines;
public
constructor Create(AStream: TStream); virtual;
destructor Destroy; override;
procedure OnBeginDoc; virtual;
procedure OnEndDoc; virtual;
procedure OnBeginPage; virtual;
procedure OnEndPage; virtual;
procedure OnData(x, y: Integer; View: TfrView); virtual;
procedure OnText(x, y: Integer; const text: String; View: TfrView); virtual;
end;
TfrExportFilterClass = class of TfrExportFilter;
TfrDataType = (dtDataSet,dtDataSource); TfrDataType = (dtDataSet,dtDataSource);
{ TfrReport } { TfrReport }
@ -910,7 +928,7 @@ type
// report manipulation methods // report manipulation methods
procedure DesignReport; procedure DesignReport;
function PrepareReport: Boolean; function PrepareReport: Boolean;
procedure ExportTo(Filter: TClass; const aFileName: String); procedure ExportTo(FilterClass: TfrExportFilterClass; const aFileName: String);
procedure ShowReport; procedure ShowReport;
procedure ShowPreparedReport; procedure ShowPreparedReport;
procedure PrintPreparedReport(const PageNumbers: String; Copies: Integer); procedure PrintPreparedReport(const PageNumbers: String; Copies: Integer);
@ -1007,22 +1025,6 @@ type
procedure ShowEditor(t: TfrView); virtual; procedure ShowEditor(t: TfrView); virtual;
end; end;
TfrExportFilter = class(TObject)
protected
Stream: TStream;
Lines: TFpList;
procedure ClearLines;
public
constructor Create(AStream: TStream); virtual;
destructor Destroy; override;
procedure OnBeginDoc; virtual;
procedure OnEndDoc; virtual;
procedure OnBeginPage; virtual;
procedure OnEndPage; virtual;
procedure OnData(x, y: Integer; View: TfrView); virtual;
procedure OnText(x, y: Integer; const text: String; View: TfrView); virtual;
end;
TfrFunctionDescription = class(TObject) TfrFunctionDescription = class(TObject)
funName:string; funName:string;
funGroup:string; funGroup:string;
@ -1055,7 +1057,7 @@ type
function frCreateObject(Typ: Byte; const ClassName: String): TfrView; function frCreateObject(Typ: Byte; const ClassName: String): TfrView;
procedure frRegisterObject(ClassRef: TFRViewClass; ButtonBmp: TBitmap; procedure frRegisterObject(ClassRef: TFRViewClass; ButtonBmp: TBitmap;
const ButtonHint: String; EditorForm: TfrObjEditorForm); const ButtonHint: String; EditorForm: TfrObjEditorForm);
procedure frRegisterExportFilter(ClassRef: TClass; procedure frRegisterExportFilter(ClassRef: TfrExportFilterClass;
const FilterDesc, FilterExt: String); const FilterDesc, FilterExt: String);
procedure frRegisterFunctionLibrary(ClassRef: TClass); procedure frRegisterFunctionLibrary(ClassRef: TClass);
procedure frRegisterTool(const MenuCaption: String; ButtonBmp: TBitmap; OnClick: TNotifyEvent); procedure frRegisterTool(const MenuCaption: String; ButtonBmp: TBitmap; OnClick: TNotifyEvent);
@ -1092,7 +1094,7 @@ type
end; end;
TfrExportFilterInfo = record TfrExportFilterInfo = record
ClassRef: TClass; ClassRef: TfrExportFilterClass;
FilterDesc, FilterExt: String; FilterDesc, FilterExt: String;
end; end;
@ -1360,7 +1362,7 @@ begin
Inc(frAddInsCount); Inc(frAddInsCount);
end; end;
procedure frRegisterExportFilter(ClassRef: TClass; procedure frRegisterExportFilter(ClassRef: TfrExportFilterClass;
const FilterDesc, FilterExt: String); const FilterDesc, FilterExt: String);
begin begin
frFilters[frFiltersCount].ClassRef := ClassRef; frFilters[frFiltersCount].ClassRef := ClassRef;
@ -8219,13 +8221,12 @@ begin
frProgressForm.ModalResult := mrOk; frProgressForm.ModalResult := mrOk;
end; end;
procedure TfrReport.ExportTo(Filter: TClass; const aFileName: String); procedure TfrReport.ExportTo(FilterClass: TfrExportFilterClass; const aFileName: String);
var var
s: String; s: String;
begin begin
ExportStream := TFileStream.Create(UTF8ToSys(aFileName), fmCreate); ExportStream := TFileStream.Create(UTF8ToSys(aFileName), fmCreate);
FCurrentFilter := TfrExportFilter(Filter.NewInstance); FCurrentFilter := FilterClass.Create(ExportStream);
FCurrentFilter.Create(ExportStream);
FCurrentFilter.OnBeginDoc; FCurrentFilter.OnBeginDoc;
CurReport := Self; CurReport := Self;
@ -8244,8 +8245,7 @@ begin
Show_Modal(Self); Show_Modal(Self);
end; end;
FCurrentFilter.Free; FreeAndNil(FCurrentFilter);
FCurrentFilter := nil;
ExportStream.Free; ExportStream.Free;
end; end;