Browse Source

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
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
6c04ae3b35
  1. 11
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs
  2. 14
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  3. 1
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs
  4. 4
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs
  5. 78
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs
  6. 6
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs
  7. 2
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  8. 1
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs
  9. 17
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs
  10. 2
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs
  11. 2
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs
  12. 25
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs

11
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs

@ -39,9 +39,7 @@ namespace ICSharpCode.Reports.Core
System.Collections.Generic.IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in container.Items where bt.CanGrow == true select bt; System.Collections.Generic.IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in container.Items where bt.CanGrow == true select bt;
if (canGrowShrinkCollection.Count() > 0 ) { if (canGrowShrinkCollection.Count() > 0 ) {
FindLowestElement (container.Items);
int extend = containerItem.Size.Height - canGrowShrinkCollection.First().Size.Height; int extend = containerItem.Size.Height - canGrowShrinkCollection.First().Size.Height;
// Rectangle surroundingRec = this.FindSurroundingRectangle_2(graphics,container.Items);
Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection); Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection);
if (surroundingRec.Height > desiredContainerRectangle.Height) { if (surroundingRec.Height > desiredContainerRectangle.Height) {
@ -51,6 +49,7 @@ namespace ICSharpCode.Reports.Core
surroundingRec.Size.Height + extend); surroundingRec.Size.Height + extend);
} }
} }
return desiredContainerRectangle; return desiredContainerRectangle;
} }
@ -64,7 +63,7 @@ namespace ICSharpCode.Reports.Core
throw new ArgumentNullException("section"); throw new ArgumentNullException("section");
} }
section.Items.SortByLocation(); section.Items.SortByLocation();
FindLowestElement (section.Items);
IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt; IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt;
Rectangle desiredSectionRectangle = new Rectangle(section.Location.X, Rectangle desiredSectionRectangle = new Rectangle(section.Location.X,
@ -85,11 +84,7 @@ namespace ICSharpCode.Reports.Core
return desiredSectionRectangle; return desiredSectionRectangle;
} }
private BaseReportItem FindLowestElement (ReportItemCollection items)
{
return null;
}
private Rectangle FindSurroundingRectangle_2 (Graphics graphics,IEnumerable<BaseReportItem> canGrowShrinkCollection) private Rectangle FindSurroundingRectangle_2 (Graphics graphics,IEnumerable<BaseReportItem> canGrowShrinkCollection)
{ {

14
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs

@ -23,10 +23,24 @@ namespace ICSharpCode.Reports.Core
} }
#region Layout #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) public static void SetLayoutForRow (Graphics graphics, ILayouter layouter,IContainerItem row)
{ {
BaseReportItem item = row as BaseReportItem; 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; int extend = item.Size.Height - row.Items[0].Size.Height;
Rectangle textRect = layouter.Layout(graphics,row); Rectangle textRect = layouter.Layout(graphics,row);
if (textRect.Height >= item.Size.Height) { if (textRect.Height >= item.Size.Height) {

1
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/SinglePage.cs

@ -40,7 +40,6 @@ namespace ICSharpCode.Reports.Core
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
} }
Console.WriteLine("CalculatePageBounds for {0}",this.PageNumber);
sectionBounds.MeasureReportHeader(reportModel.ReportHeader); sectionBounds.MeasureReportHeader(reportModel.ReportHeader);
//PageHeader //PageHeader

4
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs

@ -32,9 +32,9 @@ namespace ICSharpCode.Reports.Core {
private int sectionOffset; private int sectionOffset;
private Font font; private Font font;
[Obsolete] [Obsolete ("will be deleted")]
public event EventHandler<BeforePrintEventArgs> ItemPrinting; public event EventHandler<BeforePrintEventArgs> ItemPrinting;
[Obsolete] [Obsolete("will be deleted")]
public event EventHandler<AfterPrintEventArgs> ItemPrinted; public event EventHandler<AfterPrintEventArgs> ItemPrinted;
private RectangleShape backgroundShape = new RectangleShape(); private RectangleShape backgroundShape = new RectangleShape();

78
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Reports.Core {
private SectionBounds sectionBounds; private SectionBounds sectionBounds;
private IDataNavigator dataNavigator; private IDataNavigator dataNavigator;
private IExpressionEvaluatorFacade expressionEvaluatorFacade; private IExpressionEvaluatorFacade expressionEvaluatorFacade;
private ISinglePage singlePage; // private ISinglePage singlePage;
private ILayouter layouter; private ILayouter layouter;
@ -84,7 +84,7 @@ namespace ICSharpCode.Reports.Core {
if (rpea == null) { if (rpea == null) {
throw new ArgumentNullException("rpea"); throw new ArgumentNullException("rpea");
} }
// //
Point saveLocation = this.Location; Point saveLocation = this.Location;
Point currentPosition = new Point(this.SectionBounds.DetailStart.X,rpea.LocationAfterDraw.Y); 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); rpea.LocationAfterDraw = new Point(rpea.LocationAfterDraw.X,rpea.LocationAfterDraw.Y + 20);
base.NotifyAfterPrint (rpea.LocationAfterDraw); base.NotifyAfterPrint (rpea.LocationAfterDraw);
} }
private Point PrintRow (ReportPageEventArgs rpea,BaseRowItem row,Point drawAt, int leftX) private Point PrintRow (ReportPageEventArgs rpea,BaseRowItem row,Point drawAt, int leftX)
{ {
int extend = row.Size.Height - row.Items[0].Size.Height; int extend = row.Size.Height - row.Items[0].Size.Height;
@ -162,48 +162,44 @@ namespace ICSharpCode.Reports.Core {
public SectionBounds SectionBounds{ public SectionBounds SectionBounds{
get {return this.sectionBounds;} get {return this.sectionBounds;}
} }
#region Interface implementation of 'ITableContainer'
public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter)
{
this.sectionBounds = sectionBounds;
#region Interface implementation of 'ITableContainer' this.Parent = parent;
this.layouter = layouter;
public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter) this.Render (rpea);
{ }
this.sectionBounds = sectionBounds;
this.Parent = parent; public ReportItemCollection Items {
this.layouter = layouter; get {
this.Render (rpea); if (this.items == null) {
} this.items = new ReportItemCollection();
public ReportItemCollection Items {
get {
if (this.items == null) {
this.items = new ReportItemCollection();
}
return items;
} }
return items;
} }
}
public IDataNavigator DataNavigator { public IDataNavigator DataNavigator {
set { dataNavigator = value; set { dataNavigator = value;
if (this.dataNavigator.CurrentRow < 0 ) { if (this.dataNavigator.CurrentRow < 0 ) {
this.dataNavigator.MoveNext(); 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
} }
}

6
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(); ExporterCollection mylist = new ExporterCollection();
BaseSection section = parent as BaseSection; 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; IContainerItem row = section.Items[0] as IContainerItem;
do { do {
@ -65,7 +65,8 @@ namespace ICSharpCode.Reports.Core.Exporter
// //
section.Size = this.SectionBounds.DetailSectionRectangle.Size; section.Size = this.SectionBounds.DetailSectionRectangle.Size;
base.FireSectionRendering(section); base.FireSectionRendering(section);
PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,row);
PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,section);
mylist.AddRange(this.ConvertTextOnlyRow(parent,item)); mylist.AddRange(this.ConvertTextOnlyRow(parent,item));
section.SectionOffset += section.Size.Height + 2 * base.SinglePage.SectionBounds.Gap; 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; section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
mylist.Clear(); mylist.Clear();
} }
section.Items[0].Size = containerSize;
} }
while (base.DataNavigator.MoveNext()); while (base.DataNavigator.MoveNext());

2
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs

@ -52,9 +52,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected override void BuildNewPage () protected override void BuildNewPage ()
{ {
Console.WriteLine("BuildNewPage");
base.BuildNewPage(); base.BuildNewPage();
if (this.dataNavigator != null) { if (this.dataNavigator != null) {
this.SinglePage.StartRow = this.dataNavigator.CurrentRow +1; this.SinglePage.StartRow = this.dataNavigator.CurrentRow +1;
} }

1
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs

@ -27,6 +27,5 @@ namespace ICSharpCode.Reports.Core.Interfaces
IDataNavigator DataNavigator {set;} IDataNavigator DataNavigator {set;}
IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;} IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;}
void RenderTable (BaseReportItem parent, SectionBounds sectionBounds, ReportPageEventArgs rpea,ILayouter layouter); void RenderTable (BaseReportItem parent, SectionBounds sectionBounds, ReportPageEventArgs rpea,ILayouter layouter);
ISinglePage SinglePage {set;}
} }
} }

