Browse Source

ReportWizard create reports with GroupFooter

pull/14/head
peterforstmeier 15 years ago
parent
commit
7914f4bf88
  1. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj
  2. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupFooter.cs
  3. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupeHeader.cs
  4. 35
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs
  5. 44
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs
  6. 62
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs
  7. 18
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs
  8. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  9. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeFooter.cs

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj

@ -145,6 +145,7 @@
<Compile Include="Project\ReportItems\BaseDataItem.cs"> <Compile Include="Project\ReportItems\BaseDataItem.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Project\ReportItems\BaseGroupFooter.cs" />
<Compile Include="Project\ReportItems\BaseGroupItem.cs" /> <Compile Include="Project\ReportItems\BaseGroupItem.cs" />
<Compile Include="Project\ReportItems\BaseImageItem.cs"> <Compile Include="Project\ReportItems\BaseImageItem.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
@ -170,7 +171,7 @@
<Compile Include="Project\ReportItems\ErrorItem.cs"> <Compile Include="Project\ReportItems\ErrorItem.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Project\ReportItems\BaseGroupedRow.cs" /> <Compile Include="Project\ReportItems\BaseGroupeHeader.cs" />
<Compile Include="Project\ReportItems\RectangleItemTypeProvider.cs" /> <Compile Include="Project\ReportItems\RectangleItemTypeProvider.cs" />
<Compile Include="Project\ReportManagers\BaseManager.cs" /> <Compile Include="Project\ReportManagers\BaseManager.cs" />
<Compile Include="Project\ReportManagers\StandartPreviewManager.cs" /> <Compile Include="Project\ReportManagers\StandartPreviewManager.cs" />

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupFooter.cs

@ -0,0 +1,22 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 07.11.2010
* Time: 19:33
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reports.Addin
{
/// <summary>
/// Description of BaseGroupFooter.
/// </summary>
public class GroupFooter:BaseGroupedRow
{
public GroupFooter()
{
}
}
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupedRow.cs → src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseGroupeHeader.cs

@ -22,6 +22,7 @@ namespace ICSharpCode.Reports.Addin
TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow)); TypeDescriptor.AddProvider(new GroupedRowTypeProvider(), typeof(BaseGroupedRow));
} }
[Category("Behavior")] [Category("Behavior")]
public bool PageBreakOnGroupChange {get;set;} public bool PageBreakOnGroupChange {get;set;}
} }

35
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/AbstractLayout.cs

