FastReport教程:如何使列突出显示,具体取决于列的值

下载FastReport.Net最新版本

Matrix报表是分析数据的绝佳工具。实质上,分析报表中的矩阵是一个汇总表。“条件分配”通常用于促进分析。这是FastReport.Net中的常规工具。条件突出显示意味着使用颜色,字体或图标突出显示数据单元格,具体取决于给定条件。但是,条件突出显示适用于个人但是如果我们想根据标题中的值选择整个列呢?例如,要突出显示周末。在这种情况下,您将不得不诉诸报表的“无所不能”脚本,常规颜色突出显示在这里没有帮助。

使用基于nwind.xml演示数据库中的MatrixDemo表的矩阵创建模板:

我们的想法是在标题中找到满足条件的值。在这个矩阵中,我们按年度计算员工的收入。

让我们突出显示标题为2012和2014的列。要执行此操作,我们需要突出显示此列中的标题以及所有后续单元格,包括总计。为矩阵创建BeforePrint事件:

// List of selected columns
 private List<int> markedColumns;
// Counter for columns in the first row
 private int firstLineColumn;
 // Counter for columns in the following lines
 private int secondLineColumn;
 
 
// Matrix event handler
 private void Matrix2_BeforePrint(object sender, EventArgs e)
 {
// Create a new list for selected columns
 markedColumns = new List<int>();
// Reset the first row counter
 firstLineColumn = 0;
// Reset the next row count
 secondLineColumn = 0;
 }

最初,我们添加了几个我们将在事件处理程序中使用的变量。这些变量存储行的标记列。此外,在显示矩阵之前,我们初始化变量。

为值为[Year]的单元格的BeforePrint事件创建另一个处理程序:

 // Event handler for cells in the first row of the matrix
 private void Cell18_BeforePrint(object sender, EventArgs e)
 {
 // Use sender as TableCell
 TableCell cell = sender as TableCell;
 // Check the required value in the cell
 if (cell.Text == "2012" || cell.Text == "2014") 
 {
 // Sets the fill color for this cell.
 cell.FillColor = Color.Brown;
 // Save to selected list of columns
 markedColumns.Add(firstLineColumn);
 }
 // Increase column count for first row
 firstLineColumn++;
 }

在这里,我需要做一个小的评论,以便你了解正在发生的事情的本质。关键是在FastReport中构建报表时的矩阵输出是逐行完成的。因此,我们保存矩阵第一行的列号。在我们的例子中,2个值将落入标记列的列表中。

现在为值为[Revenue]的单元格添加事件处理程序:

