Browse Source

PageHeader (Preview and ReportViewer)

Designer:  Use  FakeImage in DesignView if Icons are read from DataBase

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5532 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
e7754bea33
  1. 19
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/ReportItems/BaseImageItem.cs
  2. 9
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  3. 47
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/BaseItems/BaseTableItem.cs
  4. 9
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 2
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/RowConverter.cs
  6. 2
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/TableConverter.cs
  7. 1
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Interfaces/IContainerItem.cs
  8. 10
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs
  9. 7
      src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Printing/RenderDataReport.cs

19
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Addin/Project/ReportItems/BaseImageItem.cs

@ -95,6 +95,22 @@ namespace ICSharpCode.Reports.Addin
} }
private static Bitmap FakeImage(Size size)
{
Bitmap b = new Bitmap (size.Width,size.Height);
using (Graphics g = Graphics.FromImage (b)){
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.DrawRectangle (new Pen(Color.Black, 1),
1,1,size.Width -2,size.Height -2);
g.DrawString("<Database>",GlobalValues.DefaultFont,
new SolidBrush(Color.Gray),
new RectangleF(2,2,size.Width,size.Height) );
}
return b;
}
private Image LoadImage () private Image LoadImage ()
{ {
try { try {
@ -120,6 +136,9 @@ namespace ICSharpCode.Reports.Addin
[XmlIgnoreAttribute] [XmlIgnoreAttribute]
public Image Image { public Image Image {
get { get {
if (this.imageSource == GlobalEnums.ImageSource.Database ) {
this.image = FakeImage(base.Size);
}
if (this.image != null) { if (this.image != null) {
return image; return image;
} else { } else {

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

@ -117,6 +117,15 @@ namespace ICSharpCode.Reports.Core
} }
} }
public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds)
{
if (rectangle.Bottom > bounds.PageFooterRectangle.Top) {
return true;
}
return false;
}
#region Debug Code #region Debug Code

47
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 BaseSection startSection;
private ILayouter layouter; private ILayouter layouter;
@ -86,14 +86,13 @@ namespace ICSharpCode.Reports.Core {
} }
// //
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);
Point currentPosition = new Point(this.startSection.Location.X,rpea.LocationAfterDraw.Y);
Point tableStart = currentPosition; Point tableStart = currentPosition;
base.Render(rpea); base.Render(rpea);
int defaultLeftPos = PrintHelper.DrawingAreaRelativeToParent(this.Parent,this).Left; int defaultLeftPos = PrintHelper.DrawingAreaRelativeToParent(this.Parent,this).Left;
this.Items.SortByLocation(); this.Items.SortByLocation();
rpea.SinglePage.StartRow = this.dataNavigator.CurrentRow;
foreach (BaseRowItem row in this.items) foreach (BaseRowItem row in this.items)
{ {
if (row != null) if (row != null)
@ -101,22 +100,21 @@ namespace ICSharpCode.Reports.Core {
row.Parent = this; row.Parent = this;
if (PrintHelper.IsTextOnlyRow(row) ) if (PrintHelper.IsTextOnlyRow(row) )
{ {
currentPosition = this.PrintRow (rpea,row,currentPosition,defaultLeftPos); currentPosition = this.PrintTextRow (rpea,row,defaultLeftPos,currentPosition);
this.Location = saveLocation; this.Location = saveLocation;
} }
else { else {
do { do {
if (AbstractRenderer.IsPageFull(new Rectangle(currentPosition,row.Size),sectionBounds)) { if (PrintHelper.IsPageFull(new Rectangle(currentPosition,row.Size),sectionBounds)) {
this.Location = saveLocation; this.Location = saveLocation;
rpea.SinglePage.EndRow = this.dataNavigator.CurrentRow;
AbstractRenderer.PageBreak(rpea); AbstractRenderer.PageBreak(rpea);
return; return;
} }
currentPosition = this.PrintRow (rpea,row,currentPosition,defaultLeftPos); currentPosition = this.PrintDataRow (rpea,row,defaultLeftPos,currentPosition);
} }
while (this.dataNavigator.MoveNext()); while (this.dataNavigator.MoveNext());
this.dataNavigator.Reset();
this.dataNavigator.MoveNext();
} }
} }
} }
@ -131,28 +129,30 @@ namespace ICSharpCode.Reports.Core {
} }
private Point PrintRow (ReportPageEventArgs rpea,BaseRowItem row,Point drawAt, int leftX) private Point PrintTextRow(ReportPageEventArgs rpea,BaseRowItem row,int left,Point currentPos )
{ {
int extend = row.Size.Height - row.Items[0].Size.Height;
Rectangle saveRec = new Rectangle (row.Location,row.Size); Rectangle saveRec = new Rectangle (row.Location,row.Size);
row.Location = new Point (leftX,drawAt.Y); row.Location = new Point (left,currentPos.Y);
this.dataNavigator.Fill(row.Items);
EvaluateRecursive (this.expressionEvaluatorFacade,row.Items); EvaluateRecursive (this.expressionEvaluatorFacade,row.Items);
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,layouter,row); PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,layouter,row);
row.Render (rpea); row.Render (rpea);
Point retVal = new Point (leftX,drawAt.Y + row.Size.Height +10); Point retVal = new Point (left,currentPos.Y + row.Size.Height +10);
//reset values //reset values
row.Size = new Size(saveRec.Size.Width,saveRec.Size.Height); row.Size = new Size(saveRec.Size.Width,saveRec.Size.Height);
row.Location = saveRec.Location; row.Location = saveRec.Location;
return retVal; return retVal;
} }
private Point PrintDataRow (ReportPageEventArgs rpea,BaseRowItem row,int left,Point currentPos)
{
this.dataNavigator.Fill(row.Items);
return this.PrintTextRow(rpea,row,left,currentPos);
}
public override string ToString(){ public override string ToString(){
return this.GetType().Name; return this.GetType().Name;
} }
@ -166,6 +166,13 @@ namespace ICSharpCode.Reports.Core {
#region Interface implementation of 'ITableContainer' #region Interface implementation of 'ITableContainer'
public void StartLayoutAt (BaseSection section)
{
if (section == null) {
throw new ArgumentNullException("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)
{ {

9
src/AddIns/Misc/SharpReport/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -55,15 +55,6 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
protected bool IsPageFull (Rectangle rectangle)
{
if (rectangle.Bottom > SectionBounds.PageFooterRectangle.Top) {
return true;
}
return false;
}
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));

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

@ -76,7 +76,7 @@ namespace ICSharpCode.Reports.Core.Exporter
Rectangle r = new Rectangle(section.Location.X,section.SectionOffset, Rectangle r = new Rectangle(section.Location.X,section.SectionOffset,
section.Size.Width,section.Size.Height); section.Size.Width,section.Size.Height);
if (base.IsPageFull(r)) { if (PrintHelper.IsPageFull(r,base.SectionBounds)) {
base.FirePageFull(mylist); base.FirePageFull(mylist);
section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y; section.SectionOffset = base.SinglePage.SectionBounds.PageHeaderRectangle.Location.Y;
mylist.Clear(); mylist.Clear();

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

@ -81,7 +81,7 @@ namespace ICSharpCode.Reports.Core.Exporter
PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,row); PrintHelper.SetLayoutForRow(base.Graphics,base.Layouter,row);
if (this.IsPageFull(new Rectangle(new Point (row.Location.X,currentPosition.Y),row.Size))) { if (PrintHelper.IsPageFull(new Rectangle(new Point (row.Location.X,currentPosition.Y),row.Size),base.SectionBounds)) {
base.FirePageFull(mylist); base.FirePageFull(mylist);
mylist.Clear(); mylist.Clear();
currentPosition = PrintTableHeader(mylist,headerRow, currentPosition = PrintTableHeader(mylist,headerRow,

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

@ -26,6 +26,7 @@ namespace ICSharpCode.Reports.Core.Interfaces
{ {
IDataNavigator DataNavigator {set;} IDataNavigator DataNavigator {set;}
IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;} IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;}
void StartLayoutAt (BaseSection section);
void RenderTable (BaseReportItem parent, SectionBounds sectionBounds, ReportPageEventArgs rpea,ILayouter layouter); void RenderTable (BaseReportItem parent, SectionBounds sectionBounds, ReportPageEventArgs rpea,ILayouter layouter);
} }
} }

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

@ -197,16 +197,6 @@ namespace ICSharpCode.Reports.Core
} }
public static bool IsPageFull (Rectangle rectangle,SectionBounds bounds)
{
if (rectangle.Bottom > bounds.PageFooterRectangle.Top) {
return true;
}
return false;
}
protected void PrintNoDataMessage(PrintPageEventArgs e) protected void PrintNoDataMessage(PrintPageEventArgs e)
{ {
if (e == null) { if (e == null) {

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

@ -157,6 +157,11 @@ 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;
if (rpea.SinglePage.PageNumber == 1) {
tableContainer.StartLayoutAt(base.Sections[2]);
} else {
tableContainer.StartLayoutAt(base.Sections[1]);
}
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;
@ -183,7 +188,7 @@ namespace ICSharpCode.Reports.Core {
base.CurrentSection.Size.Height); base.CurrentSection.Size.Height);
if (AbstractRenderer.IsPageFull(sectionRect,base.SectionBounds)) { if (PrintHelper.IsPageFull(sectionRect,base.SectionBounds)) {
AbstractRenderer.PageBreak(rpea); AbstractRenderer.PageBreak(rpea);
this.RemoveSectionEvents(); this.RemoveSectionEvents();
return; return;

Loading…
Cancel
Save