@ -77,7 +77,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
item.Location = p; item.Location = p;
} }
protected static void AdjustContainer (ISimpleContainer parent, protected static void AdjustContainer (ISimpleContainer parent,
ICSharpCode.Reports.Core.BaseReportItem item) ICSharpCode.Reports.Core.BaseReportItem item)
{ {
@ -92,9 +92,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
#region HeaderColumns #region HeaderColumns
protected static ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(ISimpleContainer parent,ReportItemCollection items) protected ICSharpCode.Reports.Core.BaseRowItem CreateRowWithTextColumns(ISimpleContainer parent)
{ {
ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(items); ReportItemCollection colDetail = AbstractLayout.HeaderColumnsFromReportItems(ReportItems);
ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem(); ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer(parent,row); AdjustContainer(parent,row);
@ -136,15 +136,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
#endregion #endregion
protected ReportItemCollection AddItemsToContainer (ReportItemCollection items) protected ReportItemCollection AddItemsToContainer ()
{ {
int locationX = GlobalValues.ControlMargins.Left; int locationX = GlobalValues.ControlMargins.Left;
var minCtrlWidth = CalculateControlWidth(ParentItem,items); var minCtrlWidth = CalculateControlWidth(ParentItem,ReportItems);
var col = new ReportItemCollection(); var col = new ReportItemCollection();
foreach (var ir in items) { foreach (var ir in ReportItems) {
ir.Location = new Point(locationX,GlobalValues.ControlMargins.Top); ir.Location = new Point(locationX,GlobalValues.ControlMargins.Top);
col.Add(ir); col.Add(ir);
locationX += minCtrlWidth; locationX += minCtrlWidth;
@ -155,7 +155,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
protected static int CalculateControlWidth(ISimpleContainer row, ReportItemCollection colDetail) protected static int CalculateControlWidth(ISimpleContainer row, ReportItemCollection colDetail)
{ {
return row.Size.Width / colDetail.Count; return row.Size.Width / colDetail.Count;
} }
@ -179,12 +179,31 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
return groupHeader; return groupHeader;
} }
protected ICSharpCode.Reports.Core.GroupFooter CreateFooter (Point footerLocation)
{
ICSharpCode.Reports.Core.GroupFooter groupFooter = new ICSharpCode.Reports.Core.GroupFooter();
groupFooter.Location = footerLocation;
groupFooter.Size = new Size (300,30);
// groupFooter.Items.Add(dataItem);
return groupFooter;
}
protected void ConfigureDetails (Point detailLocation,Size detailSize)
{
ParentItem.Location = detailLocation;
ParentItem.Size = detailSize;
}
#endregion #endregion
protected ReportModel ReportModel {get; private set;} protected ReportModel ReportModel {get; private set;}
protected ISimpleContainer ParentItem {get;set;} protected ISimpleContainer ParentItem {get;set;}
protected ReportItemCollection ReportItems {get;set;}
} }
} }

44
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/ListLayout.cs

@ -15,12 +15,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public class ListLayout : AbstractLayout public class ListLayout : AbstractLayout
{ {
ReportItemCollection reportItems;
public ListLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel) public ListLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel)
{ {
this.reportItems = reportItemCollection; base.ReportItems = reportItemCollection;
ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem(); ICSharpCode.Reports.Core.BaseRowItem row = new ICSharpCode.Reports.Core.BaseRowItem();
AdjustContainer(base.ReportModel.DetailSection,row); AdjustContainer(base.ReportModel.DetailSection,row);
base.ParentItem = row; base.ParentItem = row;
@ -33,8 +31,8 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public override void CreatePageHeader() public override void CreatePageHeader()
{ {
base.CreatePageHeader(); base.CreatePageHeader();
ICSharpCode.Reports.Core.BaseRowItem row = CreateRowWithTextColumns(base.ReportModel.PageHeader, ICSharpCode.Reports.Core.BaseRowItem row = CreateRowWithTextColumns(base.ReportModel.PageHeader);
this.reportItems);
AdjustContainer(ParentItem,row); AdjustContainer(ParentItem,row);
base.ReportModel.PageHeader.Items.Add(row); base.ReportModel.PageHeader.Items.Add(row);
} }
@ -45,25 +43,43 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
if (section == null) { if (section == null) {
throw new ArgumentNullException("section"); throw new ArgumentNullException("section");
} }
Size detailSize = Size.Empty;
Size itemSize = Size.Empty;
if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0)
{ {
var groupheader = base.CreateGroupHeader(new Point (GlobalValues.ControlMargins.Left,GlobalValues.ControlMargins.Top)); var groupheader = base.CreateGroupHeader(new Point (GlobalValues.ControlMargins.Left,GlobalValues.ControlMargins.Top));
base.ReportModel.DetailSection.Items.Add(groupheader); base.ReportModel.DetailSection.Items.Add(groupheader);
ParentItem.Location = new Point(ParentItem.Location.X,50); // Detail
ParentItem.Size = new Size(ParentItem.Size.Width,40); itemSize = CreateDetail();
section.Size = new Size(section.Size.Width,90); detailSize = new Size(ParentItem.Size.Width,itemSize.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
// GroupFooter
var groupFooter = base.CreateFooter(new Point(GlobalValues.ControlMargins.Left,80));
base.ReportModel.DetailSection.Items.Add(groupFooter);
section.Size = new Size(section.Size.Width,125);
} }
else
var items = base.AddItemsToContainer(this.reportItems); {
ParentItem.Items.AddRange(items); itemSize = CreateDetail();
ParentItem.Size = new Size(ParentItem.Size.Width,items[0].Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom); detailSize = new Size(ParentItem.Size.Width,itemSize.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
section.Size = new Size(section.Size.Width,ParentItem.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom);
}
base.ConfigureDetails ( new Point(ParentItem.Location.X,45),detailSize);
section.Items.Add(ParentItem as BaseReportItem); section.Items.Add(ParentItem as BaseReportItem);
} }
Size CreateDetail()
{
var items = base.AddItemsToContainer();
ParentItem.Items.AddRange(items);
return items[0].Size;
}
#endregion #endregion
} }
} }

