From 6c04ae3b35c04258168466a9166bfbe26dd3def5 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Fri, 22 Jan 2010 19:57:39 +0000 Subject: [PATCH] fixed http://community.sharpdevelop.net/forums/AddPost.aspx?ReplyToPostID=29354&Quote=False git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5425 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/BaseClasses/Printing/Layouter.cs | 11 +-- .../BaseClasses/Printing/PrintHelper.cs | 14 ++++ .../Project/BaseClasses/SinglePage.cs | 1 - .../Project/BaseItems/BaseReportItem.cs | 4 +- .../Project/BaseItems/BaseTableItem.cs | 78 +++++++++---------- .../Exporter/Converters/RowConverter.cs | 6 +- .../Project/Exporter/DataPageBuilder.cs | 2 - .../Project/Interfaces/IContainerItem.cs | 1 - .../Project/Printing/AbstractDataRenderer.cs | 17 ++-- .../Project/Printing/AbstractRenderer.cs | 2 + .../Project/Printing/RenderDataReport.cs | 2 +- .../Project/ReportEngine.cs | 25 +----- 12 files changed, 72 insertions(+), 91 deletions(-) diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs index 93fccfb7be..add727fa81 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs @@ -39,9 +39,7 @@ namespace ICSharpCode.Reports.Core System.Collections.Generic.IEnumerable canGrowShrinkCollection = from bt in container.Items where bt.CanGrow == true select bt; if (canGrowShrinkCollection.Count() > 0 ) { - FindLowestElement (container.Items); int extend = containerItem.Size.Height - canGrowShrinkCollection.First().Size.Height; -// Rectangle surroundingRec = this.FindSurroundingRectangle_2(graphics,container.Items); Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection); if (surroundingRec.Height > desiredContainerRectangle.Height) { @@ -51,6 +49,7 @@ namespace ICSharpCode.Reports.Core surroundingRec.Size.Height + extend); } } + return desiredContainerRectangle; } @@ -64,7 +63,7 @@ namespace ICSharpCode.Reports.Core throw new ArgumentNullException("section"); } section.Items.SortByLocation(); - FindLowestElement (section.Items); + IEnumerable canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt; Rectangle desiredSectionRectangle = new Rectangle(section.Location.X, @@ -85,11 +84,7 @@ namespace ICSharpCode.Reports.Core return desiredSectionRectangle; } - private BaseReportItem FindLowestElement (ReportItemCollection items) - { - - return null; - } + private Rectangle FindSurroundingRectangle_2 (Graphics graphics,IEnumerable canGrowShrinkCollection) { diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs index 9085ae3f05..5c6c13daf9 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs @@ -23,10 +23,24 @@ namespace ICSharpCode.Reports.Core } #region Layout + public static void SetLayoutForRow (Graphics graphics, ILayouter layouter,BaseSection section) + { + IContainerItem row = section.Items[0] as IContainerItem; + Size containerSize = new Size (section.Items[0].Size.Width,section.Items[0].Size.Height); + BaseReportItem item = row as BaseReportItem; + int extend = item.Size.Height - row.Items[0].Size.Height; + Rectangle textRect = layouter.Layout(graphics,row); + if (textRect.Height >= item.Size.Height) { + item.Size = new Size(item.Size.Width,textRect.Height + extend ); + } + section.Items[0].Size = containerSize; + } + public static void SetLayoutForRow (Graphics graphics, ILayouter layouter,IContainerItem row) { BaseReportItem item = row as BaseReportItem; + Size containerSize = new Size (item.Size.Width,item.Size.Height); int extend = item.Size.Height - row.Items[0].Size.Height; Rectangle textRect = layouter.Layout(graphics,row); if (textRect.Height >= item.Size.Height) { diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs index 107ea169bc..0234b0cd4e 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs @@ -40,7 +40,6 @@ namespace ICSharpCode.Reports.Core throw new ArgumentNullException("reportModel"); } - Console.WriteLine("CalculatePageBounds for {0}",this.PageNumber); sectionBounds.MeasureReportHeader(reportModel.ReportHeader); //PageHeader diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs index b9d16ab882..a0b34b16a5 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs @@ -32,9 +32,9 @@ namespace ICSharpCode.Reports.Core { private int sectionOffset; private Font font; - [Obsolete] + [Obsolete ("will be deleted")] public event EventHandler ItemPrinting; - [Obsolete] + [Obsolete("will be deleted")] public event EventHandler ItemPrinted; private RectangleShape backgroundShape = new RectangleShape(); diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs index 5534123012..4e03d4fb0d 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs @@ -22,7 +22,7 @@ namespace ICSharpCode.Reports.Core { private SectionBounds sectionBounds; private IDataNavigator dataNavigator; private IExpressionEvaluatorFacade expressionEvaluatorFacade; - private ISinglePage singlePage; +// private ISinglePage singlePage; private ILayouter layouter; @@ -84,7 +84,7 @@ namespace ICSharpCode.Reports.Core { if (rpea == null) { throw new ArgumentNullException("rpea"); } -// +// Point saveLocation = this.Location; Point currentPosition = new Point(this.SectionBounds.DetailStart.X,rpea.LocationAfterDraw.Y); @@ -129,8 +129,8 @@ namespace ICSharpCode.Reports.Core { rpea.LocationAfterDraw = new Point(rpea.LocationAfterDraw.X,rpea.LocationAfterDraw.Y + 20); base.NotifyAfterPrint (rpea.LocationAfterDraw); } - - + + private Point PrintRow (ReportPageEventArgs rpea,BaseRowItem row,Point drawAt, int leftX) { int extend = row.Size.Height - row.Items[0].Size.Height; @@ -162,48 +162,44 @@ namespace ICSharpCode.Reports.Core { public SectionBounds SectionBounds{ get {return this.sectionBounds;} } + + + #region Interface implementation of 'ITableContainer' + + public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter) + { - - #region Interface implementation of 'ITableContainer' - - public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter) - { - - this.sectionBounds = sectionBounds; - this.Parent = parent; - this.layouter = layouter; - this.Render (rpea); - } - - - public ReportItemCollection Items { - get { - if (this.items == null) { - this.items = new ReportItemCollection(); - } - return items; + this.sectionBounds = sectionBounds; + this.Parent = parent; + this.layouter = layouter; + this.Render (rpea); + } + + + public ReportItemCollection Items { + get { + if (this.items == null) { + this.items = new ReportItemCollection(); } + return items; } + } - - public IDataNavigator DataNavigator { - set { dataNavigator = value; - if (this.dataNavigator.CurrentRow < 0 ) { - this.dataNavigator.MoveNext(); - } + + public IDataNavigator DataNavigator { + set { dataNavigator = value; + if (this.dataNavigator.CurrentRow < 0 ) { + this.dataNavigator.MoveNext(); } } - - - public IExpressionEvaluatorFacade ExpressionEvaluatorFacade { - set { this.expressionEvaluatorFacade = value; } - } - - - public ISinglePage SinglePage { - set { singlePage = value; } - } - - #endregion } + + + public IExpressionEvaluatorFacade ExpressionEvaluatorFacade { + set { this.expressionEvaluatorFacade = value; } + } + + + #endregion } +} diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs index 1cbddf3c9d..d8937a6139 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs @@ -55,7 +55,7 @@ namespace ICSharpCode.Reports.Core.Exporter { ExporterCollection mylist = new ExporterCollection(); BaseSection section = parent as BaseSection; - Size containerSize = new Size (section.Items[0].Size.Width,section.Items[0].Size.Height); + IContainerItem row = section.Items[0] as IContainerItem; do { @@ -65,7 +65,8 @@ namespace ICSharpCode.Reports.Core.Exporter // section.Size = this.SectionBounds.DetailSectionRectangle.Size; base.FireSectionRendering(section); - PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,row); + + PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,section); mylist.AddRange(this.ConvertTextOnlyRow(parent,item)); section.SectionOffset += section.Size.Height + 2 * base.SinglePage.SectionBounds.Gap; @@ -77,7 +78,6 @@ namespace ICSharpCode.Reports.Core.Exporter section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y; mylist.Clear(); } - section.Items[0].Size = containerSize; } while (base.DataNavigator.MoveNext()); diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index 8584f37e80..e9ae4b5d65 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -52,9 +52,7 @@ namespace ICSharpCode.Reports.Core.Exporter protected override void BuildNewPage () { - Console.WriteLine("BuildNewPage"); base.BuildNewPage(); - if (this.dataNavigator != null) { this.SinglePage.StartRow = this.dataNavigator.CurrentRow +1; } diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs index 4afa737f0a..ba802523d7 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs @@ -27,6 +27,5 @@ namespace ICSharpCode.Reports.Core.Interfaces IDataNavigator DataNavigator {set;} IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;} void RenderTable (BaseReportItem parent, SectionBounds sectionBounds, ReportPageEventArgs rpea,ILayouter layouter); - ISinglePage SinglePage {set;} } } diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs index b0740c9a4b..4c6d02fb4f 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs @@ -81,19 +81,13 @@ namespace ICSharpCode.Reports.Core IContainerItem container, ReportPageEventArgs rpea) { - if (container == null) { - return new Point(section.Location.Y, section.Size.Height); - - } Point drawPoint = Point.Empty; - - //Always set section.size to it's original value - - section.Size = this.SectionBounds.DetailSectionRectangle.Size; - - PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,container); - if (section.Visible){ + + //Always set section.size to it's original value + section.Size = this.SectionBounds.DetailSectionRectangle.Size; + + PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,section); section.Render (rpea); foreach (BaseReportItem item in section.Items) { if (item.Parent == null) { @@ -111,6 +105,7 @@ namespace ICSharpCode.Reports.Core } return drawPoint; } + return drawPoint; } diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs index 105a950939..79c910ac03 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs @@ -189,6 +189,7 @@ namespace ICSharpCode.Reports.Core public static void PageBreak(ReportPageEventArgs pea) { + System.Console.WriteLine("PageBreak"); if (pea == null) { throw new ArgumentNullException("pea"); } @@ -197,6 +198,7 @@ namespace ICSharpCode.Reports.Core } + public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds) { if (rectangle.Bottom > bounds.PageFooterRectangle.Top) { diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs index 26fe19905c..b96ad8e80e 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs @@ -157,7 +157,7 @@ namespace ICSharpCode.Reports.Core { tableContainer.DataNavigator = nav; tableContainer.Parent = base.CurrentSection; tableContainer.ExpressionEvaluatorFacade = base.ExpressionFassade; - tableContainer.SinglePage = base.SinglePage; +// tableContainer.SinglePage = base.SinglePage; tableContainer.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout); this.ReportDocument.DetailsDone = true; diff --git a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs index 0e91ae9104..440924449f 100644 --- a/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs +++ b/src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs @@ -56,7 +56,6 @@ namespace ICSharpCode.Reports.Core { ConnectionObject conObj = null; if (reportParameters != null) { if (reportParameters.ConnectionObject != null) { - UpdateSqlParameters (settings,reportParameters.SqlParameters); conObj = reportParameters.ConnectionObject; } } @@ -66,22 +65,6 @@ namespace ICSharpCode.Reports.Core { } return conObj; } - - - private static void UpdateSqlParameters (ReportSettings settings, - ParameterCollection parameters) - { - /* - if (parameters != null) { - System.Collections.Generic.List sql = new System.Collections.Generic.List(); - foreach (SqlParameter sourcePar in parameters) { - SqlParameter destinationPar = settings.ParameterCollection.Find(sourcePar.ParameterName); - destinationPar.ParameterValue = sourcePar.ParameterValue; - } - } - */ - } - #endregion @@ -508,7 +491,7 @@ namespace ICSharpCode.Reports.Core { /// /// - public IReportCreator CreatePageBuilder (IReportModel reportModel) + public static IReportCreator CreatePageBuilder (IReportModel reportModel) { if (reportModel == null) { throw new ArgumentNullException("reportModel"); @@ -527,7 +510,7 @@ namespace ICSharpCode.Reports.Core { /// /// /// - public IReportCreator CreatePageBuilder (IReportModel reportModel, + public static IReportCreator CreatePageBuilder (IReportModel reportModel, DataSet dataSet, ReportParameters reportParameter) { @@ -550,7 +533,7 @@ namespace ICSharpCode.Reports.Core { /// /// - public IReportCreator CreatePageBuilder (IReportModel reportModel, + public static IReportCreator CreatePageBuilder (IReportModel reportModel, DataTable dataTable, ReportParameters reportParameters) { @@ -579,7 +562,7 @@ namespace ICSharpCode.Reports.Core { /// /// /// - public IReportCreator CreatePageBuilder (IReportModel reportModel, + public static IReportCreator CreatePageBuilder (IReportModel reportModel, IList list, ReportParameters reportParameters) {