// The event handler for the cells in the following rows of the matrix. You need to set it for the second row and the totals.
 private void Cell21_BeforePrint(object sender, EventArgs e)
 {
 // Use sender as TableCell
 TableCell cell = sender as TableCell;
 // Find the current index in the markedColumns list
 if (markedColumns.IndexOf(secondLineColumn) != -1)
 {
 // Sets the fill color for this cell.
 cell.FillColor = Color.Red;
 }
 // Increase counter
 secondLineColumn++;
 // Reset counter for next row
 if (secondLineColumn >= firstLineColumn)
 secondLineColumn = 0;

在此处理程序中,我们找到与第一行中所选列对应的列,并将其单元格绘制为红色。到达最后一列后,重置下一行的变量。如您所知,在构建报表时,矩阵的第二行是动态的。这意味着它将显示在源中的每行数据。因此,我们需要检查每一行并为正确列中的单元格着色。

脚本中给出的解决方案是不寻常的,但对于这种情况唯一可能的解决方案,因为矩阵是动态构建的,并且不存储单元格的最终结构,坐标和位置,直到它直接在工作表上绘制。只有模板(我们在设计器中看到的模板)和矩阵标题的文本值存储在内存中。

因此,我们必须遍历所有行并记住列以进行着色。

根据脚本,我们必须为矩阵创建三个事件处理程序BeforePrint,单元格[Year]和单元格[Revenue]。但是,在我们的矩阵中还有另一个第三行。它显示结果,根据所选列绘制它们也是很好的。为此,对于位于[Revenue]下的单元格,只需从同一[Revenue]挂钩BeforeFrint事件处理程序:

现在,运行报表:

如果要以不同的颜色绘制总计,则必须为总计的单元格创建自己的BeforePrint事件处理程序,类似于[Revenue]单元格的处理程序。

转载于:https://www.cnblogs.com/wxchuachua/p/10381919.html

第一章 设计 7 1.1、控制键 8 1.2、鼠标操作 9 1.3、工具栏 10 1.3.1、设计模式工具栏 10 1.3.2、“标准”工具栏 10 1.3.3、“文本”工具栏 11 1.3.4、“边框”工具栏 12 1.3.5、“对齐”工具栏 12 1.4、设计选项 13 1.5、报表设置 15 1.6 页面设置 16 第二章 创建报表 19 2.1、报表对象 20 2.2、“世界,你好!”报表示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、FastReport中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户表”报表 27 2.10、通过text组件显示数据表字段 29 2.11别名 30 2.12、变量。 30 2.13、“Picture”控件 32 2.14、图形报表 33 2.15、多行文本显示 34 2.16、文本拆分 36 2.17、组件的Wrap 37 2.18、显示数据表中的数据 38 2.19、标签式打印 40 2.20、子bands 42 2.21、组件的移动 43 2.22、两个数据阶的报表(主—细) 43 2.23、页首和页尾数据Band 46 2.24、多页报表 47 第三章 分组集合体 50 3.1、分组打印 51 3.2、其他分组特性 53 3.3页码的重设 55 3.4、组的操作 55 3.5、行数 56 3.6、函数集 57 3.7、页和报表的统计 60 3.8、插入汇总函数 61 第四章 格式化、加强 62 4.1、格式化输出结果 63 4.2、内嵌格式化 63 4.3、条件显示 65 4.4、分行显示数据行的颜色 66 第五章 嵌套报表 68 5.1嵌套报表 69 5.2、设计子报表 69 5.3、子报表中的限制 69 5.4、PrintOnParent选项 70 第六章 脚本 72 6.1、体验脚本语言 73 6.2、脚本结构 76 6.3、“世界你好!”脚本 78 6.4、脚本中组件对象的使用 79 6.5、调用报表变量表中的变量。 79 6.6、调用数据表子段 80 6.7、脚本中调用汇总函数 80 6.8、报表中变量显示 80 6.9、事件 81 6.10、一个使用“OnBeforePrint”事件的例子 82 6.11、在组头打印组的汇总信息 84 6.12、“OnAfterData”事件 88 6.13、Service组件 89 6.13.1、Report组件 89 6.13.2、Engine组件 90 6.13.3、“OutLine”组件 91 6.13.4、引擎组件的使用 91 6.15 Anchors 94 6.16 “Outline” 组件的使用方法 96 6.17 “OnManualBuild” 页面事件 98 6.18 脚本中的组件的建立 104 第七章 交叉报表 106 7.1、创建交叉报表 108 7.2、改变显示 110 7.3、使用函数 112 7.4、对结果进行排序 112 7.5、组合标题的表格 113 7.6、调整单元格的宽度 115 7.7、字体颜色和突出显示 117 7.8、使用脚本语言管理组件 118 7.9、调整行和的大小 123 7.10、手动填充表格单元 124 7.11、在表格单元中加入其他组件 126 7.12、一些有用的设置 129 第八章 制图表 132 8.1、chart数据中数字的限制 137 8.2、设置 137 8.3、指定数字制表 138 8.4、利用脚本进行制表 139 8.5、在delphi环境中创建的报表的打印 139 第九章 点阵报表 140 9.1、点阵报表使用交叉报表 144 9.2、点阵报表的打印 145 9.3、命令组件 146 第十章 对话框窗体 147 10.1、控件 148 10.2、“世界你好!”报表 149 10.3、输入参数,并传递到报表中 150 10.4、组件的交互 150 10.5、多个对话框表单 151 10.6、对话框窗体的管理 152 第十一章 数据访问组件 155 11.1、组件的描述 156 11.1.1、TfrxDBLookupCombobox组件 157 11.1.2、TfrxADOTable组件 157 11.1.3、TfrxAdoQuery组件 159 11.1.4、TfrxADODatabase组件 161 11.2、创建报表 161 11.3、简单的表式报表 162 11.4、参数查询报表 163 11.5、其他可用配置 164 第十二章 报表的继承性 166 12.1、创建报表 167 12.2、修改基础模板 169 12.3、组件的继承 170 第十三章 报表向导 171 13.1、新报表向导 172 13.2、数据连接向导 175 13.3、新table向导 176 13.4、新query向导 177 13.5、查询语句生成 177 第十四章 报表的预览 打印 导出 180 14.1、控制键 182 14.2、鼠标控制 182 14.3、报表的打印 183 14.4、报表中的文字搜索 183 14.5、报表的导出 184
这个指南让你熟悉报表设计器和了解报表设计的基本概念(各种区域,数据源,二次表,等等)。指南将帮助你开始用FastReport创建报表,但它不能告诉你怎样使用其它基本的报表设计器。 如果你不熟悉报表设计器,我们建议你参考QuickReport的帮助系统。QuickReport的指南已经包含在你的Delphi拷贝中。QuickReport的大部分基本概念也适用于FastReport,然而,FastReport能提供更多的弹性和最终用户的自定义。 关于FastReport的说明 FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,包含字符表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。 整个FastReport系统是用Delphi的Pascal编写的。FastReport不需要动态链接库,但需在你的项目中占用大约400kb(Delphi 5)。如果你想最终用户拥有设计能力,这将在你的.EXE中增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到FastReport不仅仅只是包含最终用户更改报表设计的能力,还能够适应查询和数据库的变化。FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。如果你的大部分应用使用FastReport,你可以简单地配置FastReport BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分。 你可以发现FastReport有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数报表。 FastReport是名副其实的快速报表:较其它一些Delphi报表设计器而言,你可以发现没有什么可以接近于它的开发速度。报表预览窗口一直是大多数报表设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。 FastReport是一个已经拥有三年历史的非常成熟的报表设计器,成长使它拥有其它Delphi报表设计器所不能相比的诸多先进特性。
这个指南让你熟悉报表设计器和了解报表设计的基本概念(各种区域,数据源,二次表,等等)。指南将帮助你开始用FastReport创建报表,但它不能告诉你怎样使用其它基本的报表设计器。 如果你不熟悉报表设计器,我们建议你参考QuickReport的帮助系统。QuickReport的指南已经包含在你的Delphi拷贝中。QuickReport的大部分基本概念也适用于FastReport,然而,FastReport能提供更多的弹性和最终用户的自定义。 关于FastReport的说明 FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,包含字符表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。 整个FastReport系统是用Delphi的Pascal编写的。FastReport不需要动态链接库,但需在你的项目中占用大约400kb(Delphi 5)。如果你想最终用户拥有设计能力,这将在你的.EXE中增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到FastReport不仅仅只是包含最终用户更改报表设计的能力,还能够适应查询和数据库的变化。FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。如果你的大部分应用使用FastReport,你可以简单地配置FastReport BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分。 你可以发现FastReport有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数报表。 FastReport是名副其实的快速报表:较其它一些Delphi报表设计器而言,你可以发现没有什么可以接近于它的开发速度。报表预览窗口一直是大多数报表设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。 FastReport是一个已经拥有三年历史的非常成熟的报表设计器,成长使它拥有其它Delphi报表设计器所不能相比的诸多先进特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值