mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 15:59:13 +02:00
LazReport, improved class type checking in ExportTo method from Luiz Americo, issue #14116
git-svn-id: trunk@21112 -
This commit is contained in:
parent
83b97ddf94
commit
0fbf06339a
@ -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)
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user