From 6aad5cc192af6fa7aba70d9a76a10e2830549593 Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 9 Mar 2018 08:34:23 +0000 Subject: [PATCH] * Add menu item to adjust band height to content (Bug ID #33362) git-svn-id: trunk@57481 - --- .../design/fpreportdesignobjectlist.pp | 34 +++++++++++++++++++ .../design/frmfpreportdesignermain.lfm | 8 +++++ .../design/frmfpreportdesignermain.pp | 15 ++++++++ 3 files changed, 57 insertions(+) diff --git a/components/fpreport/design/fpreportdesignobjectlist.pp b/components/fpreport/design/fpreportdesignobjectlist.pp index 38a1b26d3c..98abec8d1a 100644 --- a/components/fpreport/design/fpreportdesignobjectlist.pp +++ b/components/fpreport/design/fpreportdesignobjectlist.pp @@ -117,6 +117,8 @@ Type procedure ResizeSelection(aHeight: TSizeAdjust; HSize: TFPReportUnits; aWidth: TSizeAdjust; WSize: TFPReportUnits);virtual; Procedure ResizeSelection(Delta : TPoint; ADPI : integer; ApplyToPos : TResizeHandlePosition);virtual; Procedure FrameSelection(aFrameAction : TFrameActions; doClearFirst : Boolean); + Procedure AdjustSelectedBandToContent(B : TFPReportCustomBand); + Procedure AdjustSelectedBandsToContent; Procedure ResetModified; Procedure SelectElement(E : TFPReportElement); // Will call selectionchanged, except when result=odrPage @@ -636,6 +638,38 @@ begin ReportChanged; end; +procedure TReportObjectList.AdjustSelectedBandToContent(B: TFPReportCustomBand); + +Var + I : Integer; + H,P : TFPReportUnits; + +begin + if B.ChildCount=0 then + exit; + H:=B.Child[0].Layout.Height+B.Child[0].Layout.Top; + For I:=1 to B.ChildCount-1 do + begin + P:=B.Child[i].Layout.Height+B.Child[i].Layout.Top; + If P>H then + H:=P; + end; + B.Layout.Height:=H; + SelectRectInvalid; + ReportChanged; +end; + +procedure TReportObjectList.AdjustSelectedBandsToContent; + +Var + I : integer; + +begin + For I:=0 to Count-1 do + If Objects[i].Selected and Objects[i].IsBand then + AdjustSelectedBandToContent(Objects[i].AsBand); +end; + procedure TReportObjectList.ResetModified; begin FModified:=False; diff --git a/components/fpreport/design/frmfpreportdesignermain.lfm b/components/fpreport/design/frmfpreportdesignermain.lfm index 9a742308b4..b927e65047 100644 --- a/components/fpreport/design/frmfpreportdesignermain.lfm +++ b/components/fpreport/design/frmfpreportdesignermain.lfm @@ -507,6 +507,9 @@ object FPReportDesignerForm: TFPReportDesignerForm object MIResizeVSmallest: TMenuItem Action = AResizeVSmallest end + object MenuItem3: TMenuItem + Action = AResizeBandToFit + end end object MFrames: TMenuItem Caption = 'Frames' @@ -907,6 +910,11 @@ object FPReportDesignerForm: TFPReportDesignerForm OnExecute = AFileSaveAsExecute OnUpdate = AFileSaveAsUpdate end + object AResizeBandToFit: TAction + Caption = 'Adjust Band height to content' + OnExecute = AResizeBandToFitExecute + OnUpdate = AResizeBandToFitUpdate + end end object SDReport: TSaveDialog DefaultExt = '.json' diff --git a/components/fpreport/design/frmfpreportdesignermain.pp b/components/fpreport/design/frmfpreportdesignermain.pp index 89833fddb8..890629a1e4 100644 --- a/components/fpreport/design/frmfpreportdesignermain.pp +++ b/components/fpreport/design/frmfpreportdesignermain.pp @@ -74,6 +74,7 @@ type AAlignVCenter: TAction; AAlignBottom: TAction; AAlign: TAction; + AResizeBandToFit: TAction; AFileSaveAs: TAction; ARecent: TAction; AReportData: TAction; @@ -100,6 +101,7 @@ type ILReport: TImageList; MenuItem1: TMenuItem; MenuItem2: TMenuItem; + MenuItem3: TMenuItem; MISaveAs: TMenuItem; MIPreview: TMenuItem; MIframeBottom: TMenuItem; @@ -248,6 +250,8 @@ type procedure AReportPropertiesUpdate(Sender: TObject); procedure AReportVariablesExecute(Sender: TObject); procedure AReportVariablesUpdate(Sender: TObject); + procedure AResizeBandToFitExecute(Sender: TObject); + procedure AResizeBandToFitUpdate(Sender: TObject); procedure AResizeExecute(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormDestroy(Sender: TObject); @@ -1208,6 +1212,17 @@ begin (Sender as Taction).Enabled:=Assigned(Report) and (rdoManageVariables in DesignOptions); end; +procedure TFPReportDesignerForm.AResizeBandToFitExecute(Sender: TObject); +begin + If Assigned(CurrentDesigner) then + CurrentDesigner.Objects.AdjustSelectedBandsToContent; +end; + +procedure TFPReportDesignerForm.AResizeBandToFitUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=Assigned(CurrentDesigner) and (CurrentDesigner.Objects.HaveSelection); +end; + procedure TFPReportDesignerForm.AResizeExecute(Sender: TObject); Var