From 8c4f984d95b83ad1b042c247f0597fabed7b2a1f Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 9 Mar 2018 07:37:47 +0000 Subject: [PATCH] * Do not allow to create circular dependencies when setting GroupHeaders.ParentGroupHeader (bug ID #33365) git-svn-id: trunk@57476 - --- components/fpreport/design/regfpdesigner.pp | 30 ++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/components/fpreport/design/regfpdesigner.pp b/components/fpreport/design/regfpdesigner.pp index 5835587074..5d90f3fe84 100644 --- a/components/fpreport/design/regfpdesigner.pp +++ b/components/fpreport/design/regfpdesigner.pp @@ -124,6 +124,12 @@ Type Function BandTypes : TFPReportBandTypes; override; end; + { TParentGroupHeaderBandPropertyEditor } + + TParentGroupHeaderBandPropertyEditor = Class(TGroupHeaderBandPropertyEditor) + Public + function BandAllowed(B: TFPReportCustomBand): Boolean; override; + end; Procedure RegisterFPReportPropEditors; @@ -139,7 +145,7 @@ begin RegisterPropertyEditor(TypeInfo(TFPReportCustomDataFooterBand), TFPReportCustomBand, 'FooterBand', TDataFooterBandPropertyEditor); RegisterPropertyEditor(TypeInfo(TFPReportCustomDataHeaderBand), TFPReportCustomBand, 'HeaderBand', TDataHeaderBandPropertyEditor); RegisterPropertyEditor(TypeInfo(TFPReportCustomDataBand), TFPReportCustomBand, 'MasterBand', TDataBandPropertyEditor); - RegisterPropertyEditor(TypeInfo(TFPReportCustomGroupHeaderBand),TFPReportCustomGroupHeaderBand, 'ParentGroupHeader', TGroupHeaderBandPropertyEditor); + RegisterPropertyEditor(TypeInfo(TFPReportCustomGroupHeaderBand),TFPReportCustomGroupHeaderBand, 'ParentGroupHeader', TParentGroupHeaderBandPropertyEditor); RegisterPropertyEditor(TypeInfo(TFPReportCustomGroupHeaderBand),TFPReportCustomGroupFooterBand, 'GroupHeader', TGroupHeaderBandPropertyEditor); RegisterPropertyEditor(TypeInfo(TFPReportColor),TFPReportComponent,'Color',TFPreportColorPropertyEditor); @@ -181,6 +187,28 @@ begin Result:=N; end; +{ TParentGroupHeaderBandPropertyEditor } + +function TParentGroupHeaderBandPropertyEditor.BandAllowed(B: TFPReportCustomBand): Boolean; + +Var + G,P : TFPReportCustomGroupHeaderBand; + +begin + Result:=inherited BandAllowed(B); + if Result then + begin + P:=B as TFPReportCustomGroupHeaderBand; + G:=GetComponent(0) as TFPReportCustomGroupHeaderBand; + While Result and (P<>Nil) do + begin + Result:=P<>G; + P:=TFPReportGroupHeaderBand(P).ParentGroupHeader; + end; + end; +end; + + { TFPreportColorPropertyEditor } function TFPreportColorPropertyEditor.OrdValueToVisualValue(OrdValue: longint): string;