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см