From 6bf5ba02842952a3b96e146940c88450d6d07d37 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 2 Oct 2022 21:31:29 +0000 Subject: [PATCH] tvplanit: Show current page number and page count in PrintPreview. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8507 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/source/vpprtprv.pas | 7 +++++ components/tvplanit/source/vpprtprvdlg.lfm | 30 +++++++++++++++++++--- components/tvplanit/source/vpprtprvdlg.lrj | 1 + components/tvplanit/source/vpprtprvdlg.pas | 28 ++++++++++++++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/components/tvplanit/source/vpprtprv.pas b/components/tvplanit/source/vpprtprv.pas index 6fc649226..4fc92ffb5 100644 --- a/components/tvplanit/source/vpprtprv.pas +++ b/components/tvplanit/source/vpprtprv.pas @@ -107,6 +107,7 @@ type FScrollY: Integer; FOnPageChange: TVpPageChange; FDefaultPopup: TPopupMenu; + function GetPageCount: Integer; protected function CalculatePageHeight(Printer: TPrinter): Integer; @@ -175,6 +176,7 @@ type procedure ForceUpdate; procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + property PageCount: Integer read GetPageCount; property Printer: TPrinter read FPrinter write SetPrinter; property DestPrinter: TPrinter read FPrinter write SetPrinter; @@ -506,6 +508,11 @@ begin end; end; +function TVpPrintPreview.GetPageCount: Integer; +begin + Result := FPageInfo.Count; +end; + procedure TVpPrintPreview.InitHScrollBar(PageSize, TotalSize: Integer); var ScrollBarInfo: TScrollInfo; diff --git a/components/tvplanit/source/vpprtprvdlg.lfm b/components/tvplanit/source/vpprtprvdlg.lfm index 6868a649e..7a30b32b7 100644 --- a/components/tvplanit/source/vpprtprvdlg.lfm +++ b/components/tvplanit/source/vpprtprvdlg.lfm @@ -14,7 +14,6 @@ object frmPrintPreview: TfrmPrintPreview OnCreate = FormCreate OnKeyDown = FormKeyDown OnShow = FormShow - LCLVersion = '2.3.0.0' object Panel1: TPanel Left = 0 Height = 56 @@ -42,6 +41,7 @@ object frmPrintPreview: TfrmPrintPreview ShowCaptions = True ShowHint = True TabOrder = 0 + OnResize = ToolBar1Resize object btnPrint: TToolButton Left = 1 Top = 0 @@ -50,7 +50,7 @@ object frmPrintPreview: TfrmPrintPreview end object ToolButton3: TToolButton Left = 55 - Height = 5 + Height = 25 Top = 0 Caption = 'ToolButton3' ImageIndex = 2 @@ -86,7 +86,7 @@ object frmPrintPreview: TfrmPrintPreview end object ToolButton8: TToolButton Left = 152 - Height = 5 + Height = 25 Top = 0 Caption = 'ToolButton8' ImageIndex = 6 @@ -98,6 +98,30 @@ object frmPrintPreview: TfrmPrintPreview Action = actCancel AutoSize = True end + object pnlPageCount: TPanel + AnchorSideTop.Side = asrCenter + Left = 266 + Height = 25 + Top = 0 + Width = 119 + BevelOuter = bvNone + ClientHeight = 25 + ClientWidth = 119 + TabOrder = 0 + object PageInfo: TLabel + AnchorSideTop.Control = pnlPageCount + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = pnlPageCount + AnchorSideRight.Side = asrBottom + Left = 64 + Height = 15 + Top = 5 + Width = 47 + Anchors = [akTop, akRight] + BorderSpacing.Right = 8 + Caption = 'PageInfo' + end + end end object Panel2: TPanel Left = 0 diff --git a/components/tvplanit/source/vpprtprvdlg.lrj b/components/tvplanit/source/vpprtprvdlg.lrj index b7d595bb5..f434291de 100644 --- a/components/tvplanit/source/vpprtprvdlg.lrj +++ b/components/tvplanit/source/vpprtprvdlg.lrj @@ -3,6 +3,7 @@ {"hash":106991073,"name":"tfrmprintpreview.toolbar1.caption","sourcebytes":[84,111,111,108,66,97,114,49],"value":"ToolBar1"}, {"hash":160486419,"name":"tfrmprintpreview.toolbutton3.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,51],"value":"ToolButton3"}, {"hash":160486424,"name":"tfrmprintpreview.toolbutton8.caption","sourcebytes":[84,111,111,108,66,117,116,116,111,110,56],"value":"ToolButton8"}, +{"hash":131727791,"name":"tfrmprintpreview.pageinfo.caption","sourcebytes":[80,97,103,101,73,110,102,111],"value":"PageInfo"}, {"hash":45584468,"name":"tfrmprintpreview.actprint.caption","sourcebytes":[38,80,114,105,110,116],"value":"&Print"}, {"hash":5738580,"name":"tfrmprintpreview.actprint.hint","sourcebytes":[80,114,105,110,116],"value":"Print"}, {"hash":172865349,"name":"tfrmprintpreview.actfirstpage.caption","sourcebytes":[38,70,105,114,115,116,32,112,97,103,101],"value":"&First page"}, diff --git a/components/tvplanit/source/vpprtprvdlg.pas b/components/tvplanit/source/vpprtprvdlg.pas index 5619f7f6f..ceb7be3fe 100644 --- a/components/tvplanit/source/vpprtprvdlg.pas +++ b/components/tvplanit/source/vpprtprvdlg.pas @@ -51,10 +51,12 @@ type TfrmPrintPreview = class(TForm) Bevel1: TBevel; + PageInfo: TLabel; Panel1: TPanel; cboxZoom: TComboBox; btnCancel: TToolButton; Panel2: TPanel; + pnlPageCount: TPanel; VpPrintPreview1: TVpPrintPreview; VpPrintFormatComboBox1: TVpPrintFormatComboBox; ToolBar1: TToolBar; @@ -86,6 +88,7 @@ type procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure ToolBar1Resize(Sender: TObject); procedure VpPrintFormatComboBox1Change(Sender: TObject); private @@ -93,6 +96,7 @@ type procedure PopulateImageList; procedure SetCaptions; procedure SetDrawingStyle(AValue: TVpDrawingStyle); + procedure UpdatePageInfo; public Resource: TVpResource; @@ -234,6 +238,7 @@ procedure TfrmPrintPreview.VpPrintFormatComboBox1Change(Sender: TObject); begin VpPrintPreview1.ForceUpdate; VpPrintPreview1.FirstPage; + UpdatePageInfo; end; procedure TfrmPrintPreview.OKBtnClick(Sender: TObject); @@ -280,6 +285,7 @@ begin EditForm.VpPrintPreview1.ForceUpdate; EditForm.VpPrintPreview1.FirstPage; EditForm.DrawingStyle := FDrawingStyle; +// EditForm.PageInfo.Caption := Format('%d pages', [EditForm.VpPrintPreview1.PageCount]); EditForm.ShowModal; if EditForm.ReturnCode = rtCommit then begin Result := True; @@ -383,6 +389,9 @@ begin VpPrintPreview1.ZoomFactor := TVpPPZoomFactor(cboxZoom.ItemIndex); end; +{ Print button clicked. The PrintView form itself does not send anything to + the printer. The calling procedure - in this case: the PrintPreviewDialog.Execute + method - must do this if the ReturnCode of the PrintPreview is rtCommit. } procedure TfrmPrintPreview.actPrintExecute(Sender: TObject); begin ReturnCode := rtCommit; @@ -392,23 +401,29 @@ end; procedure TfrmPrintPreview.actFirstPageExecute(Sender: TObject); begin VpPrintPreview1.FirstPage; + UpdatePageInfo; end; procedure TfrmPrintPreview.actPrevPageExecute(Sender: TObject); begin VpPrintPreview1.PrevPage; + UpdatePageInfo; end; procedure TfrmPrintPreview.actNextPageExecute(Sender: TObject); begin VpPrintPreview1.NextPage; + UpdatePageInfo; end; procedure TfrmPrintPreview.actLastPageExecute(Sender: TObject); begin VpPrintPreview1.LastPage; + UpdatePageInfo; end; +{ OnUpdate handler for the main form actionlist. Enables/disables the actions + (first/previous/next/last page buttons). } procedure TfrmPrintPreview.actMainUpdate(Action: TBasicAction; var Handled: Boolean); begin @@ -457,6 +472,9 @@ var begin if VpPrintPreview1.ControlLink = nil then exit; + + UpdatePageInfo; + (* cnv := TControlCanvas.Create; try @@ -475,5 +493,15 @@ begin end;*) end; +procedure TfrmPrintPreview.ToolBar1Resize(Sender: TObject); +begin + pnlPageCount.Width := Toolbar1.ClientWidth - pnlPageCount.Left; +end; + +procedure TfrmPrintPreview.UpdatePageInfo; +begin + PageInfo.Caption := Format('page %d of %d', [VpPrintPreview1.CurPage+1, VpPrintPreview1.PageCount]); +end; + end.