diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs index 4b54567b96..2dcb1b9fb3 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.Reports.Core public class BaseSection : BaseReportItem,ISimpleContainer { - private bool pageBreakAfter; +// private bool pageBreakAfter; private ReportItemCollection items; public event EventHandler SectionPrinting; @@ -120,13 +120,6 @@ namespace ICSharpCode.Reports.Core public int SectionMargin {get;set;} - public override System.Drawing.Point Location - { - get { return base.Location; } - set { base.Location = value; } - } - - public ReportItemCollection Items { get { @@ -138,17 +131,8 @@ namespace ICSharpCode.Reports.Core } - public virtual bool PageBreakAfter - { - get { - return pageBreakAfter; - } - set { - pageBreakAfter = value; - } - } - - + public virtual bool PageBreakAfter {get;set;} + #endregion #region System.IDisposable interface implementation diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index 2e0332d591..4e1a8199ad 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -16,9 +16,9 @@ namespace ICSharpCode.Reports.Core.Exporter public class BasePager:IReportCreator { private PagesCollection pages; - private Graphics graphics; +// private Graphics graphics; private readonly object pageLock = new object(); - private ILayouter layouter; +// private ILayouter layouter; public event EventHandler PageCreated; public event EventHandler SectionRendering; @@ -38,8 +38,8 @@ namespace ICSharpCode.Reports.Core.Exporter throw new ArgumentNullException ("layouter"); } this.ReportModel = reportModel; - this.layouter = layouter; - this.graphics = CreateGraphicObject.FromSize(this.ReportModel.ReportSettings.PageSize); + this.Layouter = layouter; + this.Graphics = CreateGraphicObject.FromSize(this.ReportModel.ReportSettings.PageSize); } #endregion @@ -98,6 +98,13 @@ namespace ICSharpCode.Reports.Core.Exporter Point offset = new Point(section.Location.X,section.SectionOffset); + // Call layouter only once per section + Rectangle desiredRectangle = Layouter.Layout(this.Graphics,section); + Rectangle sectionRectangle = new Rectangle(section.Location,section.Size); + if (!sectionRectangle.Contains(desiredRectangle)) { + section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom); + } + foreach (BaseReportItem item in section.Items) { ISimpleContainer container = item as ISimpleContainer; @@ -105,8 +112,8 @@ namespace ICSharpCode.Reports.Core.Exporter if (container != null) { ExportContainer exportContainer = StandardPrinter.ConvertToContainer(container,offset); - - StandardPrinter.AdjustBackColor (container); + + StandardPrinter.AdjustBackColor (container); ExporterCollection clist = StandardPrinter.ConvertPlainCollection(container.Items,offset); @@ -115,11 +122,11 @@ namespace ICSharpCode.Reports.Core.Exporter } else { - Rectangle desiredRectangle = layouter.Layout(this.graphics,section); - Rectangle sectionRectangle = new Rectangle(section.Location,section.Size); - if (!sectionRectangle.Contains(desiredRectangle)) { - section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom); - } +// Rectangle desiredRectangle = layouter.Layout(this.graphics,section); +// Rectangle sectionRectangle = new Rectangle(section.Location,section.Size); +// if (!sectionRectangle.Contains(desiredRectangle)) { +// section.Size = new Size(section.Size.Width,desiredRectangle.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom); +// } list = StandardPrinter.ConvertPlainCollection(section.Items,offset); } } @@ -266,14 +273,9 @@ namespace ICSharpCode.Reports.Core.Exporter #region Property's - protected Graphics Graphics { - get { return graphics; } - } - + protected Graphics Graphics {get; private set;} - public ILayouter Layouter { - get { return layouter; } - } + public ILayouter Layouter {get; private set;} public IReportModel ReportModel {get;set;} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs index 4b7bc652dc..782798168e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs @@ -74,7 +74,7 @@ namespace ICSharpCode.Reports.Core.Exporter if (PrintHelper.IsTextOnlyRow(simpleContainer) ) { headerRow = simpleContainer; - + base.PrepareContainerForConverting(section,headerRow); base.CurrentPosition = BaseConvert(exporterCollection,headerRow,base.DefaultLeftPosition,base.CurrentPosition); } @@ -90,6 +90,7 @@ namespace ICSharpCode.Reports.Core.Exporter base.Evaluator.SinglePage.IDataNavigator = childNavigator; // Convert Grouping Header + base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,base.CurrentPosition); childNavigator.Reset();