Page tree
Skip to end of metadata
Go to start of metadata

!MISSING PHRASE 'Show All'! !MISSING PHRASE 'Hide All'!
请注意,ComponentOne软件工具附带各种示例工程以及/或者Demo,可能还同时使用了ComponentOne Studio套件所包含的其他开发工具。 报表示例
点击下面的链接查看报表示例列表:
Visual Basic 示例示例

示例

描述

Chart

使用C1Report以及C1Chart向报表添加图表。

CreateReport

通过代码动态地创建报表。此示例使用
C1Report组件。

CustomData

创建C1Report使用的自定义数据源。此示例使用C1Report以及C1PrintPreview组件。

Embedded

在设计时向C1Report组件加载报表定义。此示例使用C1Report以及
C1PrintPreview组件。

HtmlFields

呈现报表为HTML,以HTML格式保存报表。

Newsletter

创建不使用数据源的报表(非绑定报表)。此示例使用C1Report以及
C1PrintPreview组件。

NorthWind

看从NorthWind数据库导入的报表。此示例使用C1Report组件。

C# 示例示例

示例

描述

AddScriptObject

向 C1Report 的脚本引擎添加自定义对象。

AdHocSorting

在呈现报表之前选择排序条件。

ADOReport

使用 ADODB.Recordset 对象作为 C1Report 的数据源。

Chart

使用C1Report以及C1Chart向报表添加图表。此示例使用C1Report 以及C1Chart组件。

CreateReport

通过代码动态地创建报表。此示例使用C1Report组件。

CustomFields

创建可以添加到任何报表的自定义的图表以及Gradient字段。

CustomHyperlinks

超链接被单击时执行自定义操作。

CustomPaperSize

使用自定义纸张大小创建报表。此示例使用C1Report 以及 C1PrintPreview 组件。

DynamicFormat

使用脚本属性基于报表的内容格式化报表。本示例使用C1Report控件。

示例

描述

Email

通过电子邮件发送报表。

ExportXml

将报表导出为XML格式。

FlexReport

使用C1FlexGrid控件作为您报表的数据源。

HierReport

基于分级数据创建报表。此示例使用C1Report组件。

HtmlFields

呈现报表为HTML,以HTML格式保存报表。

Images

在报表中使用两种方法加载图像。

MixedOrientation

呈现两个C1Report(一个为纵向,一个为横向)至一个PDF文档。

PageCountGroup

让报表中每一个分组使用独立的页面编码。

ParameterizedFilter

创建带有一个参数化筛选器的报表。

ParseParameters

解析RecordSource字符串中的一个PARAMETERS表达式。此示例使用C1Report控件。

ProgressIndicator

在呈现报表的过程中显示进度指示器。

ReportBrowser

打开报表定义文件并列出其内容。此示例使用C1Report控件。

ReportBuilder

基于DataTable自动创建报表定义。

ReportDictionary

添加一个自定义的查字典对象至C1Report的脚本引擎。

RTFReport

演示如何在报表中绘制RTF字段。此示例使用C1Report组件。

SubReportDataSource

使用自定义数据源的子报表。此示例使用C1Report组件。

XMLData

使用XML文档作为报表的数据源。此示例使用C1Report控件。

ZipReport

压缩并加密报表定义文件。此示例使用C1Report 以及C1Zip 组件。

XML 示例示例

示例

描述

CommonTasks

一组报表的集合,用来展示如何执行常见任务。

SampleReports

XML报表定义文件,展示C1Report的功能。

C1ReportDesigner 示例示例

示例

描述

SimpleDesigner

Uses the C1ReportDesigner control to implement a simple report designer.

打印和预览示例

点击下面的链接查看报表示例列表:
Visual Basic and C# 示例示例

Sample

描述

AutoSizeTable

本示例展示如何基于其内容调整表格列的宽度。本示例提供了一个
AutoSizeTable 方法,可以被任何需要基于内容对表格的宽度进行调整的应用程序使用。

CoordinatesOfCharsInText

展示如何使用GetCharRect()方法(高级)。
该示例展示了如何使用RenderText以及RenderParagraph类上提供的
GetCharRect()方法,该方法允许查找文本中某个单独的字符所在的位置和尺寸。
在本示例中,每一个字符周围绘制了一个红色的矩形框。

DataBinding