17
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs

@ -81,19 +81,13 @@ namespace ICSharpCode.Reports.Core
IContainerItem container, IContainerItem container,
ReportPageEventArgs rpea) ReportPageEventArgs rpea)
{ {
if (container == null) {
return new Point(section.Location.Y, section.Size.Height);
}
Point drawPoint = Point.Empty; 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){ 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); section.Render (rpea);
foreach (BaseReportItem item in section.Items) { foreach (BaseReportItem item in section.Items) {
if (item.Parent == null) { if (item.Parent == null) {
@ -111,6 +105,7 @@ namespace ICSharpCode.Reports.Core
} }
return drawPoint; return drawPoint;
} }
return drawPoint; return drawPoint;
} }

2
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) public static void PageBreak(ReportPageEventArgs pea)
{ {
System.Console.WriteLine("PageBreak");
if (pea == null) { if (pea == null) {
throw new ArgumentNullException("pea"); throw new ArgumentNullException("pea");
} }
@ -197,6 +198,7 @@ namespace ICSharpCode.Reports.Core
} }
public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds) public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds)
{ {
if (rectangle.Bottom > bounds.PageFooterRectangle.Top) { if (rectangle.Bottom > bounds.PageFooterRectangle.Top) {

2
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs

@ -157,7 +157,7 @@ namespace ICSharpCode.Reports.Core {
tableContainer.DataNavigator = nav; tableContainer.DataNavigator = nav;
tableContainer.Parent = base.CurrentSection; tableContainer.Parent = base.CurrentSection;
tableContainer.ExpressionEvaluatorFacade = base.ExpressionFassade; tableContainer.ExpressionEvaluatorFacade = base.ExpressionFassade;
tableContainer.SinglePage = base.SinglePage; // tableContainer.SinglePage = base.SinglePage;
tableContainer.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout); tableContainer.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout);
this.ReportDocument.DetailsDone = true; this.ReportDocument.DetailsDone = true;

25
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/ReportEngine.cs

@ -56,7 +56,6 @@ namespace ICSharpCode.Reports.Core {
ConnectionObject conObj = null; ConnectionObject conObj = null;
if (reportParameters != null) { if (reportParameters != null) {
if (reportParameters.ConnectionObject != null) { if (reportParameters.ConnectionObject != null) {
UpdateSqlParameters (settings,reportParameters.SqlParameters);
conObj = reportParameters.ConnectionObject; conObj = reportParameters.ConnectionObject;
} }
} }
@ -66,22 +65,6 @@ namespace ICSharpCode.Reports.Core {
} }
return conObj; return conObj;
} }
private static void UpdateSqlParameters (ReportSettings settings,
ParameterCollection parameters)
{
/*
if (parameters != null) {
System.Collections.Generic.List<SqlParameter> sql = new System.Collections.Generic.List<SqlParameter>();
foreach (SqlParameter sourcePar in parameters) {
SqlParameter destinationPar = settings.ParameterCollection.Find(sourcePar.ParameterName);
destinationPar.ParameterValue = sourcePar.ParameterValue;
}
}
*/
}
#endregion #endregion
@ -508,7 +491,7 @@ namespace ICSharpCode.Reports.Core {
/// <param name="reportModel"></param> /// <param name="reportModel"></param>
/// <returns></returns> /// <returns></returns>
public IReportCreator CreatePageBuilder (IReportModel reportModel) public static IReportCreator CreatePageBuilder (IReportModel reportModel)
{ {
if (reportModel == null) { if (reportModel == null) {
throw new ArgumentNullException("reportModel"); throw new ArgumentNullException("reportModel");
@ -527,7 +510,7 @@ namespace ICSharpCode.Reports.Core {
/// <param name="dataSet"></param> /// <param name="dataSet"></param>
/// <param name="reportParameter"></param> /// <param name="reportParameter"></param>
/// <returns></returns> /// <returns></returns>
public IReportCreator CreatePageBuilder (IReportModel reportModel, public static IReportCreator CreatePageBuilder (IReportModel reportModel,
DataSet dataSet, DataSet dataSet,
ReportParameters reportParameter) ReportParameters reportParameter)
{ {
@ -550,7 +533,7 @@ namespace ICSharpCode.Reports.Core {
/// <param name="reportParameters"></param> /// <param name="reportParameters"></param>
/// <returns></returns> /// <returns></returns>
public IReportCreator CreatePageBuilder (IReportModel reportModel, public static IReportCreator CreatePageBuilder (IReportModel reportModel,
DataTable dataTable, DataTable dataTable,
ReportParameters reportParameters) ReportParameters reportParameters)
{ {
@ -579,7 +562,7 @@ namespace ICSharpCode.Reports.Core {
/// <param name="list"></param> /// <param name="list"></param>
/// <param name="reportParameters"></param> /// <param name="reportParameters"></param>
/// <returns></returns> /// <returns></returns>
public IReportCreator CreatePageBuilder (IReportModel reportModel, public static IReportCreator CreatePageBuilder (IReportModel reportModel,
IList list, IList list,
ReportParameters reportParameters) ReportParameters reportParameters)
{ {

Loading…
Cancel
Save