lazreport: revert revision 49710 #0c5e2500dc so code in Filter.AfterExport (e.g. SpreadsheetExport) that depends on file being already written works.

Adapts PDFExport to write the Stream in EndDoc instead of Destroy to avoid crash

git-svn-id: trunk@49718 -
This commit is contained in:
blikblum 2015-08-27 12:52:54 +00:00
parent 982ce0aebc
commit 647b02469b
2 changed files with 10 additions and 2 deletions

View File

@ -54,6 +54,7 @@ type
constructor Create(AStream: TStream); override;
destructor Destroy; override;
procedure OnBeginPage; override;
procedure OnEndDoc; override;
procedure OnEndPage; override;
procedure ShowBackGround(View: TfrView; x, y, h, w: integer);
procedure Frame(View: TfrView; x, y, h, w: integer);
@ -166,7 +167,6 @@ end;
destructor TfrTNPDFExportFilter.Destroy;
begin
PDF.GetPdfDoc.SaveToStream(Stream);
PDF.Free;
DummyControl.Free;
inherited;
@ -195,6 +195,11 @@ begin
PRPanel.Height := PPage.Height;
end;
procedure TfrTNPDFExportFilter.OnEndDoc;
begin
PDF.GetPdfDoc.SaveToStream(Stream);
end;
procedure TfrTNPDFExportFilter.OnEndPage;
begin
PDF.Print(PPage);

View File

@ -10890,11 +10890,14 @@ begin
end
else
Result:=false;
//is necessary to destroy the file stream before calling FCurrentFilter.AfterExport
//to ensure the exported file is properly written to the file system
ExportStream.Free;
FCurrentFilter.Stream := nil;
if Result then
FCurrentFilter.AfterExport;
FreeAndNil(FCurrentFilter);
ExportStream.Free;
end;
procedure TfrReport.FillQueryParams;