此示例演示绑定到一个简单的列表(包括绑定到一个空列表),绑定MS Access 数据库,并使用分组,聚合函数,以及绑定表行/列分组。此示例要求2006 V3版本(C1Preview.2 2.0.20063.41002)或更高版本。

Hyperlinks

演示如何创建各种类型的超链接
该示例演示如何创建并设置C1PrintDocument所支持的几种不同的超链接类型:到同一个文档内部某个锚点的超链接,到其它C1PrintDocument对象中间某个锚点的超链接,到文档内部某个位置(render对象,页面)的超链接,到外部文件/URL的超链接。

ObjectCoordinates

该示例显示了如何将预览面板的坐标系和正在预览的C1PrintDocument关联在一
起。有方法提供用来查找当前在鼠标下方的RenderObject 对象,查询该对象的属性,在预览中高亮显示,并对其进行操作:改变对象的背景色,文本或者其它属性。变化会立即反映在文档上。
注意,如果想要该示例中高亮显示功能正常工作,必须要2006 v2
(C1Preview.2.0.20062.40855)或者更高版本。

PageLayout1

展示如何使用PageLayouts 属性。
该示例创建一个文件,该文件的首页,奇数页和偶数页分别具有不同的页面布
局。不同的布局是通过C1PrintDocument的PageLayouts 属性,以声明的方式指定,而不需要处理任何事件。

PageLayout2

显示如何使用RenderObject的LayoutChangeBefore属性。该示例创建一个文
档,该文档包含一个对象,该对象将引发一个强制的分页,同时一个不同的页面布局"嵌入"在当前的布局中,因此当前布局将在内嵌对象结束位置恢复。

RenderObjects

介绍了C1PrintDocument提供的大多数的RenderObject类型。该示例创建和预览一个C1PrintDocument,其中包含大部分的由C1PrintDocument提供的
RenderObject类型: RenderArea, RenderText, RenderGraphics, RenderEmpty,
RenderImage, RenderRichText, RenderPolygon, RenderTable, RenderParagraph.

RenderTOC

显示如何使用RenderToc对象。
该示例演示了如何通过专用的RenderToc 类型的render对象为一个文档创建目录。

RotatedText

示例显示了如何向C1PrintDocument.Text插入一段旋转文本,旋转不同的角度显示。

Stacking

显示如何使用Stack规则用作render对象定位
该示例演示了如何使用RenderObject.Stacking属性以设置对象的定位规则为
block的堆叠规则(从上到下或从左到右)以及inline(从左到右)。物体的相对定位也进行了演示。

Tables1

演示如何创建表格,设置表格页眉和页脚。


Sample

描述

 

该示例创建并预览一个包含表格的C1PrintDocument。演示如何设置表格的页眉(包括running header)和页脚。显示如何添加orphan(在指定页脚之前,在同一行打印段落的最小行数)。

Tables2

该示例显示在C1PrintDocument中表格的基本功能。将演示以下表格的功能:
表格边框(GridLines 属性,允许指定外面四条边框以及内部两条边框)。
围绕单个单元格的边框以及一组单元格的边框。
一组分离的单元格的样式属性(包括边框)。
单元格合并,跨多行多列。
单元格内容对齐方式(spanned或其它)。
表格页眉和页脚。
位于表格页脚的标签(如网页数/总页数)。

Tables3

展示在C1PrintDocument 表格中,样式的多重继承。
该示例展示表格样式的多重继承。插入一个具有一些测试数据的表格至文档。
行,列以及单元格分组的样式的一些样式属性被重新定义。在分组交叉位置的单元格继承全部的样式,将所有的样式进行合并。

TabPosition

展示如何使用文本类render对象的TabPosition属性。该示例创建一个具有
RenderParagraph对象的文档,在其中定义了TabPositions 属性,指定制表符的位置,在文档重新排布时,基于当前页面宽度计算。

VisibleRowsCols

演示表格的行/列的Visible属性。
该示例演示RenderTable的行和列的Visible属性,这将允许您隐藏某些表格的行和列,而不需要从表格中移除它们。此示例要求2006 V3版本(C1Preview.2
2.0.20063.41002)或更高。

WideTables

演示如何创建跨越多个页面的宽表
本示例演示了C1PrintDocument的允许宽对象水平横跨多页面的功能。要启用此功能,对象的CanSplitHorz 属性应设置为True。预览同时也将进行调整,以更好的显示宽对象(页边距隐藏,页面之间的间隙宽度设置为零,同时最终用户无法设置显示页边距)。

