diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs index 10f11b6f87..6f44c4da66 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs @@ -23,7 +23,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing public static void SetLayoutForRow (Graphics graphics, ILayouter layouter,ISimpleContainer row) { - Console.WriteLine("{0}",row.Size); Rectangle textRect = layouter.Layout(graphics,row); if (textRect.Height > row.Size.Height) { row.Size = new Size(row.Size.Width,textRect.Height + 5); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs index ffa43e9767..864c7c2a39 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs @@ -188,7 +188,7 @@ namespace ICSharpCode.Reports.Core.Exporter } - protected Size RestoreSize + protected Size RestoreSectionSize { get {return this.saveSize;} } @@ -215,12 +215,15 @@ namespace ICSharpCode.Reports.Core.Exporter } + protected Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) { + var rowSize = simpleContainer.Size; FillRow(simpleContainer); PrepareContainerForConverting(section,simpleContainer); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); AfterConverting (section,mylist); + simpleContainer.Size = rowSize; return curPos; } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index 5c3b3ff068..a09fb33aec 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -63,19 +63,10 @@ namespace ICSharpCode.Reports.Core.Exporter Size groupSize = Size.Empty; Size childSize = Size.Empty; -// Console.WriteLine("-------------------START"); -// -// Console.WriteLine ("section {0}",section.Size); -// -// Console.WriteLine(); - - if (section.Items.IsGrouped) { groupSize = section.Items[0].Size; childSize = section.Items[1].Size; -// Console.WriteLine ("group {0}",section.Items[0].Size); -// Console.WriteLine ("detail {0}",section.Items[1].Size); } Rectangle pageBreakRect = Rectangle.Empty; @@ -95,39 +86,30 @@ namespace ICSharpCode.Reports.Core.Exporter base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition); - section.Size = base.RestoreSize; + section.Size = base.RestoreSectionSize; section.Items[0].Size = groupSize; section.Items[1].Size = childSize; childNavigator.Reset(); childNavigator.MoveNext(); -// Console.WriteLine("-------------------after group"); -// -// Console.WriteLine ("section {0}",section.Size); -// Console.WriteLine ("group {0}",section.Items[0].Size); -// Console.WriteLine ("detail {0}",section.Items[1].Size); -// Console.WriteLine(); - //Convert children if (childNavigator != null) { StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); do { -// Console.WriteLine("-----------------childs"); -// Console.WriteLine ("section {0}",section.Size); -// Console.WriteLine ("group {0}",section.Items[0].Size); -// Console.WriteLine ("detail {0}",section.Items[1].Size); -// Console.WriteLine(); - section.Size = base.RestoreSize; + section.Size = base.RestoreSectionSize; section.Items[0].Size = groupSize; section.Items[1].Size = childSize; childNavigator.Fill(simpleContainer.Items); +// int p = base.CurrentPosition.Y; base.CurrentPosition = ConvertGroupChilds (exporterCollection,section, simpleContainer,defaultLeftPos,base.CurrentPosition); +// Console.WriteLine (" childs delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); + pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition); if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) { @@ -149,14 +131,16 @@ namespace ICSharpCode.Reports.Core.Exporter } else { - // No Grouping at all - Size dd = section.Items[0].Size; -// Console.WriteLine("---------NoGrouping"); -// Console.WriteLine ("section {0}",section.Size); -// Console.WriteLine ("row {0}",dd); + // No Grouping at all, the first item in section.items is the DetailRow + Size containerSize = section.Items[0].Size; + +// int p = base.CurrentPosition.Y; + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); - section.Size = base.RestoreSize; - section.Items[0].Size = dd; + +// Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); + section.Size = base.RestoreSectionSize; + section.Items[0].Size = containerSize; } pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],base.CurrentPosition); @@ -194,6 +178,7 @@ namespace ICSharpCode.Reports.Core.Exporter private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,int leftPos,Point offset) { var retVal = Point.Empty; + var rowSize = Size.Empty; ReportItemCollection groupCollection = null; var groupedRows = BaseConverter.FindGroups(section); if (groupedRows.Count == 0) { @@ -208,7 +193,9 @@ namespace ICSharpCode.Reports.Core.Exporter AfterConverting (section,list); retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } else { + rowSize = groupedRows[0].Size; retVal = ConvertStandardRow(exportList,section,groupedRows[0],leftPos,offset); + groupedRows[0].Size = rowSize; } return retVal; } 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 21a5c288be..912a7b7a93 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 @@ -62,16 +62,19 @@ namespace ICSharpCode.Reports.Core.Exporter // Header var simpleContainer = table.Items[0] as ISimpleContainer; + Size containerSize = Size.Empty; if (simpleContainer.Items.Count > 0) { simpleContainer.Location = new Point (simpleContainer.Location.X,simpleContainer.Location.Y); simpleContainer.Parent = (BaseReportItem)this.table; - base.SaveSectionSize( new Size (simpleContainer.Size.Width,simpleContainer.Size.Height)); + base.SaveSectionSize(section.Size); + containerSize = simpleContainer.Size; if (PrintHelper.IsTextOnlyRow(simpleContainer) ) { headerRow = simpleContainer; + base.CurrentPosition = BaseConverter.BaseConvert(exporterCollection,headerRow,defaultLeftPos,base.CurrentPosition); } @@ -87,7 +90,6 @@ namespace ICSharpCode.Reports.Core.Exporter base.Evaluator.SinglePage.IDataNavigator = childNavigator; // Convert Grouping Header - base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition); childNavigator.Reset(); @@ -99,18 +101,22 @@ namespace ICSharpCode.Reports.Core.Exporter { StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); simpleContainer = table.Items[2] as ISimpleContainer; + containerSize = simpleContainer.Size; childNavigator.Fill(simpleContainer.Items); - int p = base.CurrentPosition.Y; +// int p = base.CurrentPosition.Y; base.CurrentPosition = ConvertGroupChilds (exporterCollection, section, simpleContainer,defaultLeftPos,base.CurrentPosition); - Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); +// Console.WriteLine (" childs delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); + simpleContainer.Size = containerSize; + pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,base.CurrentPosition); if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { base.CurrentPosition = base.ForcePageBreak(exporterCollection,section); + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); } } @@ -136,10 +142,13 @@ namespace ICSharpCode.Reports.Core.Exporter { // No Grouping at all - base.SaveSectionSize(simpleContainer.Size); + simpleContainer = table.Items[1] as ISimpleContainer; - Console.WriteLine("startconversion"); - Size containerSize = simpleContainer.Size; +// Console.WriteLine("startconversion"); + + base.SaveSectionSize(section.Size); + containerSize = simpleContainer.Size; + do { PrintHelper.AdjustSectionLocation(section); @@ -151,11 +160,12 @@ namespace ICSharpCode.Reports.Core.Exporter base.CurrentPosition = ForcePageBreak(exporterCollection,section); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); } - int p = base.CurrentPosition.Y; +// int p = base.CurrentPosition.Y; base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); - Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); -// simpleContainer.Size = base.RestoreSize; +// Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size); + simpleContainer.Size = containerSize; + section.Size = base.RestoreSectionSize; } while (base.DataNavigator.MoveNext()); @@ -180,11 +190,13 @@ namespace ICSharpCode.Reports.Core.Exporter private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,int leftPos,Point offset) { var retVal = Point.Empty; + var rowSize = Size.Empty; ReportItemCollection groupCollection = null; var groupedRow = new Collection(table.Items.OfType().ToList()); if (groupedRow.Count == 0) { + groupCollection = section.Items.ExtractGroupedColumns(); base.DataNavigator.Fill(groupCollection); base.FireSectionRendering(section); @@ -195,8 +207,12 @@ namespace ICSharpCode.Reports.Core.Exporter exportList.AddRange(list); AfterConverting (section,list); retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); + + } else { + rowSize = groupedRow[0].Size; retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset); + groupedRow[0].Size = rowSize; } return retVal; }