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 @@ -31,7 +31,7 @@ namespace ICSharpCode.Reports.Addin
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();
// writer.WriteStartElement(GetTypeName(t));

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

@ -14,6 +14,7 @@ using System.Linq; @@ -14,6 +14,7 @@ using System.Linq;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Core.old_Exporter;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core
{
@ -126,7 +127,28 @@ namespace ICSharpCode.Reports.Core @@ -126,7 +127,28 @@ namespace ICSharpCode.Reports.Core
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
///<summary>

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

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

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

@ -46,14 +46,6 @@ namespace ICSharpCode.Reports.Core{ @@ -46,14 +46,6 @@ namespace ICSharpCode.Reports.Core{
style.ForeColor = this.ForeColor;
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.Size = this.Size;
style.DrawBorder = this.DrawBorder;
@ -77,31 +69,13 @@ namespace ICSharpCode.Reports.Core{ @@ -77,31 +69,13 @@ namespace ICSharpCode.Reports.Core{
base.FillBackground(rpea.PrintPageEventArgs.Graphics);
}
Border b = new Border(new BaseLine (this.FrameColor,System.Drawing.Drawing2D.DashStyle.Solid,1));
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;
base.NotifyAfterPrint (rpea.LocationAfterDraw);
}

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

@ -172,6 +172,8 @@ namespace ICSharpCode.Reports.Core { @@ -172,6 +172,8 @@ namespace ICSharpCode.Reports.Core {
}
this.startSection = section;
}
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 @@ -61,15 +61,16 @@ namespace ICSharpCode.Reports.Core
base.CurrentRow = this.dataNavigator.CurrentRow;
ISimpleContainer container = null;
bool hasContainer = false;
foreach (BaseReportItem item in this.CurrentSection.Items) {
container = item as ISimpleContainer;
container = item as ISimpleContainer;
if (container != null) {
hasContainer = true;
break;
}
}
if (hasContainer) {
return DoContainerControl(this.CurrentSection,container,rpea);
return RenderSimpleContainer(this.CurrentSection,container,rpea);
} else {
return base.RenderSection(rpea);
@ -78,9 +79,11 @@ namespace ICSharpCode.Reports.Core @@ -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;
if (section.Visible){
@ -88,18 +91,32 @@ namespace ICSharpCode.Reports.Core @@ -88,18 +91,32 @@ namespace ICSharpCode.Reports.Core
//Always set section.size to it's original value
section.Size = this.SectionBounds.DetailSectionRectangle.Size;
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);
foreach (BaseReportItem item in section.Items) {
if (item.Parent == null) {
item.Parent = section;
}
item.Parent = section;
item.SectionOffset = section.SectionOffset;
Point saveLocation = item.Location;
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,
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 @@ -116,6 +133,49 @@ namespace ICSharpCode.Reports.Core
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
protected IDataManager DataManager

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

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

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

@ -156,14 +156,17 @@ namespace ICSharpCode.Reports.Core { @@ -156,14 +156,17 @@ namespace ICSharpCode.Reports.Core {
if (tableContainer != null) {
tableContainer.DataNavigator = nav;
tableContainer.Parent = base.CurrentSection;
tableContainer.ExpressionEvaluatorFacade = base.ExpressionFassade;
tableContainer.ExpressionEvaluatorFacade = base.Evaluator;
if (rpea.SinglePage.PageNumber == 1) {
tableContainer.StartLayoutAt(base.Sections[2]);
} else {
tableContainer.StartLayoutAt(base.Sections[0]);
}
// base.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout);
tableContainer.RenderTable(base.CurrentSection,this.SectionBounds,rpea,this.Layout);
this.ReportDocument.DetailsDone = true;
}
@ -175,9 +178,9 @@ namespace ICSharpCode.Reports.Core { @@ -175,9 +178,9 @@ namespace ICSharpCode.Reports.Core {
}
do {
ISimpleContainer i = base.CurrentSection.Items[0] as ISimpleContainer;
if (i != null) {
nav.Fill (i.Items);
ISimpleContainer simpleContainer = base.CurrentSection.Items[0] as ISimpleContainer;
if (simpleContainer != null) {
nav.Fill (simpleContainer.Items);
} else {
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 @@ -29,7 +29,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter
private IExportItemsConverter exportItemsConverter;
private ILayouter layouter;
private Size saveSize;
IExpressionEvaluatorFacade evaluator;
private IExpressionEvaluatorFacade evaluator;
public event EventHandler <NewPageEventArgs> PageFull;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
@ -55,17 +55,10 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -55,17 +55,10 @@ namespace ICSharpCode.Reports.Core.old_Exporter
this.sectionBounds = this.singlePage.SectionBounds;
this.exportItemsConverter = exportItemsConverter;
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)
{
EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items));

Loading…
Cancel
Save