WrapperDoc

该示例为新的C1PrintDocument提供了一些简单的Wrapper方法的源代码,用来实现来自于"经典版"(旧版)C1PrintDocument的RenderBlock/Measure的一些
方法。当您需要从经典版预览升级到新版预览时,本示例提供的方法将在转换时非常有用。

ZeroWidthRowsCols

演示如何处理零宽表格列。
该示例演示如何将零宽度的表格列,或者零高度的表格行在呈现时不显示(就好像它们的Visible属性设置为False)一样。此示例要求2006 V3版本(C1Preview.2
2.0.20063.41002)或更高。

WinForms基于任务报表的帮助
任务帮助文档假设你已经熟悉.NET环境下编程,并且了解报表的基础知识以及知道一般情况下如何使用控制器。按照帮
助文档中的步骤,你可以创建包含一整套WinForms报表功能的项目,并且对如何使用WinForms报表有更加深入的理解。
报表帮助文档
任务帮助文档假设你已经熟悉.NET环境下编程,并且了解报表的基础知识以及知道一般情况下如何使用控制器。按照帮
助文档中的步骤,你可以创建包含一整套C1Report报表功能的项目,并且对如何使用C1Report报表有更加深入的理解。
注意:你需要在项目中引用以下命名空间:
C1.C1Report

CommonTasks.xml

本章节中大部分专题都以预创建报表为例来进行说明。预创建报表保存在CommonTasks.xml报表模板文件中,前提是你已经安装了the Studio for WinForms samples。你可以在文档或者我的文档下的ComponentOne Samples\Studio for
WinForms\ C1Report\ C1Report\XML\ CommonTasks目录中查看该文件。
添加图片到报表
你可以使用C1ReportDesigner添加非绑定或者绑定图片,并且添加图片水印创建非绑定图片
非绑定图片是一种静态图片,例如logo图片,水印图片这类不需要保存在数据库中的图片。完成以下步骤,添加非绑定图片到你的报表中:

  1. 打开C1ReportDesigner。
  2. 创建一个新报表或者打开已有报表,当你在C1ReportDesigner中打开报表之后,你就可以对其进行修改。
  3. 单击Design按钮,开始编辑报表。
  4. 在设计模式下,单击Add Unbound Picture按钮 ,该按钮位于Design选项卡中的Fields分组中。

弹出Open对话框。

  1. 选择想要在报表中包含的图片文件,并单击OK按钮。
  2. 在报表中单击选择你希望添加图片的位置,然后调整图片框大小来显示图片。

下图显示图片已经添加到报表中,正在调整图片大小的效果:

需要注意的是,图片文件可以被嵌入到报表模板中,也可以作为一个外部文件被引用。选择你需要的方式,在
Designer中选择Application按钮,在出现的菜单中选择Options选项。C1ReportDesigner Options对话框将会弹出,你可以在该对话框中选择Embed images into Xml when saving选项:

注意注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"03: Unbound Images"章节,该文件保存在ComponentOne Samples文件目录下。

创建绑定图片

!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
绑定图片是一种保存在数据库字段中的图片类型。想要在报表中显示这些图片,你需要在报表中新增一个字段,然后设置字段的Picture属性,将图片存储路径添加到名称列中。

使用C1ReportDesigner添加绑定图片到报表中:

  1. 在C1ReportDesigner的设计模式下,单击Add Bound Picture按钮 ,该按钮位于Design选项卡中的Fields分组。

这里将显示一个菜单,其中包括数据源中所有的二进制字段。

  1. 选择你想要加入报表中的字段。

使用代码添加绑定图片到报表中:

如果数据库中的"Photo"字段包含内嵌的OLE对象或者原始图像流,并且报表中存在"fEmployeePhoto"字段。这种情况下,使用下述代码将会在字段中显示内嵌的照片。
Visual Basic

Visual Basic

 

fEmployeePhoto.Picture = "Photo"
C#

C#

fEmployeePhoto.Picture = "Photo";

注意注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"04:Bound Images"章节,该文件保存在ComponentOne Samples文件目录下。

创建水印
水印是一种显示在报表内容下的图片类型。这种图像通常会变浅,以防止它们干扰实际的报表内容。
想要显示水印图片你需要设置图片包含文件中Picture属性。你还可以使用 PictureAlignPictureShow属性控制水印的缩放比例和它是否应该出现。

