Browse Source

Concat Fields with Standard PrintController/Standard Preview

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@5930 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 15 years ago
parent
commit
507cb35a84
  1. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/MycroWriter.cs
  2. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  3. 21
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseReportItem.cs
  4. 30
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseRowItem.cs
  5. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs
  6. 80
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractDataRenderer.cs
  7. 11
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs
  8. 11
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs
  9. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/BaseConverter.cs

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Xml/MycroWriter.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Reports.Addin
public void Save(object obj, XmlWriter writer) public void Save(object obj, XmlWriter writer)
{ {
// System.Console.WriteLine("Save <{0}>",obj.GetType().Name); System.Console.WriteLine("Save <{0}>",obj.GetType().Name);
Type t = obj.GetType(); Type t = obj.GetType();
// writer.WriteStartElement(GetTypeName(t)); // writer.WriteStartElement(GetTypeName(t));

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

@ -14,6 +14,7 @@ using System.Linq;
using ICSharpCode.Reports.Core.Interfaces; using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Core.old_Exporter; using ICSharpCode.Reports.Core.old_Exporter;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core namespace ICSharpCode.Reports.Core
{ {
@ -126,7 +127,28 @@ namespace ICSharpCode.Reports.Core
return false; return false;
} }
public static IExpressionEvaluatorFacade SetupEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade();
evaluatorFacade.SinglePage = singlePage;
evaluatorFacade.SinglePage.IDataNavigator = dataNavigator;
return evaluatorFacade;
}
public static IExpressionEvaluatorFacade SetupEvaluator ()
{
return new ExpressionEvaluatorFacade();
}
#region Debug Code #region Debug Code
///<summary> ///<summary>

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

@ -76,15 +76,22 @@ namespace ICSharpCode.Reports.Core {
} }
protected Rectangle DrawingRectangle public Rectangle DrawingRectangle
{ {
get { get {
return new Rectangle(this.Parent.Location.X + this.Location.X , if (Parent != null) {
this.Location.Y + this.SectionOffset,
this.Size.Width,this.Size.Height); return new Rectangle(this.Parent.Location.X + this.Location.X ,
// return new Rectangle( this.Location.X ,
// this.Location.Y + this.SectionOffset, this.Location.Y + this.SectionOffset,
// this.Size.Width,this.Size.Height); this.Size.Width,this.Size.Height);
} else {
return new Rectangle(this.Location.X ,
this.Location.Y + this.SectionOffset,
this.Size.Width,this.Size.Height);
}
} }
} }

30
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseRowItem.cs

@ -46,14 +46,6 @@ namespace ICSharpCode.Reports.Core{
style.ForeColor = this.ForeColor; style.ForeColor = this.ForeColor;
style.FrameColor = this.FrameColor; style.FrameColor = this.FrameColor;
/*
if (this.Parent != null) {
Rectangle rect = base.DrawingRectangle;
style.Location = new Point(rect.Left,this.Location.Y);
} else {
style.Location = this.Location;
}
*/
style.Location = this.Location; style.Location = this.Location;
style.Size = this.Size; style.Size = this.Size;
style.DrawBorder = this.DrawBorder; style.DrawBorder = this.DrawBorder;
@ -77,31 +69,13 @@ namespace ICSharpCode.Reports.Core{
base.FillBackground(rpea.PrintPageEventArgs.Graphics); base.FillBackground(rpea.PrintPageEventArgs.Graphics);
} }
Border b = new Border(new BaseLine (this.FrameColor,System.Drawing.Drawing2D.DashStyle.Solid,1)); Border b = new Border(new BaseLine (this.FrameColor,System.Drawing.Drawing2D.DashStyle.Solid,1));
base.DrawFrame (rpea.PrintPageEventArgs.Graphics,b); base.DrawFrame (rpea.PrintPageEventArgs.Graphics,b);
this.Location = new Point(base.DrawingRectangle.Left,this.Location.Y);
if ((this.items != null) && (this.items.Count > 0)) {
foreach (BaseReportItem childItem in this.items) {
childItem.Parent = this;
Point saveloc = new Point (childItem.Location.X,childItem.Location.Y);
childItem.Location = new Point(childItem.Location.X,
base.DrawingRectangle.Top + childItem.Location.Y);
if (this.BackColor != GlobalValues.DefaultBackColor) {
childItem.BackColor = this.BackColor;
}
childItem.Render (rpea);
childItem.Location = saveloc;
}
}
this.Location = point; this.Location = point;
base.NotifyAfterPrint (rpea.LocationAfterDraw); base.NotifyAfterPrint (rpea.LocationAfterDraw);
} }

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

