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 @@ -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 ()
{
try {
@ -120,6 +136,9 @@ namespace ICSharpCode.Reports.Addin @@ -120,6 +136,9 @@ namespace ICSharpCode.Reports.Addin
[XmlIgnoreAttribute]
public Image Image {
get {
if (this.imageSource == GlobalEnums.ImageSource.Database ) {
this.image = FakeImage(base.Size);
}
if (this.image != null) {
return image;
} else {

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

@ -117,6 +117,15 @@ namespace ICSharpCode.Reports.Core @@ -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

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

@ -22,7 +22,7 @@ namespace ICSharpCode.Reports.Core { @@ -22,7 +22,7 @@ namespace ICSharpCode.Reports.Core {
private SectionBounds sectionBounds;
private IDataNavigator dataNavigator;
private IExpressionEvaluatorFacade expressionEvaluatorFacade;
// private ISinglePage singlePage;
private BaseSection startSection;
private ILayouter layouter;
@ -86,14 +86,13 @@ namespace ICSharpCode.Reports.Core { @@ -86,14 +86,13 @@ namespace ICSharpCode.Reports.Core {
}
//
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;
base.Render(rpea);
int defaultLeftPos = PrintHelper.DrawingAreaRelativeToParent(this.Parent,this).Left;
this.Items.SortByLocation();
rpea.SinglePage.StartRow = this.dataNavigator.CurrentRow;
foreach (BaseRowItem row in this.items)
{
if (row != null)
@ -101,22 +100,21 @@ namespace ICSharpCode.Reports.Core { @@ -101,22 +100,21 @@ namespace ICSharpCode.Reports.Core {
row.Parent = this;
if (PrintHelper.IsTextOnlyRow(row) )
{
currentPosition = this.PrintRow (rpea,row,currentPosition,defaultLeftPos);
currentPosition = this.PrintTextRow (rpea,row,defaultLeftPos,currentPosition);
this.Location = saveLocation;
}
else {
do {
if (AbstractRenderer.IsPageFull(new Rectangle(currentPosition,row.Size),sectionBounds)) {
if (PrintHelper.IsPageFull(new Rectangle(currentPosition,row.Size),sectionBounds)) {
this.Location = saveLocation;
rpea.SinglePage.EndRow = this.dataNavigator.CurrentRow;
AbstractRenderer.PageBreak(rpea);
return;
}
currentPosition = this.PrintRow (rpea,row,currentPosition,defaultLeftPos);
currentPosition = this.PrintDataRow (rpea,row,defaultLeftPos,currentPosition);
}
while (this.dataNavigator.MoveNext());
this.dataNavigator.Reset();
this.dataNavigator.MoveNext();
}
}
}
@ -131,28 +129,30 @@ namespace ICSharpCode.Reports.Core { @@ -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);
row.Location = new Point (leftX,drawAt.Y);
this.dataNavigator.Fill(row.Items);
row.Location = new Point (left,currentPos.Y);
EvaluateRecursive (this.expressionEvaluatorFacade,row.Items);
PrintHelper.SetLayoutForRow(rpea.PrintPageEventArgs.Graphics,layouter,row);
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
row.Size = new Size(saveRec.Size.Width,saveRec.Size.Height);
row.Location = saveRec.Location;
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(){
return this.GetType().Name;
}
@ -166,6 +166,13 @@ namespace ICSharpCode.Reports.Core { @@ -166,6 +166,13 @@ namespace ICSharpCode.Reports.Core {
#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)
{

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

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

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

@ -81,7 +81,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -81,7 +81,7 @@ namespace ICSharpCode.Reports.Core.Exporter
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);
mylist.Clear();
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 @@ -26,6 +26,7 @@ namespace ICSharpCode.Reports.Core.Interfaces
{
IDataNavigator DataNavigator {set;}
IExpressionEvaluatorFacade ExpressionEvaluatorFacade {set;}
void StartLayoutAt (BaseSection section);
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 @@ -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)
{
if (e == null) {

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

@ -157,6 +157,11 @@ namespace ICSharpCode.Reports.Core { @@ -157,6 +157,11 @@ namespace ICSharpCode.Reports.Core {
tableContainer.DataNavigator = nav;
tableContainer.Parent = base.CurrentSection;
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);
this.ReportDocument.DetailsDone = true;
@ -183,7 +188,7 @@ namespace ICSharpCode.Reports.Core { @@ -183,7 +188,7 @@ namespace ICSharpCode.Reports.Core {
base.CurrentSection.Size.Height);
if (AbstractRenderer.IsPageFull(sectionRect,base.SectionBounds)) {
if (PrintHelper.IsPageFull(sectionRect,base.SectionBounds)) {
AbstractRenderer.PageBreak(rpea);
this.RemoveSectionEvents();
return;

Loading…
Cancel
Save