注意:注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"05: Watermark"章节,该文件保存在ComponentOne Samples文件目录下。

创建报表字段
当报表模板加载到组件中并且完成数据源定义之后,你可以新增和编辑报表字段。你可以很简单的使用
C1ReportDesigner下的Design选项卡中的Fields分组来实现该功能。

想要在报表中新增一个字段,你需要完成以下步骤:
在报表中拖拽鼠标直到光标变成十字 。单击然后通过拖拽定义新字段所占的矩形位置。然后松开按钮创建新字段。
如果你改变主意,单击ESC键或者单击Undo按钮取消操作。
注意: C1Report 仅有一种Field对象。你可以通过设置Field对象的属性来使其在某一指定方式下显示和工作。
或者
你也可以通过复制、粘贴已有的字段来创建新字段。或者按住CTRL键,然后拖拽一个字段或者字段组到新位置来创建一个副本。
创建图表
在最初版本的C1Report,中,在报表中添加图表需要使用 StartSection 事件生成图表,然后将图表图片在字段的Picture属性中进行设置。这样并不难,而且还是动态添加图片到报表中最灵活的方式。
然而,这种方式有两个缺点:
需要在报表模板外部编写代码实现,这意味着只有你的应用才能够按照预计的方式显示报表。
需要编写代码生成报表,这一过程非常冗长乏味。当前版本的C1Report支持自定义报表字段,包括基于C1Chart控制器的图表字段。想要添加一个图表区域到报表分组的页眉区域,你需要完成以下步骤:

  1. 打开C1ReportDesigner。
  2. 创建一个新报表或者打开已有报表,当你在C1ReportDesigner中打开报表之后,你就可以对其进行修改。
  3. 单击Design按钮,开始编辑报表。
  4. 在Design选项卡中的Fields分组中,单击Add Chart Field按钮
  5. 单击报表的分组页眉区域,拖动区域使其适应报表。
  6. 在属性窗口中,将图表区域的ChartDataX和ChartDataY属性值设置为你想在报表中展示的数值。你可以通过将 ChartDataY属性设置为一个通过分号间隔的字段列表(例如"UnitsInStock;ReorderLevel"),从而显示一系列的数值。

图表数据会自动根据当前报表分组进行调整。例如,当呈现"Beverages"区域时,只有该分类中的数据会参与绘图。你可以使用很多其他属性来定制图表,例如Chart.ChartType,Chart.GridLines,Chart.Use3D以及Chart.Palette等属性。

注意注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"11: Charts"章节,该文件保存在ComponentOne Samples文件目录下。

创建自定义字段
你可以创建自定义字段,并将他们添加到ReportDesigner的调色板中。完成以下步骤,实现该过程:

  1. 创建一个自定义字段类,该类来自C1.Win.C1Report.Field。
  2. 在Report Designer的设置文件中登记你的自定义字段。

下面将介绍图表和渐变字段是如何实现的。这些自定义字段的源代码是可用的,你可以在创建自定义字段时使用它们作为起始点。图表和渐变字段在C1ReportDesigner的设置文件中使用如下代码进行注册:
<customfields>
<item value="C1.Win.C1Report.CustomFields;C1.Win.C1Report.CustomFields.Chart" /> <item value="C1.Win.C1Report.CustomFields;C1.Win.C1Report.CustomFields.Gradient" />
</customfields>
例如,想要在Design调色板中增加一个新字段,需要在"C1ReportDesigner.2.exe.settings" 文件中的 <customfields>区域增加你的控制器:
<customfields>
<item value="C1.Win.C1Report.CustomFields.2;C1.Win.C1Report.CustomFields.Chart" />
<item value="C1.Win.C1Report.CustomFields.2;C1.Win.C1Report.CustomFields.Gradient" />
<!-- 在设计器中添加一个新的字段 -->
<item value="MyCustomFieldAssembly;MyCustomFieldAssembly.MyField" />
</customfields>
这里假设你的字段叫做"MyField",你可以在"MyCustomFieldAssembly"集合中找到它。

注意注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"12: Custom Fields"章节,该文件保存在ComponentOne Samples文件目录下。

