diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs index d622bc8111..c5873227d5 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs @@ -98,6 +98,8 @@ namespace ICSharpCode.Reporting.ExportRenderer static Size MeasureTextInWpf(ExportText exportText) { + if (exportText.CanGrow) { + FormattedText ft = new FormattedText(exportText.Text, CultureInfo.CurrentCulture, @@ -119,6 +121,8 @@ namespace ICSharpCode.Reporting.ExportRenderer Width = ft.WidthIncludingTrailingWhitespace, Height = ft.Height}; return ss; + } + return new Size(exportText.Size.Width,exportText.Size.Height); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index 27840b792e..223eae1286 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -101,8 +101,19 @@ namespace ICSharpCode.Reporting.PageBuilder BuildPageFooter(); } + protected bool PageFull(IExportColumn column) + { + var rectToPrint = new Rectangle(column.Location,column.Size); + var rr = new Rectangle(new Point(column.Location.X + DetailsRectangle.Location.X,column.Location.Y + DetailsRectangle.Location.Y), + column.Size); + if (!DetailsRectangle.Contains(rr)) { + return true; + } + return false; + } - protected bool PageFull(List columns) + + protected bool old_PageFull(List columns) { var rectToPrint = new Rectangle(columns[0].Location,columns[0].Size); var rr = new Rectangle(new Point(columns[0].Location.X + DetailsRectangle.Location.X,columns[0].Location.Y + DetailsRectangle.Location.Y), @@ -115,22 +126,20 @@ namespace ICSharpCode.Reporting.PageBuilder protected bool PageFull(IExportContainer row) { - var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y), - row.DesiredSize); - if (!DetailsRectangle.Contains(rectToPrint)) { - return true; + if (row.DisplayRectangle.Bottom > DetailEnds.Y) { + return true; } return false; } - protected bool row_PageFull(IExportContainer row) { - var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y), - row.DesiredSize); - if (!DetailsRectangle.Contains(rectToPrint)) { - return true; - } - return false; - } +// protected bool row_PageFull(IExportContainer row) { +// var rectToPrint = new Rectangle(new Point(row.Location.X,row.Location.Y + DetailsRectangle.Location.Y), +// row.DesiredSize); +// if (!DetailsRectangle.Contains(rectToPrint)) { +// return true; +// } +// return false; +// } protected IExportContainer CreateSection(IReportContainer container,Point location) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index 3ea6218a63..e1d6c35d49 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -62,7 +62,9 @@ namespace ICSharpCode.Reporting.PageBuilder collectionSource.Fill(CurrentSection.Items); var convertedItems = converter.CreateConvertedList(ReportModel.DetailSection.Items); converter.SetParent(row,convertedItems); - if (PageFull(convertedItems)) { +MeasureAndArrangeContainer(row); +// if (PageFull(convertedItems)) { + if (PageFull(row)) { row.ExportedItems.AddRange(convertedItems); rows.Add(row); InsertRange(rows); @@ -78,7 +80,7 @@ namespace ICSharpCode.Reporting.PageBuilder } else { row.ExportedItems.AddRange(convertedItems); rows.Add(row); - MeasureAndArrangeContainer(row); +// MeasureAndArrangeContainer(row); position = new Point(CurrentSection.Location.X,position.Y + row.DesiredSize.Height + 5); } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs index 5cbd492db9..77ae7d0978 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs @@ -97,6 +97,13 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory } */ + [Test] + public void ReportContains_2_Pages () { + reportCreator.BuildExportList(); + Assert.That(reportCreator.Pages.Count,Is.EqualTo(2)); + } + + [Test] public void DetailContainsOneDataItem() { reportCreator.BuildExportList();