报表生成器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)icon-default.png?t=N7T8https://www.evget.com/product/1861/download

一般信息

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

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

您不能

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

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

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

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

fastreport

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

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

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

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

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

fastreport

报告事件

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

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

fastreport

在报告开始时,"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см 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序自动化测试pytest版工具使用方法

-mini https://github.com/zx490336534/pytest-mini 微信小程序自动化测试pytest插件/工具 基于MiniTest进行pytest改造 使用方法 准备测试小程序 根据miniprogram-demo项目介绍运行一次项目 成功运行后关闭 安装&更新 pip install pytest-mini --upgrade引入插件…

Selenium库原代码WebDriver及WebElement方法属性总结

简单示例: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECdriver webdriver.Chrome()try:driver.ge…

docker 部署redis

1. 拉取redis镜像 docker pull redis2. 创建持久化存储,日志,配置文件目录 mkdir -p /docker/redis/{conf,data,log} 3. 创建日志文件 在上面创建的log文件夹中创建日志文件 touch /docker/redis/log/redis.log4. 配置配置文件 下载配置文件地址&am…

npm、nodejs和vue之间关系和区别介绍

本文讲解npm、Node.js和Vue.js这三者之间的关系和区别,以及它们各自的特点。 首先,让我们来了解一下Node.js。 **Node.js** 是一个开源的服务器端运行环境,它允许开发者使用JavaScript来编写服务器端的代码。在传统的Web开发中&#…

[数据集][图像分类]零售行业商品分类数据集256016张357类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):256016 分类类别数:356 类别名称:["1","2"…

简述你对RPC,RMI的理解

RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现,httpClient RMI:远程方法调用,Java中用于实现RPC的一种机制,RPC的Java版本是J2EE的网络调用机制,跨JVM调用对象的方法&…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中,安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象,衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台,取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

基于SpringBoot+Druid实现多数据源:注解+编程式

前言 本博客姊妹篇 基于SpringBootDruid实现多数据源:原生注解式基于SpringBootDruid实现多数据源:注解编程式基于SpringBootDruid实现多数据源:baomidou多数据源 一、功能描述 配置方式:配置文件中配置默认数据源&#xff0c…

国产化三防笔记本丨亿道国产加固笔记本FT-2000/4处理器

国产化加固笔记本是指采用国产操作系统和处理器,通过技术手段对其进行硬件加固、软件加密、数据安全等多方面加强处理的产品。这种笔记本电脑通常被用于政府项目、金融行业等对安全性要求极高的领域。 在国产化加固笔记本中,硬件加固是重要的一环。为了保…

用 C# 自己动手编写一个 Web 服务器

在.NET世界中,C#是一种功能强大的编程语言,常被用于构建各种类型的应用程序,包括Web服务器。虽然在实际生产环境中,我们通常会使用成熟的Web服务器软件(如IIS、Kestrel等),但了解如何用C#从头开…

阿里云的服务器迁移到腾讯云

第一次用在线迁移,说下我的感受: 总体说,整个迁移过程非常简单(一个命令都不需要),操作确实很方便,迁移成功后的项目运行环境(本人是通过宝塔安装的LNMP环境)、网站配置、…

全量知识系统的便利设施Amenities(惯式化AI语言设施)的设想及百度AI答问 之1

全量知识系统的便利设施Amenities(惯式化AI语言) Q1.以下是对 我刚刚完成的文档“全量知识系统的便利设施Amenities(惯式化AI语言)的构想”(以后简称“便利设施”篇)的百度AI答复。 在今天和百度AI的沟通…

使用docker搭建mongodb

使用 Docker CLI 搭建 MongoDB 1. 运行 MongoDB 容器 首先,我们使用以下命令来启动一个 MongoDB 容器: docker run -itd --name mongodb_comm -v $PWD/data:/data/db -p 27017:27017 mongo:4.4 --auth参数解释: -itd: 这三个参数通常一起…

云计算有什么作用

云计算能够为企业和个人提供更加灵活、高效的计算资源和服务,接下来小编就带领大家来了解一下云计算有什么作用吧! 一、能够促进创新 云计算能够提供一种全新的协作方式,这个能够让企业中的员工与客户之间进行更加有效的沟通,给企…

深入浅出:Objective-C中使用MWFeedParser下载豆瓣RSS

摘要 本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容,同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。 背景 随着信息量的激增,爬虫技术成为了获取和处理大量网络数据的重要手段。Objective-C作为一种成熟的编程…

吴恩达深度学习笔记:神经网络的编程基础2.9-2.14

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第二周:神经网络的编程基础 (Basics of Neural Network programming)2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent) 第一门课&#xff…

RAID技术知识详解到RAID 10的linux实现过程

1.RAID技术简介 RAID(Redundant Array of Independent Disks)独立磁盘冗余阵列。通俗来说就是将多个硬盘通过软件或硬件结合成虚拟单台大容量的硬盘使用。 RAID技术的特点: 可以自动检测故障硬盘; 可以重建硬盘坏道的资料&…

【Leetcode每日一刷】顺/逆时针旋转矩阵 |48. 旋转图像、矩阵的螺旋遍历 |54. 螺旋矩阵

一、48. 旋转图像 1.1:题目 48. 旋转图像 1.2:解题思路 题型:顺/逆时针旋转矩阵; ❗❗核心思想/ 关键:不可暴力模拟,先镜像,后水平翻转 这题的意思很简单,就是让我们把矩阵顺时…

可视化搭建一个智慧零售订单平台

前言 智慧零售行业是在数字化浪潮中快速发展的一个领域,它利用先进的信息技术和大数据分析来提升零售业务的效率和顾客体验。智慧零售订单平台,具有跨平台、数据智能清洗和建模,以及更加丰富的数据展示形式等优势。智慧零售订单平台可以以文…

mysql数据库备份学习笔记

数据库备份 方法1 物理备份:xtrabackup 方法2 逻辑备份 mysqldump 参考备份与恢复的方法: 【MySql】Mysql之备份与恢复_mysql数据库备份与还原-CSDN博客 可以借鉴的物理备份: 思路是 先做一次全量备份,然后每天做一次增量备份…