报表生成器FastReport .Net用户指南:关于脚本(上)

FastReport的报表生成器(无论VCL平台还是.NET平台),跨平台的多语言脚本引擎FastScript,桌面OLAP FastCube,如今都被世界各地的开发者所认可,这些名字被等价于"速度"、"可靠"和"品质",在美国,欧洲和非洲不同国家均设有办事处。FastReports网站有10种不同语言的介绍,FastReports报表拥有40种语言的本地化的信息。

**FastReport .Net**是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。

FastReport.NET官方版下载(qun:585577353)https://www.evget.com/product/1861/download

一般信息

与其他报告生成器不同,FastReport 中的脚本只包含您编写的内容。在脚本中,您可以

  • 在主脚本类中添加变量、方法和属性;
  • 创建报告对象的事件处理程序;
  • 根据需要在脚本中添加新的类。类可以添加在 ReportScript 主类之前或之后。

您不能

  • 删除、重命名或更改 ReportScript 主类的可见性区域;
  • 重命名主类所在的命名空间。

运行报告时,会出现以下情况:

  • fastReport 会在脚本中添加变量列表,这些变量的名称与报告对象的名称相对应。这是在编译脚本之前完成的,这样就可以通过名称来引用报告对象;
  • 在脚本中添加表达式处理程序,处理报告中的所有表达式;
  • 如果脚本不为空,则编译脚本;
  • 初始化脚本类;
  • 运行报告。
事件处理程序

脚本主要用于创建对象的事件处理程序。要创建事件处理程序,请选择所需的对象。在 "Properties(属性)"窗口中按下 按钮,打开事件列表:

选择需要的事件并双击。FastReport 会在报告代码中添加一个空的事件处理程序:

private void Text2_BeforePrint(object sender, EventArgs e) { }

"Report "对象也有事件。可以通过以下方法选择该对象:

  • 在 "Report Tree"窗口中选择 "Report";
  • 在 "Properties "窗口的下拉列表中选择 "Report"。

要删除事件处理程序,请在 "Properties "窗口中选择一个事件,选中文本并按下删除键:

报告事件

为了最大限度地灵活控制报表,每个报表对象都有多个事件。例如,在与 "Data"带连接的处理程序中,可以过滤记录,即根据特定条件隐藏或显示带。

让我们考虑一下在报表生成过程中触发的事件。以一个简单的报表为例,该报表包含一个页面、一个 "Data "条带和条带上的两个 "Text "对象:

在报告开始时,"Report "对象会触发 StartReport 事件。在报告页面形成之前,StartPage 事件会被触发。每个模板页面(不要与准备好的报告页面混淆!)都会触发一次该事件。在我们的例子中,无论准备好的报告有多少页,事件都会被触发一次,因为模板报告只有一页。

然后,开始打印 "Data" 带行。具体过程如下:

  • 触发 BeforePrint 带事件;
  • 打印带中所有对象的 BeforePrint 事件被触发;
  • 所有对象都填入数据;
  • 所有位于带状布局上的对象的 AfterData 事件被触发;
  • 触发 BeforeLayout 频带事件;
  • 将对象放置在带状区域上,计算带状区域的高度并拉伸带状区域(如果可以的话);
  • 触发 AfterLayout band 事件;
  • 如果带状物件无法放置在页面的空闲位置,则会形成一个新页面;
  • 在准备好的报告页面上显示条带及其所有对象;
  • 触发 AfterPrint 频带事件;
  • 触发所有条带对象的 AfterPrint 事件。
  • 只要数据源中有数据,就会打印数据带行。之后,在我们的例子中,报告的形成就结束了。一个页面的 FinishPage 事件被触发,最后--"报表 "对象的 FinishReport 事件被触发。

因此,通过使用不同对象的事件,可以控制报告形成的每一步。正确使用事件的关键在于充分理解上述 11 个步骤中阐述的波段打印过程。

因此,只需使用 "BeforePrint "带,就可以完成很多操作--对对象所做的任何更改都会显示出来。但在这种情况下,无法分析如果条带拉伸,将在哪一页打印,因为条带的高度将在第 6 步计算。

这可以借助第 7 步的 AfterLayout 事件或第 10 步的 AfterPrint 来完成,但在后一种情况下,条带已经打印,对对象的操作不会产生任何结果。

总之,您必须明确说明每个事件在哪个时刻触发,并使用与给定任务相对应的事件。

.Net 对象

在脚本中,您可以使用以下程序集中定义的任何 .Net 对象:

复制代码
System.dll
System.Drawing.dll
System.Windows.Forms.dll
System.Data.dll
System.Xml.dll

除此之外,您还可以使用 FastReport 程序集中定义的任何对象。如果需要访问其他程序集,请将其添加到程序集列表中。这可以在 "Report|Options...(报告|选项...)"菜单中选择 "Script(脚本)"选项卡来完成:

fastreport

例如,如果要在报告中使用在应用程序中声明的函数,请在报告程序集列表中添加应用程序程序集(.exe 或 .dll)。然后就可以使用应用程序的命名空间调用该函数。例如,应用程序中定义了以下函数:

复制代码
namespace Demo
{
public static class MyFunctions
{
public static string Func1()
{
return"Hello!";
}
}
}

在脚本中调用它的方法如下:

复制代码
string hello = Demo.MyFunctions.Func1();

如果您使用的是 "Demo",那么它将允许您进行短合成:

复制代码
string hello = MyFunctions.Func1();

在引用报告对象(例如 "Text "对象)时,请使用对象名称。下面的示例将返回 Text1 对象的高度:

复制代码
float height = Text1.Height;

请注意,报表的原始测量单位是屏幕像素。在使用此类对象的左、上、宽、高等属性时,请牢记这一点。要将像素转换为厘米或更多,请使用 "Units "类中定义的常量:

复制代码
float heightInPixels = Text1.Height; float heightInCM = heightInPixels / Units.Centimeters; Text1.Height = Units.Centimeters * 5; // 5см 
相关推荐
九鼎科技-Leo2 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
小白不太白9505 小时前
设计模式之 外观模式
microsoft·设计模式·外观模式
万里沧海寄云帆6 小时前
Word 插入分节符页码更新问题
windows·microsoft·word
dot.Net安全矩阵7 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
zls3653657 小时前
.NET开源实时应用监控系统:WatchDog
.net
djk88887 小时前
.net将List<实体1>的数据转到List<实体2>
数据结构·list·.net
Crazy Struggle12 小时前
功能齐全的 WPF 自定义控件资源库(收藏版)
.net·wpf·ui控件库
时光追逐者14 小时前
.NET 9 中 LINQ 新增功能实操
开发语言·开源·c#·.net·.netcore·linq·微软技术
huaqianzkh14 小时前
学习C#中的Parallel类
windows·microsoft·c#
zls36536517 小时前
.NET高效下载word文件
开发语言·c#·word·.net