提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:我只采一朵|2017-12-29 10:02:43.000|阅读 213 次
概述:在浏览电子报表时,你常常会想要高亮显示一些文本,就像你在阅读纸质文档时用荧光笔勾画重点那样。我要告诉你,这是可以实现的。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
在浏览电子报表时,你常常会想要高亮显示一些文本,就像你在阅读纸质文档时用荧光笔勾画重点那样。我要告诉你,这是可以实现的。
在报表预览模式下,你可以通过单击鼠标来选择所需的文本字段。也就是说,你单击文本框,它就会改变颜色。如果再次按下,突出显示效果消失。我会告诉你两种方法来做到这一点,他们都涉及使用报表脚本。
方法1:该方法的本质是使用一个Sender(即引发事件的对象)来分配一个新的颜色给OnCklick事件处理句柄。在这种情况下,你需要更新缓存中的报表页面,因为 因为预览模式会显示其报表。
那么,让我们用产品清单创建一个最简单的报表:
假设我们想通过点击来突出显示其中的一个字段。而当我们再次点击时,我们想删除高亮显示。为文本对象创建事件“点击”,以显示Products.ProductName字段。
private void Text1_Click(object sender, EventArgs e) { if (sender is TextObject) { //Define sender as TextObject TextObject obj = sender as TextObject; //Method of highlighting an object SwitchColor(obj); if(Report.Preview != null) { // Refresh the current page of the report in the cache, if the report is viewed on a desktop Report.PreparedPages.ModifyPage(Report.Preview.PageNo - 1, obj.Page as ReportPage); //Refresh preview Report.Preview.Refresh(); } } } private void SwitchColor(TextObject obj) { // Check whether the object is filled with yellow if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow) //Fill with yellow obj.Fill = new SolidFill(Color.Yellow); // Clear the fill else obj.Fill = new SolidFill(Color.Transparent); }
如你所见,我们从点击事件中提取Sender对象,将其定义为文本对象并更改其填充。然后,重新绘制缓存中的报表页面。如果我们有一个web报表,我们只需更改对象的填充,而无需重新绘制报表页面。
我们再考虑下另一种替代方法。
方法2:这种方法的本质是确定对象的坐标,我们将用颜色填充。然后我们更新缓存中的报表页面,就像第一个方法一样。
private void Text1_Click(object sender, EventArgs e) { if (sender is TextObject) { // Get the current page number int pageNo = Report.Preview.PageNo - 1; // Get the page by number ReportPage page = Report.PreparedPages.GetPage(pageNo); // Define sender as TextObject - this phantom object, we also need the original object from the preview page TextObject obj = sender as TextObject; // Looking the original object on the preview page foreach(ReportComponentBase b in page.AllObjects) // It is necessary to identify the object by name and coordinates if (b.Name == obj.Name && b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft) { // Get the original object obj = b as TextObject; break; } // Defining the object's fill if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow) obj.Fill = new SolidFill(Color.Yellow); else obj.Fill = new SolidFill(Color.Transparent); // Update the report page in the cache Report.PreparedPages.ModifyPage(pageNo, page); // Refresh prewiew Report.Preview.Refresh(); } }
我们来演示一下这个代码的操作:
这种方法客观上比较复杂,只适用于预览模式。但是,它有它的优点。假设你不仅要突出显示你单击的文本对象,还要突出显示表中的整个行。然后添加另一个文本对象,使其与我们将单击的对象重叠。我们拉伸它的整个宽度。文本对象的左边界与文本对象的左边界重合,为此我们创建了一个点击事件,这一点很重要。右键单击,并从菜单中选择:
就这样,我们将这个对象移动到背景,以便它不与其他文本字段重叠。
修改一下我们以前的代码:
if (b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft) { // Get the original object obj = b as TextObject; break; }
我从条件中删除了名称的比较,只留下了字段开始坐标的比较。现在运行报表并点击产品名称:
如上所示,这两种方法都是可行的。第一种方法比较简单,但是只允许你选择Sender中的特定对象。第二个更复杂,但它可以让你突出Sender之外的的对象。你只需要指定他们的坐标。在web报表中,你只能使用第一种方法。
当然,你不仅可以更改背景颜色,还可以更改文本本身的颜色、样式或字体。另外,当以任何支持的格式(例如PDF)导出报表时,所有这些修改都会被保留。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
用于快速高效地生成报表的附加组件
FastScriptFastScript是一个跨平台的多语言脚本引擎,帮助开发者在他们的应用程序中增加脚本功能。
FastCube VCLFASTCUBE VCL是一款有效的数据分析工具
FastReport .Net一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案。
FastQueryBuilderFastQueryBuilder是一款简单实用的可视SQL请求软件开发包。它与本地CS数据库兼容。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