62
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportLayout/TableLayout.cs

@ -14,12 +14,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public class TableLayout: AbstractLayout public class TableLayout: AbstractLayout
{ {
ReportItemCollection reportItems;
public TableLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel) public TableLayout(ReportModel reportModel,ReportItemCollection reportItemCollection):base(reportModel)
{ {
this.reportItems = reportItemCollection; ReportItems = reportItemCollection;
} }
@ -39,62 +37,76 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
System.Drawing.Printing.Margins margin = GlobalValues.ControlMargins; System.Drawing.Printing.Margins margin = GlobalValues.ControlMargins;
ICSharpCode.Reports.Core.BaseTableItem table = new ICSharpCode.Reports.Core.BaseTableItem(); ICSharpCode.Reports.Core.BaseTableItem table = new ICSharpCode.Reports.Core.BaseTableItem();
ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem();
table.Name = "Table1"; table.Name = "Table1";
base.ParentItem = table;
AdjustContainer(base.ReportModel.DetailSection,table); AdjustContainer(base.ReportModel.DetailSection,table);
base.ReportModel.DetailSection.Items.Add(table); base.ReportModel.DetailSection.Items.Add(table);
base.ParentItem = table; ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(ParentItem);
ParentItem.Items.Add (headerRow);
ICSharpCode.Reports.Core.BaseRowItem headerRow = CreateRowWithTextColumns(ParentItem, this.reportItems);
ParentItem.Items.Add (headerRow);
Point insertLocation = new Point (margin.Left,headerRow.Location.Y + headerRow.Size.Height + margin.Bottom + margin.Top); Point insertLocation = new Point (margin.Left,headerRow.Location.Y + headerRow.Size.Height + margin.Bottom + margin.Top);
if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) { if (base.ReportModel.ReportSettings.GroupColumnsCollection.Count > 0) {
//Groupheader
var groupHeader = base.CreateGroupHeader(insertLocation); var groupHeader = base.CreateGroupHeader(insertLocation);
ParentItem.Items.Add(groupHeader); ParentItem.Items.Add(groupHeader);
insertLocation = new Point(margin.Left,insertLocation.Y + groupHeader.Size.Height + margin.Bottom + margin.Top); insertLocation = new Point(margin.Left,insertLocation.Y + groupHeader.Size.Height + margin.Bottom + margin.Top);
//Detail
CreateDetail(detailRow,insertLocation);
ParentItem.Items.Add (detailRow);
// GroupFooter
var groupFooter = base.CreateFooter(new Point(margin.Left,130));
ParentItem.Items.Add(groupFooter);
}
else
{
CreateDetail(detailRow,insertLocation);
ParentItem.Items.Add (detailRow);
} }
//Insert details allways CalculateContainerSize();
section.Size = new Size (section.Size.Width,ParentItem.Size.Height + margin.Top + margin.Bottom);
ICSharpCode.Reports.Core.BaseRowItem detailRow = new ICSharpCode.Reports.Core.BaseRowItem(); }
void CreateDetail (ICSharpCode.Reports.Core.BaseRowItem detailRow,Point insertLocation)
{
AdjustContainer (ParentItem,detailRow); AdjustContainer (ParentItem,detailRow);
detailRow.Location = insertLocation; detailRow.Location = insertLocation;
detailRow.Size = new Size(detailRow.Size.Width,30); detailRow.Size = new Size(detailRow.Size.Width,30);
int defX = AbstractLayout.CalculateControlWidth(detailRow,ReportItems);
int defX = AbstractLayout.CalculateControlWidth(detailRow,reportItems);
int startX = margin.Left; int startX = GlobalValues.ControlMargins.Left;
foreach (ICSharpCode.Reports.Core.BaseReportItem ir in this.reportItems) foreach (ICSharpCode.Reports.Core.BaseReportItem ir in ReportItems)
{ {
Point np = new Point(startX,margin.Top); Point np = new Point(startX,GlobalValues.ControlMargins.Top);
startX += defX; startX += defX;
ir.Location = np; ir.Location = np;
ir.Parent = detailRow; ir.Parent = detailRow;
detailRow.Items.Add(ir); detailRow.Items.Add(ir);
} }
ParentItem.Items.Add (detailRow);
ParentItem.Size = CalculateContainerSize(ParentItem);
section.Size = new Size (section.Size.Width,ParentItem.Size.Height + margin.Top + margin.Bottom);
} }
private Size CalculateContainerSize(ISimpleContainer container) private void CalculateContainerSize()
{ {
int h = GlobalValues.ControlMargins.Top; int h = GlobalValues.ControlMargins.Top;
foreach (ICSharpCode.Reports.Core.BaseReportItem item in container.Items) foreach (ICSharpCode.Reports.Core.BaseReportItem item in ParentItem.Items)
{ {
h = h + item.Size.Height + GlobalValues.ControlMargins.Bottom; h = h + item.Size.Height + GlobalValues.ControlMargins.Bottom;
} }
h = h + 3*GlobalValues.ControlMargins.Bottom; h = h + 3*GlobalValues.ControlMargins.Bottom;
ParentItem.Size = new Size (ParentItem.Size.Width,h);
return new Size (container.Size.Width,h);
} }
} }
} }