定制页面标题
本部分将介绍如何定制页面标题的行为。
在页面分页处标题中增加连续标签
如果页眉的Repeat属性设置为True,分组页眉在页面分页时将会不断重复。这使报表更容易阅读,但就变得很难使用标题分辨出这是一个新分组页面或者是一个连续页面。
一种解决方式是增加一个名为"Continued"标签字段,fContinued,例如添加到分组页眉,通过脚本控制它的可见性。完成以下步骤,实现该功能:

  1. 打开C1ReportDesigner。
  2. 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
  3. 单击Close Print Preview按钮,开始编辑报表。
  4. 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
  5. 找到Detail.OnPrint属性,单击旁边空白字段,然后单击ellipsis按钮。
  6. 在弹出的VBScript编辑器中,输入下述VB表达式:

' VBScript: Detail.OnPrint fContinued.Visible = true

  1. 在属性窗口上方的下拉列表中选择GroupFooter选项。
  2. 找到GroupFooter.OnPrint属性,单击旁边空白字段,然后单击ellipsis按钮。
  3. 在弹出的VBScript编辑器中,输入下述VB表达式:

' VBScript: GroupFooter.OnPrint fContinued.Visible= false

如果fContinued字段初始化为不可见,脚本只会在连续页面的页眉中显示该标签。脚本确认fContinued字段在分组中是可见的。任何在分组页脚之后,下一个详细区域之前创建的页面分割,都不会显示该标签。
注意:注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"18: Continued Headers"章节,该文件保存在ComponentOne Samples文件目录下。
动态改变页面页眉
你可以使用C1Report的PageHeaderPageFooter属性来指定页面页眉还是页面页脚区域是否显示在所有页面,或者限制页面是否包含在报表页眉和页脚区域。
某些情况下,你想要进一步定制这种行为。例如,你想要在奇数页面和偶数页面呈现不同的页眉。可以使用脚本根据页面被呈现的情况选择显示或者隐藏字段。完成以下步骤实现该功能:

  1. 打开C1ReportDesigner。
  2. 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
  3. 单击Close Print Preview按钮,开始编辑报表。
  4. 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
  5. 找到OnFormat属性,单击旁边空白字段,然后单击ellipsis按钮。
  6. 在弹出的VBScript编辑器中,输入下述VB表达式:

odd = (page mod 2 <> 0) h1odd.Visible = odd h2odd.Visible = odd h1even.Visible = not odd h2even.Visible = not odd
如果报表页眉包含"h<x>odd"和"h<x>even"字段,该脚本将根据页面是奇数还是偶数选择显示或者隐藏字段。
需要注意的是,为了安置页面页眉显示空白区域,所有的字段的CanShrink属性都需要设置为True。

注意:注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"09: Dynamic Page Header"章节,该文件保存在ComponentOne Samples文件目录下。

自定义页面布局
下面将介绍如何定制报表的布局。
控制页面分页
缺省情况下,C1Report将在每个页面底部插入一个分页符,然后继续呈现下一个页面。你使用下述几个属性可以重载这一行为:
• Group.KeepTogether::该属性决定分组页眉是否在页面中呈现,如果它们必须在至少一个Detail区域呈现,或是全部的分组应该显示在同一个页面。
Section.KeepTogether::决定是否允许页面分页。该属性优先级低于Group.KeepTogether。
ForcePageBreak::允许你指定页面分页应该插入在分组之前或者之后,还是区域之前或者之后。
Field.KeepTogether:决定字段是否允许页面分页。该属性允许长文本字段横跨多个页面。它的优先级低于
Section.KeepTogether:。
ForcePageBreak:允许你指定页面分页应该插入在分组之前或者之后,还是字段之前或者之后。
你可以通过C1ReprotDesigner的属性表格设置这些属性。
你可以在报表呈现过程中使用脚本改变这些属性。例如,每个10个Detail区域执行一次页面分页,完成以下步骤实现该功能:

  1. 打开C1ReportDesigner,想要了解C1ReprotDesigner更多信息,请参阅Accessing C1ReportDesignerfrom

VisualStudio。

  1. 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
  2. 单击Close Print Preview按钮,开始编辑报表。
  3. 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
  4. 找到Detail.OnPrint 属性,单击旁边空白字段,然后单击省略号按钮。
  5. 在弹出的VBScript编辑器中,输入下述VB表达式:

cnt = cnt + 1 detail.forcepagebreak = "none" if cnt >= 10 then cnt = 0 detail.forcepagebreak = "after" endif

注意:注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"07: Force Page Breaks"章节,该文件保存在ComponentOne Samples文件目录下。

  • No labels