@ -172,6 +172,8 @@ namespace ICSharpCode.Reports.Core {
} }
this.startSection = section; this.startSection = section;
} }
public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter) public void RenderTable (BaseReportItem parent,SectionBounds sectionBounds,ReportPageEventArgs rpea,ILayouter layouter)
{ {

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

@ -61,15 +61,16 @@ namespace ICSharpCode.Reports.Core
base.CurrentRow = this.dataNavigator.CurrentRow; base.CurrentRow = this.dataNavigator.CurrentRow;
ISimpleContainer container = null; ISimpleContainer container = null;
bool hasContainer = false; bool hasContainer = false;
foreach (BaseReportItem item in this.CurrentSection.Items) { foreach (BaseReportItem item in this.CurrentSection.Items) {
container = item as ISimpleContainer; container = item as ISimpleContainer;
if (container != null) { if (container != null) {
hasContainer = true; hasContainer = true;
break; break;
} }
} }
if (hasContainer) { if (hasContainer) {
return DoContainerControl(this.CurrentSection,container,rpea); return RenderSimpleContainer(this.CurrentSection,container,rpea);
} else { } else {
return base.RenderSection(rpea); return base.RenderSection(rpea);
@ -78,9 +79,11 @@ namespace ICSharpCode.Reports.Core
} }
private Point DoContainerControl (BaseSection section,
ISimpleContainer container,
ReportPageEventArgs rpea) private Point RenderSimpleContainer (BaseSection section,
ISimpleContainer container,
ReportPageEventArgs rpea)
{ {
Point drawPoint = Point.Empty; Point drawPoint = Point.Empty;
if (section.Visible){ if (section.Visible){
@ -88,18 +91,32 @@ namespace ICSharpCode.Reports.Core
//Always set section.size to it's original value //Always set section.size to it's original value
section.Size = this.SectionBounds.DetailSectionRectangle.Size; section.Size = this.SectionBounds.DetailSectionRectangle.Size;
Size containerSize = new Size (section.Items[0].Size.Width,section.Items[0].Size.Height); Size containerSize = new Size (section.Items[0].Size.Width,section.Items[0].Size.Height);
ISimpleContainer row =(ISimpleContainer) section.Items[0];
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,row); PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,base.Layout,container);
section.Render (rpea); section.Render (rpea);
foreach (BaseReportItem item in section.Items) { foreach (BaseReportItem item in section.Items) {
if (item.Parent == null) {
item.Parent = section; item.Parent = section;
}
item.SectionOffset = section.SectionOffset; item.SectionOffset = section.SectionOffset;
Point saveLocation = item.Location;
item.Render(rpea); item.Render(rpea);
item.Location = saveLocation;
ISimpleContainer cont = item as ISimpleContainer;
RenderChilds (this.CurrentSection,cont,rpea);
item.Location = saveLocation;
drawPoint = new Point(item.Location.X, drawPoint = new Point(item.Location.X,
section.SectionOffset + section.Size.Height); section.SectionOffset + section.Size.Height);
rpea.LocationAfterDraw = new Point (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height); rpea.LocationAfterDraw = new Point (rpea.LocationAfterDraw.X,section.SectionOffset + section.Size.Height);
@ -116,6 +133,49 @@ namespace ICSharpCode.Reports.Core
return drawPoint; return drawPoint;
} }
void RenderChilds (BaseReportItem parent,ISimpleContainer simpleContainer,ReportPageEventArgs rpea)
{
if (simpleContainer != null) {
BaseReportItem item = simpleContainer as BaseReportItem;
if ((simpleContainer.Items != null) && (simpleContainer.Items.Count > 0)) {
foreach (BaseReportItem child in simpleContainer.Items) {
child.Parent = item;
Point saveLocation = new Point (child.Location.X,child.Location.Y);
child.Location = new Point(parent.Location.X + simpleContainer.Location.X + child.Location.X,
item.SectionOffset + item.Location.Y + child.Location.Y);
if (item.BackColor != GlobalValues.DefaultBackColor) {
child.BackColor = item.BackColor;
}
BaseTextItem textItem = child as BaseTextItem;
if (textItem != null) {
string str = textItem.Text;
textItem.Text = Evaluator.Evaluate(textItem.Text);
textItem.Render(rpea);
textItem.Text = str;
} else {
child.Render (rpea);
}
child.Location = saveLocation;
}
}
}
}
#region Properties #region Properties
protected IDataManager DataManager protected IDataManager DataManager

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

@ -35,7 +35,7 @@ namespace ICSharpCode.Reports.Core
private int currentPageNumber; private int currentPageNumber;
private IExpressionEvaluatorFacade expressionFassade; //private IExpressionEvaluatorFacade expressionFassade;
private ILayouter layout; private ILayouter layout;
private IReportModel reportModel; private IReportModel reportModel;
@ -88,7 +88,8 @@ namespace ICSharpCode.Reports.Core
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> (PrintPageEnd);
this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter); this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter);
this.expressionFassade = new ExpressionEvaluatorFacade();
this.Evaluator = PrintHelper.SetupEvaluator();
} }
@ -212,7 +213,7 @@ namespace ICSharpCode.Reports.Core
if (this.CurrentSection.Visible){ if (this.CurrentSection.Visible){
this.CurrentSection.Render (rpea); this.CurrentSection.Render (rpea);
expressionFassade.SinglePage = this.reportDocument.SinglePage; Evaluator.SinglePage = this.reportDocument.SinglePage;
if (this.CurrentSection.Items.Count > 0) { if (this.CurrentSection.Items.Count > 0) {
@ -238,7 +239,7 @@ namespace ICSharpCode.Reports.Core
BaseTextItem bti = item as BaseTextItem; BaseTextItem bti = item as BaseTextItem;
if (bti != null) { if (bti != null) {
bti.Text = expressionFassade.Evaluate(bti.Text); bti.Text = Evaluator.Evaluate(bti.Text);
} }
item.Render(rpea); item.Render(rpea);
drawPoint = new Point(this.CurrentSection.Location.X, drawPoint = new Point(this.CurrentSection.Location.X,
@ -321,7 +322,7 @@ namespace ICSharpCode.Reports.Core
protected SectionBounds SectionBounds { get {return this.SinglePage.SectionBounds;}} protected SectionBounds SectionBounds { get {return this.SinglePage.SectionBounds;}}
protected IExpressionEvaluatorFacade ExpressionFassade {get { return expressionFassade; }} protected IExpressionEvaluatorFacade Evaluator {get;set;}
protected ILayouter Layout {get {return this.layout;}} protected ILayouter Layout {get {return this.layout;}}

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

@ -156,14 +156,17 @@ namespace ICSharpCode.Reports.Core {
if (tableContainer != null) { if (tableContainer != null) {
tableContainer.DataNavigator = nav; tableContainer.DataNavigator = nav;
tableContainer.Parent = base.CurrentSection; tableContainer.Parent = base.CurrentSection;
tableContainer.ExpressionEvaluatorFacade = base.ExpressionFassade; tableContainer.ExpressionEvaluatorFacade = base.Evaluator;
if (rpea.SinglePage.PageNumber == 1) { if (rpea.SinglePage.PageNumber == 1) {
tableContainer.StartLayoutAt(base.Sections[2]); tableContainer.StartLayoutAt(base.Sections[2]);
} else { } else {
tableContainer.StartLayoutAt(base.Sections[0]); tableContainer.StartLayoutAt(base.Sections[0]);
} }
// base.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout);
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;
} }
@ -175,9 +178,9 @@ namespace ICSharpCode.Reports.Core {
} }
do { do {
ISimpleContainer i = base.CurrentSection.Items[0] as ISimpleContainer; ISimpleContainer simpleContainer = base.CurrentSection.Items[0] as ISimpleContainer;
if (i != null) { if (simpleContainer != null) {
nav.Fill (i.Items); nav.Fill (simpleContainer.Items);
} else { } else {
nav.Fill (base.CurrentSection.Items); nav.Fill (base.CurrentSection.Items);
} }

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/BaseConverter.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter
private IExportItemsConverter exportItemsConverter; private IExportItemsConverter exportItemsConverter;
private ILayouter layouter; private ILayouter layouter;
private Size saveSize; private Size saveSize;
IExpressionEvaluatorFacade evaluator; private IExpressionEvaluatorFacade evaluator;
public event EventHandler <NewPageEventArgs> PageFull; public event EventHandler <NewPageEventArgs> PageFull;
public event EventHandler<SectionRenderEventArgs> SectionRendering; public event EventHandler<SectionRenderEventArgs> SectionRendering;
@ -55,17 +55,10 @@ namespace ICSharpCode.Reports.Core.old_Exporter
this.sectionBounds = this.singlePage.SectionBounds; this.sectionBounds = this.singlePage.SectionBounds;
this.exportItemsConverter = exportItemsConverter; this.exportItemsConverter = exportItemsConverter;
this.layouter = layouter; this.layouter = layouter;
this.evaluator = SetupEvaluator (); this.evaluator = PrintHelper.SetupEvaluator(this.singlePage,this.dataNavigator);
} }
private IExpressionEvaluatorFacade SetupEvaluator ()
{
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade();
evaluatorFacade.SinglePage = this.singlePage;
evaluatorFacade.SinglePage.IDataNavigator = this.dataNavigator;
return evaluatorFacade;
}
protected void FirePageFull (ExporterCollection items) protected void FirePageFull (ExporterCollection items)
{ {
EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items)); EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items));

Loading…
Cancel
Save