18
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/Toolbox/ToolboxProvider.cs

@ -67,19 +67,21 @@ namespace ICSharpCode.Reports.Addin
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow"); tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.DataRow");
sideTab.Items.Add(new SideTabItemDesigner(tb)); sideTab.Items.Add(new SideTabItemDesigner(tb));
/*
//Group
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupItem));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
tb.DisplayName = "SimpleGroupItem";
sideTab.Items.Add(new SideTabItemDesigner(tb));
*/
//GroupHeader //GroupHeader
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRow)); tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseGroupedRow));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
tb.DisplayName = "GroupHeaderRow"; tb.DisplayName = "GroupHeader";
sideTab.Items.Add(new SideTabItemDesigner(tb));
//GroupFooter
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.GroupFooter));
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
tb.DisplayName = "GroupFooter";
sideTab.Items.Add(new SideTabItemDesigner(tb)); sideTab.Items.Add(new SideTabItemDesigner(tb));
//BaseTable //BaseTable
tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"); tb.Bitmap = WinFormsResourceService.GetBitmap("Icons.16x16.SharpQuery.Table");
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseTableItem)); tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseTableItem));

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -90,6 +90,7 @@
<Compile Include="Project\BaseClasses\SectionBounds.cs" /> <Compile Include="Project\BaseClasses\SectionBounds.cs" />
<Compile Include="Project\BaseClasses\SortColumn.cs" /> <Compile Include="Project\BaseClasses\SortColumn.cs" />
<Compile Include="Project\BaseItems\BaseGroupedRow.cs" /> <Compile Include="Project\BaseItems\BaseGroupedRow.cs" />
<Compile Include="Project\BaseItems\BaseGroupeFooter.cs" />
<Compile Include="Project\BaseItems\BaseGroupItem.cs" /> <Compile Include="Project\BaseItems\BaseGroupItem.cs" />
<Compile Include="Project\BaseItems\BaseTextItem.cs" /> <Compile Include="Project\BaseItems\BaseTextItem.cs" />
<Compile Include="Project\BaseItems\BaseGraphicItem.cs" /> <Compile Include="Project\BaseItems\BaseGraphicItem.cs" />

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGroupeFooter.cs

@ -0,0 +1,22 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 07.11.2010
* Time: 19:44
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reports.Core
{
/// <summary>
/// Description of BaseGroupeFooter.
/// </summary>
public class GroupFooter:BaseGroupItem
{
public GroupFooter()
{
}
}
}
Loading…
Cancel
Save