Browse Source

Print PageFooter

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6205 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
6143754747
  1. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  2. 28
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs
  3. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs
  4. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs
  5. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs
  6. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs
  7. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs
  8. 4
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderFormSheetReport.cs
  9. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/ReportDocument.cs

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

@ -64,6 +64,13 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
#endregion #endregion
public static void AdjustChildLocation (BaseReportItem item,Point offset)
{
item.Location = new Point(item.Location.X + offset.X,
offset.Y + item.Location.Y);
}
public static Rectangle DrawingAreaRelativeToParent (BaseReportItem parent,ISimpleContainer item) public static Rectangle DrawingAreaRelativeToParent (BaseReportItem parent,ISimpleContainer item)
{ {
if ( parent == null) { if ( parent == null) {

28
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs

@ -17,6 +17,8 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
/// <summary> /// <summary>
/// Description of StandardPrinter. /// Description of StandardPrinter.
/// </summary> /// </summary>
internal sealed class StandardPrinter internal sealed class StandardPrinter
{ {
public StandardPrinter() public StandardPrinter()
@ -98,31 +100,19 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
} }
private static void RenderLineItem (BaseReportItem item, Point offset,IExpressionEvaluatorFacade evaluator,ReportPageEventArgs rpea) private static void RenderLineItem (BaseReportItem item, Point offset,IExpressionEvaluatorFacade evaluator,ReportPageEventArgs rpea)
{ {
Point saveLocation = new Point (item.Location.X,item.Location.Y); Point saveLocation = new Point (item.Location.X,item.Location.Y);
item.Location = new Point(item.Location.X, PrintHelper.AdjustChildLocation(item,offset);
offset.Y + item.Location.Y);
// item.Location = new Point(offset.X + item.Location.X,
// offset.Y + item.Location.Y);
//
var ss = MeasurementService.MeasureReportItem(rpea.PrintPageEventArgs.Graphics,item);
BaseTextItem textItem = item as BaseTextItem; BaseTextItem textItem = item as BaseTextItem;
if (textItem != null) { if (textItem != null) {
string str = textItem.Text; string str = textItem.Text;
textItem.Text = evaluator.Evaluate(textItem.Text); textItem.Text = evaluator.Evaluate(textItem.Text);
if (str != textItem.Text) {
var ss1 = MeasurementService.MeasureReportItem(rpea.PrintPageEventArgs.Graphics,item);
}
textItem.Render(rpea); textItem.Render(rpea);
textItem.Text = str; textItem.Text = str;
} else { } else {
@ -177,13 +167,15 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
public static Rectangle RenderContainer (ISimpleContainer simpleContainer,IExpressionEvaluatorFacade evaluator,Point offset,ReportPageEventArgs rpea) public static Rectangle RenderContainer (ISimpleContainer simpleContainer,IExpressionEvaluatorFacade evaluator,Point offset,ReportPageEventArgs rpea)
{ {
BaseReportItem item = simpleContainer as BaseReportItem; BaseReportItem item = simpleContainer as BaseReportItem;
Rectangle retVal = new Rectangle(offset,item.Size); Rectangle retVal = new Rectangle(offset,item.Size);
Point loc = item.Location; Point saveLocation = item.Location;
// item.Location = new Point (offset.X + item.Location.X,offset.Y + item.Location.Y); PrintHelper.AdjustChildLocation(item,offset);
item.Location = new Point (item.Location.X,offset.Y + item.Location.Y);
item.Render(rpea); item.Render(rpea);
if (simpleContainer.Items != null) { if (simpleContainer.Items != null) {
retVal = StandardPrinter.RenderPlainCollection(item,simpleContainer.Items,evaluator,offset,rpea); retVal = StandardPrinter.RenderPlainCollection(item,simpleContainer.Items,evaluator,offset,rpea);
} }
@ -191,7 +183,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
retVal = new Rectangle (retVal.X,retVal.Y, retVal = new Rectangle (retVal.X,retVal.Y,
retVal.X + item.Size.Width, retVal.X + item.Size.Width,
item.Size.Height + 3 * GlobalValues.GapBetweenContainer); item.Size.Height + 3 * GlobalValues.GapBetweenContainer);
item.Location = loc; item.Location = saveLocation;
return retVal; return retVal;
} }

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

@ -106,21 +106,13 @@ namespace ICSharpCode.Reports.Core {
protected virtual Rectangle DisplayRectangle protected virtual Rectangle DisplayRectangle
{ {
get { get {
if (Parent != null) { return new Rectangle( this.Location.X ,
this.Location.Y + this.SectionOffset,
return new Rectangle(this.Parent.Location.X + this.Location.X , this.Size.Width,this.Size.Height);
this.Location.Y + this.SectionOffset,
this.Size.Width,this.Size.Height);
} else {
return new Rectangle(this.Location.X ,
this.Location.Y + this.SectionOffset,
this.Size.Width,this.Size.Height);
}
} }
} }
#region Properties #region Properties
public virtual bool Visible {get;set;} public virtual bool Visible {get;set;}

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseSection.cs

@ -55,7 +55,7 @@ namespace ICSharpCode.Reports.Core
protected override Rectangle DisplayRectangle { protected override Rectangle DisplayRectangle {
get { get {
return new Rectangle(Location.X + this.Location.X, this.Location.Y , return new Rectangle(Location.X , this.Location.Y ,
this.Size.Width,this.Size.Height); this.Size.Width,this.Size.Height);
} }
} }

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

@ -113,11 +113,8 @@ namespace ICSharpCode.Reports.Core
this.dataNavigator.Fill(row.Items); this.dataNavigator.Fill(row.Items);
Console.WriteLine("org row size {0}",row.Size);
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,row); PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,row);
Console.WriteLine("new row size {0}",row.Size);
Console.WriteLine("");
Rectangle r = StandardPrinter.RenderContainer(row,Evaluator,currentPosition,rpea); Rectangle r = StandardPrinter.RenderContainer(row,Evaluator,currentPosition,rpea);
currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r); currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r);
@ -164,7 +161,6 @@ namespace ICSharpCode.Reports.Core
{ {
Point currentPosition = new Point(section.Location.X + container.Location.X,offset.Y); Point currentPosition = new Point(section.Location.X + container.Location.X,offset.Y);
Console.WriteLine("start {0}",currentPosition);
if (section.Visible){ if (section.Visible){
@ -186,7 +182,6 @@ namespace ICSharpCode.Reports.Core
if (con != null) { if (con != null) {
Rectangle r = StandardPrinter.RenderContainer(container,Evaluator,offset,rpea); Rectangle r = StandardPrinter.RenderContainer(container,Evaluator,offset,rpea);
currentPosition = PrintHelper.ConvertRectangleToCurentPosition(r); currentPosition = PrintHelper.ConvertRectangleToCurentPosition(r);
Console.WriteLine("layoutrec {0} - currpos {1} ",r,currentPosition);
} }
else else
@ -207,12 +202,9 @@ namespace ICSharpCode.Reports.Core
rpea.LocationAfterDraw = new Point (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height); rpea.LocationAfterDraw = new Point (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height);
Console.WriteLine ("locafter {0}",rpea.LocationAfterDraw);
} }
section.Items[0].Size = containerSize; section.Items[0].Size = containerSize;
Console.WriteLine("ret val {0}",currentPosition);
Console.WriteLine("--");
return currentPosition; return currentPosition;
} }

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs

@ -86,7 +86,7 @@ namespace ICSharpCode.Reports.Core
this.reportDocument.RenderReportHeader += new EventHandler<ReportPageEventArgs> (PrintReportHeader); this.reportDocument.RenderReportHeader += new EventHandler<ReportPageEventArgs> (PrintReportHeader);
this.reportDocument.RenderPageHeader += new EventHandler<ReportPageEventArgs> (PrintPageHeader); this.reportDocument.RenderPageHeader += new EventHandler<ReportPageEventArgs> (PrintPageHeader);
this.reportDocument.RenderDetails += new EventHandler<ReportPageEventArgs> (PrintDetail); this.reportDocument.RenderDetails += new EventHandler<ReportPageEventArgs> (PrintDetail);
this.reportDocument.RenderPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageEnd); this.reportDocument.RenderPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageFooter);
this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter); this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter);
this.Evaluator = PrintHelper.SetupEvaluator(); this.Evaluator = PrintHelper.SetupEvaluator();
@ -169,9 +169,9 @@ namespace ICSharpCode.Reports.Core
} }
internal virtual void PrintPageEnd (object sender,ReportPageEventArgs rpea) internal virtual void PrintPageFooter (object sender,ReportPageEventArgs rpea)
{ {
this.CurrentSection = this.reportModel.ReportFooter; this.CurrentSection = this.reportModel.PageFooter;
this.AddSectionEvents(); this.AddSectionEvents();
} }
@ -214,7 +214,7 @@ namespace ICSharpCode.Reports.Core
this.CurrentSection.Render (rpea); this.CurrentSection.Render (rpea);
Evaluator.SinglePage = this.reportDocument.SinglePage; Evaluator.SinglePage = this.reportDocument.SinglePage;
if (this.CurrentSection.Items.Count > 0) { if (this.CurrentSection.Items.Count > 0) {

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

@ -51,7 +51,7 @@ namespace ICSharpCode.Reports.Core {
private void PageEnd (ReportPageEventArgs rpea) private void PageFooter (ReportPageEventArgs rpea)
{ {
this.CurrentSection.SectionOffset = base.SectionBounds.PageFooterRectangle.Location.Y; this.CurrentSection.SectionOffset = base.SectionBounds.PageFooterRectangle.Location.Y;
base.RenderSection (rpea); base.RenderSection (rpea);
@ -89,10 +89,10 @@ namespace ICSharpCode.Reports.Core {
} }
internal override void PrintPageEnd(object sender, ReportPageEventArgs rpea) internal override void PrintPageFooter(object sender, ReportPageEventArgs rpea)
{ {
base.PrintPageEnd(sender,rpea); base.PrintPageFooter(sender,rpea);
this.PageEnd (rpea); this.PageFooter (rpea);
base.RemoveSectionEvents(); base.RemoveSectionEvents();
} }
@ -140,6 +140,14 @@ namespace ICSharpCode.Reports.Core {
} }
internal override void PrintDetail(object sender, ReportPageEventArgs rpea)
{
base.PrintDetail(sender,rpea);
this.PrintDetailInternal (rpea,base.DataNavigator);
}
private void PrintDetailInternal (ReportPageEventArgs rpea,DataNavigator nav) private void PrintDetailInternal (ReportPageEventArgs rpea,DataNavigator nav)
{ {
Rectangle sectionRect; Rectangle sectionRect;
@ -236,12 +244,6 @@ namespace ICSharpCode.Reports.Core {
} }
internal override void PrintDetail(object sender, ReportPageEventArgs rpea)
{
this.PrintDetailInternal (rpea,base.DataNavigator);
}
internal override void BodyEnd(object sender, ReportPageEventArgs rpea) internal override void BodyEnd(object sender, ReportPageEventArgs rpea)
{ {
base.BodyEnd (sender,rpea); base.BodyEnd (sender,rpea);

4
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderFormSheetReport.cs

@ -84,8 +84,8 @@ namespace ICSharpCode.Reports.Core {
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
internal override void PrintPageEnd(object sender, ReportPageEventArgs rpea) { internal override void PrintPageFooter(object sender, ReportPageEventArgs rpea) {
base.PrintPageEnd(this,rpea); base.PrintPageFooter(this,rpea);
this.CurrentSection.SectionOffset = base.SectionBounds.PageFooterRectangle.Location.Y; this.CurrentSection.SectionOffset = base.SectionBounds.PageFooterRectangle.Location.Y;
base.RenderSection (rpea); base.RenderSection (rpea);
} }

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/ReportDocument.cs

@ -27,11 +27,9 @@ namespace ICSharpCode.Reports.Core {
/// </summary> /// </summary>
/// ///
public event EventHandler<ReportPageEventArgs> BodyStart; public event EventHandler<ReportPageEventArgs> BodyStart;
/// <summary>
/// Fired if all Details 8data) are printed
/// </summary>
public event EventHandler<ReportPageEventArgs> BodyEnd; public event EventHandler<ReportPageEventArgs> BodyEnd;
public event EventHandler<ReportPageEventArgs> RenderReportHeader; public event EventHandler<ReportPageEventArgs> RenderReportHeader;
public event EventHandler<ReportPageEventArgs> RenderPageHeader; public event EventHandler<ReportPageEventArgs> RenderPageHeader;
public event EventHandler<ReportPageEventArgs> RenderDetails; public event EventHandler<ReportPageEventArgs> RenderDetails;

Loading…
Cancel
Save