报表生成器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см 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索编程新纪元:Code GeeX、Copilot与通义灵码的智能辅助之旅

在人工智能技术日新月异的今天,编程领域的革新也正以前所未有的速度推进。新一代的编程辅助工具,如Code GeeX、Copilot和通义灵码,正在重塑开发者的工作流程,提升编程效率,并推动编程教育的普及。本文将深入探讨这三款…

如何在Windows 10上打开和关闭平板模式?这里提供详细步骤

前言 默认情况下,当你将可翻转PC重新配置为平板模式时,Windows 10会自动切换到平板模式。如果你希望手动打开或关闭平板模式,有几种方法可以实现。​ 自动平板模式在Windows 10上如何工作 如果你使用的是二合一可翻转笔记本电脑&#xff0…

《小程序从入门到入坑》框架语法

前言 哈喽大家好,我是 SuperYing,我们继续小程序入门系列,本文将对小程序框架语法进行比较全面的介绍。在《小程序从入门到入坑》简介及工程创建中,我们提到小程序项目结构,主要包括 app.json,app.js&…

某夕夕商品数据抓取逆向之webpack扣取

逆向网址 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbQ 逆向链接 aHR0cHM6Ly93d3cucGluZHVvZHVvLmNvbS9ob21lL2JveXNoaXJ0 逆向接口 aHR0cHM6Ly9hcGl2Mi5waW5kdW9kdW8uY29tL2FwaS9naW5kZXgvdGYvcXVlcnlfdGZfZ29vZHNfaW5mbw 逆向过程 请求方式:GET 参数构成 【anti_content】…

爬虫入门到精通_实战篇12(使用Redis+Flask维护动态Cookies池)

1 目标 为什么要用Cookies池 网站需要登录才可爬取,例如新浪微博爬取过程中如果频率过高会导致封号需要维护多个账号的Cookies池实现大规模爬取 Cookies池的要求 自动登录更新定时验证筛选提供外部接口 2 流程框架 首先,需要有一个账号队列&#xf…

【Node.js从基础到高级运用】十一、构建RESTful API

在本篇博客中,我们将综合之前讨论的内容,深入探索如何使用Node.js构建一个RESTful API。我们将重点讨论设计合理的API端点,展示如何通过代码实现这些端点,并指导如何使用Postman测试我们的API,确保其按预期工作。 前提…

Spring Cloud Alibaba微服务从入门到进阶(四)(服务发现-Nacos )

Nacos是服务发现组件和配置服务器 作为服务发现注册组件Nacos Server 搭建Nacos Server 下载、启动 访问nacos,默认 用户/密码 nacos/nacos 将应用注册到nacos 加依赖 在SpringCloud子项目中,Feign是属于OpenFeign,Sentinel、Nacos是属于alibaba的&…

RabbitMQ 模拟实现【六】:程序模拟实现

文章目录 模拟实现模拟消费者模拟生产者效果展示 启动结果如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71841546ad8043f1bd51e4408df791de.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f6e3e72ff9a4483c978ec48e24f075c2.p…

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱? 不同类型的服务器有不同的价格。 以ECS计算型c5为例:2核4G-1年518.40元,4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成: 也就是说,云服务器配置成本磁盘价格网络宽带价格…

Xcode 15.3 Archive失败

Xcode 15.3 Archive失败 背景 升级 Xcode 到 15.3,真机运行正常。打包的时候发现 Archive 失败。 提示: Call parameter type does not match function signature! 仔细看报错里是和HandyJSON相关的提示。 解决 起初以为和 Pod 库有关系,…

Python Web开发记录 Day10:Django part4 靓号管理与优化

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、数据库准备2、靓号列表3、新建靓号4、编辑靓…

【探索Linux】—— 强大的命令行工具 P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)

阅读导航 引言一、UDP协议1. UDP简介2. UDP的特点3. UDP的使用场景4. UDP的局限性 二、TCP协议1. TCP简介2. TCP的特点3. TCP的应用场景 三、UDP 和 TCP 的异同温馨提示 引言 在上一篇文章中,我们深入探讨了Linux网络编程的基石——套接字(Socket&#…

微博热搜榜单采集,微博热搜榜单爬虫,微博热搜榜单解析,完整代码(话题榜+热搜榜+文娱榜和要闻榜)

文章目录 代码1. 话题榜2. 热搜榜3. 文娱榜和要闻榜 过程1. 话题榜2. 热搜榜3. 文娱榜和要闻榜 代码 1. 话题榜 import requests import pandas as pd import urllib from urllib import parse headers { authority: weibo.com, accept: application/json, text/pl…

黑马程序员java部分笔记(持续更新)十点二:封装

面向对象的三大特征:封装,继承,多态 告诉我们正确的属性与方法 例1:需求:定义一个类:人 属性:姓名,年龄 行为:吃饭,睡觉 代码: public class Pe…

IDEA中导入eclipse运行的java项目

本篇文章主要的内容是在IDEA中导入eclipse运行的java项目,亲测有效。 话不多说,直接开整。 前提:先打开idea软件,界面如下: 开始按下方步骤依次走即可。 1、file --> new --> Project from Existing Sources..…

el-input设置max、min无效的解决方案

目录 一、方式1:type“number” 二、方式2:oninput(推荐) 三、计算属性 如下表所示,下面为官方关于max,min的介绍: el-input: max原生属性,设置最大值min原生属性&a…

函数栈和调用

我们看函数调用,首先明确,ra是存着返回地址,s0是帧指针, addi函数一开始先开辟栈空间(改变sp) 然后存下ra和s0 然后把s0指向栈底部,然后利用s0来吧局部变量存放再栈上,然后又放进…

Android 异常重启--踩坑归来--干货篇

如果你未对自己的app进行过处理,那么线上各种偶发莫名其妙的闪退、白屏、数据丢失,请检查一下是否因此而引发的。 起因 异常重建指的是非配置变更情况下导致的 Activity 重新创建。 常见场景大多是因为内存等资源不足,从而导致后台应用被系…

大模型笔记:吴恩达 ChatGPT Prompt Engineering for Developers(1) prompt的基本原则和策略

1 intro 基础大模型 VS 用指令tune 过的大模型 基础大模型 只会对prompt的文本进行续写 所以当你向模型发问的时候,它往往会像复读机一样续写几个问题这是因为在它见过的语料库文本(通常大多来自互联网)中,通常会连续列举出N个问…

【软考】UML中的图之对象图

目录 1. 说明2. 图示3. 特性 1. 说明 1.对象图即object diagram2.展现了某一时刻一组对象以及它们之间的关系3.描述了在类图中所建立的事物的实例的静态快照4.对象图一般包括对象和链5.对象图展示的是对象之间关系,不存在交互,所以不是交互图 2. 图示 …