mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 09:56:12 +02:00
* Use bitmap to draw on, so as to speed up drawing
git-svn-id: trunk@57684 -
This commit is contained in:
parent
b31e9e78e1
commit
50c9ee5151
@ -7,6 +7,7 @@ object FPReportPreviewForm: TFPReportPreviewForm
|
|||||||
ClientHeight = 844
|
ClientHeight = 844
|
||||||
ClientWidth = 738
|
ClientWidth = 738
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
|
OnDestroy = FormDestroy
|
||||||
LCLVersion = '1.9.0.0'
|
LCLVersion = '1.9.0.0'
|
||||||
object TBPreview: TToolBar
|
object TBPreview: TToolBar
|
||||||
Left = 0
|
Left = 0
|
||||||
|
@ -89,11 +89,15 @@ type
|
|||||||
procedure AZoomResetExecute(Sender: TObject);
|
procedure AZoomResetExecute(Sender: TObject);
|
||||||
procedure EPageEditingDone(Sender: TObject);
|
procedure EPageEditingDone(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure PBPreviewClick(Sender: TObject);
|
procedure PBPreviewClick(Sender: TObject);
|
||||||
procedure PBPreviewMouseLeave(Sender: TObject);
|
procedure PBPreviewMouseLeave(Sender: TObject);
|
||||||
procedure PBPreviewMouseMove(Sender: TObject; Shift: TShiftState; X,
|
procedure PBPreviewMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||||
Y: Integer);
|
Y: Integer);
|
||||||
private
|
private
|
||||||
|
FHorzOffset : Integer;
|
||||||
|
FBitmap:TBitmap;
|
||||||
|
FLastPage : Integer;
|
||||||
FCurrentZoom : Integer;
|
FCurrentZoom : Integer;
|
||||||
FOnOpenURL: TOpenURLEvent;
|
FOnOpenURL: TOpenURLEvent;
|
||||||
FRender:TFPReportExportCanvas;
|
FRender:TFPReportExportCanvas;
|
||||||
@ -101,6 +105,7 @@ type
|
|||||||
procedure ExportReport(REC: TFPReportExporterClass);
|
procedure ExportReport(REC: TFPReportExporterClass);
|
||||||
procedure FillExportMenu;
|
procedure FillExportMenu;
|
||||||
function GetPageIndex: Integer;
|
function GetPageIndex: Integer;
|
||||||
|
procedure RecreateBitmap;
|
||||||
procedure ResizePreview;
|
procedure ResizePreview;
|
||||||
procedure SetCurrentZoom(AValue: Integer);
|
procedure SetCurrentZoom(AValue: Integer);
|
||||||
procedure SetPageIndex(AValue: Integer);
|
procedure SetPageIndex(AValue: Integer);
|
||||||
@ -279,7 +284,8 @@ begin
|
|||||||
FRender.VDPI:=PixelsPerInch;
|
FRender.VDPI:=PixelsPerInch;
|
||||||
FRender.Zoom:=Zooms[FCurrentZoom];
|
FRender.Zoom:=Zooms[FCurrentZoom];
|
||||||
ResizePreview;
|
ResizePreview;
|
||||||
Frender.RenderCurrentPage;
|
FLastPage:=-1; // Force recreate
|
||||||
|
PBPreview.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFPReportPreviewForm.GetPageIndex: Integer;
|
function TFPReportPreviewForm.GetPageIndex: Integer;
|
||||||
@ -291,6 +297,7 @@ procedure TFPReportPreviewForm.SetPageIndex(AValue: Integer);
|
|||||||
begin
|
begin
|
||||||
FRender.PageIndex:=AValue;
|
FRender.PageIndex:=AValue;
|
||||||
EPage.Text:=IntToStr(AValue+1);
|
EPage.Text:=IntToStr(AValue+1);
|
||||||
|
PBPreview.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFPReportPreviewForm.GetEnableHyperLinks: Boolean;
|
function TFPReportPreviewForm.GetEnableHyperLinks: Boolean;
|
||||||
@ -323,16 +330,30 @@ Var
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
FRender.GetCurrentPageRenderSize(W,H);
|
FRender.GetCurrentPageRenderSize(W,H);
|
||||||
PBPreview.Width:=W+FRender.HorzOffset;
|
PBPreview.Width:=W+FHorzOffset*2;
|
||||||
PBPreview.Height:=H;
|
PBPreview.Height:=H;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFPReportPreviewForm.RecreateBitmap;
|
||||||
|
|
||||||
|
Var
|
||||||
|
W,H : Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FRender.GetCurrentPageRenderSize(W,H);
|
||||||
|
FBitmap.SetSize(W,H);
|
||||||
|
FRender.RenderCurrentPage;
|
||||||
|
FLastPage:=FRender.PageIndex;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TFPReportPreviewForm.DoPaintReport(Sender: TObject);
|
procedure TFPReportPreviewForm.DoPaintReport(Sender: TObject);
|
||||||
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if FLastPage<>FRender.PageIndex then
|
||||||
|
RecreateBitmap;
|
||||||
ResizePreview;
|
ResizePreview;
|
||||||
FRender.Execute;
|
PBPreview.Canvas.Draw(FHorzOffset*2,0,FBitmap);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TFPReportPreviewForm.LoadFromResource: Boolean;
|
class function TFPReportPreviewForm.LoadFromResource: Boolean;
|
||||||
@ -341,18 +362,27 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFPReportPreviewForm.FormCreate(Sender: TObject);
|
procedure TFPReportPreviewForm.FormCreate(Sender: TObject);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
FHorzOffset:=100;
|
||||||
FRender:=TFPReportExportCanvas.Create(Self);
|
FRender:=TFPReportExportCanvas.Create(Self);
|
||||||
FRender.HyperLinksEnabled:=True;
|
FRender.HyperLinksEnabled:=True;
|
||||||
FRender.Canvas:=PBPReview.Canvas;
|
FBitmap:=TBitmap.Create;
|
||||||
|
FLastPage:=-1;
|
||||||
|
FRender.Zoom:=1;
|
||||||
|
FRender.Canvas:=FBitmap.Canvas;
|
||||||
PBPreview.OnPaint:=@DoPaintReport;
|
PBPreview.OnPaint:=@DoPaintReport;
|
||||||
AExportPDF.Enabled:=ReportExportManager.IndexOfExporter(PDFExport)<>-1;
|
AExportPDF.Enabled:=ReportExportManager.IndexOfExporter(PDFExport)<>-1;
|
||||||
APrint.Enabled:=ReportExportManager.IndexOfExporter(PrintExport)<>-1;
|
APrint.Enabled:=ReportExportManager.IndexOfExporter(PrintExport)<>-1;
|
||||||
CurrentZoom:=0;
|
CurrentZoom:=0;
|
||||||
FRender.HorzOffset:=100;
|
|
||||||
FillExportMenu;
|
FillExportMenu;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFPReportPreviewForm.FormDestroy(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FBitmap.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TFPReportPreviewForm.ShowHyperLink(const AURL: String);
|
procedure TFPReportPreviewForm.ShowHyperLink(const AURL: String);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user