报表生成器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用户指南:关于脚本(上)

FastReport.NET官方版下载(qun:585577353)icon-default.png?t=N7T8https://www.evget.com/product/1861/download

报告和引擎对象

除了报告中包含的对象外,脚本中还定义了两个变量:报告和引擎。

报告变量指的是当前的报告。在下面的列表中,列出了报告对象的方法:

MethodDescription
object Calc(string expression)计算表达式并返回值。首次调用此方法时,表达式将被编译,这需要一些时间。
object GetColumnValue(string complexName)返回数据列的值。列名必须以 "DataSource.Column "形式显示。如果列的值为空,则默认将其转换为一个值(0、空字符串、false)。
object GetColumnValueNullable(string complexName)返回数据列的值。与前一个方法相反,它不会转换为默认值,也可能为空。
Parameter GetParameter(string complexName)返回具有指定名称的报告参数。在引用嵌套参数时,名称可以是复合的:"MainParam.NestedParam"。
object GetParameterValue(string complexName)返回具有指定名称的报告参数的值。
void SetParameterValue(string complexName, object value)设置指定名称的报告参数值。
object GetVariableValue(string complexName)返回系统变量的值,例如 "Date"。
object GetTotalValue(string name)按名称返回 "Data"窗口中定义的总计值。
DataSourceBase GetDataSource(string alias)

按名称返回报表中定义的数据源。

引擎对象是一个控制报告创建的引擎。通过使用引擎的方法和属性,可以管理在页面上放置波段的过程。您可以使用引擎对象的以下属性:

PropertyDescription
float CurX当前 X 轴坐标。可以为该属性赋值,以便移动打印对象。
float CurY当前在 Y 轴上的打印位置。可以为该属性赋值,以移动打印对象。
int CurColumn多栏报表中当前列的编号。第一列的编号为 0
int CurPage打印页面的编号。该值可从系统变量 "Page "中获取。
float PageWidth页面宽度减去左右页边距。
float PageHeight页面高度减去上下页边距。
float PageFooterHeight页面页脚(及其所有子带)的高度
float ColumnFooterHeight栏脚(及其所有子带)的高度。
float FreeSpace页面可用空间的大小。
bool FirstPass如果正在执行第一次(或唯一一次)报告传递,则返回 true。可通过 Report.DoublePass 属性获取传递次数。
bool FinalPass如果正在执行最后一次(或唯一一次)报告传递,则返回 true。

在下图中,你可以看到上面列出的一些属性的含义。 

fastreport

Engine.PageWidth 和 Engine.PageHeight 属性决定打印区域的大小,几乎总是小于页面的实际大小。打印区域的大小由页边距决定,页边距由 LeftMargin、TopMargin、RightMargin 和 BottomMargin 页面属性给出。

Engine.FreeSpace 属性决定页面上可用空间的高度。如果页面上有 ""Report footer" "带,则在计算 FreeSpace 时会考虑其高度。请注意,打印页边框后,可用空间会减少。

如何形成准备好的报告页面?

FastReport 引擎在页面上显示条带,直到有足够的空间进行条带输出。当没有可用空间时,将打印 "报告页脚 "条带并形成新的空页。显示条带从当前位置开始,当前位置由 X 和 Y 坐标决定。该位置由 Engine.CurX 和 Engine.CurY 属性重新调整。打印带状图后,CurY 会自动按打印带状图的高度增加。打印多栏报表时,CurX 的位置会发生变化。

Engine.CurX 和 Engine.CurY 属性不仅可用于读取,也可用于写入。这意味着您可以通过使用一个合适的事件来手动移动条带。使用这些属性的示例请参见 "示例 "部分。

引擎对象中定义了以下方法:

MethodDescription
void AddOutline(string text)在报告大纲中添加元素(请参阅 "交互式报告 "章节),并将当前位置设置为添加的元素。
void OutlineRoot()设置大纲根部的当前位置。
void OutlineUp()将当前位置移动到更高层次的大纲元素上。
void AddBookmark(string name)添加书签(请参阅 "交互式报告 "章节)
int GetBookmarkPage(string name)返回书签所在页码。
void StartNewPage()开始一个新页面。如果报表是多栏报表,则开始新的一栏。

通过使用 AddOutline、OutlineRoot 和 OutlineUp 方法,可以手动创建报告大纲。通常,这都是借助 OutlineExpression 属性自动完成的,每个波段和报表页面都有 OutlineExpression 属性。

AddOutline 方法为当前大纲元素添加一个子元素,并使其成为当前元素。当前的报告页面和页面上的当前位置都与新元素相关联。如果多次调用 AddOutline 方法,就会产生如下结构:

Item1 Item2 Item3

为了控制当前元素,有 OutlineUp 和 OutlineRoot 方法。第一个方法将指针移到位于更高层的元素上。因此,脚本:

Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineUp(); Engine.AddOutline("Item4");

将创建以下大纲:

Item1 Item2 Item3 Item4

OutlineRoot 方法会将当前元素移动到大纲的根部。例如,下面的脚本:

Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineRoot(); Engine.AddOutline("Item4");

将创建以下大纲:

Item1 Item2 Item3 Item4

引用系统变量

要引用系统变量,请使用报告对象的 GetVariableValue 方法:

DateTime date = (DateTime)Report.GetVariableValue("Date");

在 "Data "窗口中可以看到系统变量列表。您可以将变量拖入脚本中,FastReport 会自动创建用于引用变量的代码。

引用总值

要引用总值,请使用报告对象的 GetTotalValue 方法:

float sales = Report.GetTotalValue("TotalSales");

在 "Data "窗口中可以看到总数列表。从它,你可以拖动到脚本,在此 FastReport 代码自动引用总。

总计值具有 FastReport.Variant 类型。It can be directly in any expression, because the FastReport.Variant type is automatically converted to any type.例如

float tax = Report.GetTotalValue("TotalSales") * 0.2f;

在处理过程中,可以参考总值。通常情况下,总值在打印带子的那一刻就 "ready to use"。

引用报告参数

要引用报告参数,请使用报告对象的 GetParameterValue 方法:

int myParam = (int)Report.GetParameterValue("MyParameter");

参数可以嵌套。在这种情况下,请标出父参数的名称,并在句号后标出子参数的名称:

Report.GetParameterValue("ParentParameter.ChildParameter")

参数有明确的数据类型。它在参数的 DataType 属性中给出。在引用参数时必须考虑到这一点。您可以在"Data"窗口中看到参数列表。您可以将参数拖入脚本,FastReport 会自动创建用于引用参数的代码。

要更改参数值,请使用报告对象的 SetParameterValue 方法:

Report.SetParameterValue("MyParameter", 10);

本次关于 FastReport .Net 介绍就讲解到这里了,点击此处查看关于用户指南的更多内容。

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

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

相关文章

走进redisson

这里作者将大家走进redisson,读完这篇相信加深你对redisson的获取锁,重入,超时,看门狗,发布订阅等原理和功能的理解。 本文将深入原理代码,给出每行代码的意义以及最后的效果,过程有些枯燥&…

GitHub Copilot怎么取消付费?

0. 前言 GitHub Copilot非常好用,还没有使用过的同学可以参考教程白嫖一个月:【保姆级】VsCode 安装GitHub Copilot实操教程 GitHub Copilot每月10美元的费用对于一些用户来说可能是一笔不小的开销。如果你已经完成了GitHub Copilot的免费试用&#xf…

在conda下的sklearn库安装

比较坑的是它这个库在conda下不叫这个名字,所以直接conda install sklearn是不行的,输入下面的指令就能直接安装啦。 conda install scikit-learn

【数据结构】猛猛干7道链表OJ

前言知识点 链表的调试技巧 int main() {struct ListNode* n1(struct ListNode*)malloc(sizeof(struct ListNode));assert(n1);struct ListNode* n2(struct ListNode*)malloc(sizeof(struct ListNode));assert(n2);struct ListNode* n3(struct ListNode*)malloc(sizeof(struc…

docker方式进行pytorch多机多卡分布式训练

docker ip共享与gpu指定 1)ip共享 docker网络有多种,这里选择host直接用宿主机的ip 2)指定gpu docker方式进行pytorch多机多卡分布式训练 nvidia docker 容器介绍链接:https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/ docker用的nvidia官方镜像…

练习11 Web [极客大挑战 2019]Http

页面没有上传文件的地方,尝试查看前端源码中有没有任何内容,以及Fuzz手段查找php文件进行重放改包 本题要点: 伪造请求域名(Referer),伪造浏览器标识(User-Agent),伪造IP…

QT(6.5) cmake构建C++编程,调用python

一、注意事项 explicit c中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色,构造器、类型转换操作符, c提供关键字explicit,阻止转换构造函数进行的隐式转换的发生&#…

vue3 + ts +element-plus + vue-router + scss + axios搭建项目

本地环境: node版本:20.10.0 目录 一、搭建环境 二、创建项目 三、修改页面 四、封装路由vue-router 五、element-plus 六、安装scss 七、封装axios 一、搭建环境 1、安装vue脚手架 npm i -g vue/cli 2、查看脚手架版本 vue -V3、切换路径到需…

DC-1靶场

一.环境搭建 下载地址 http://www.five86.com/downloads/DC-1.zip 把桥接设置为nat模式,打开靶机的时候会提示几个错误,点击重试即可 启动靶机,如下图所示即可 二.开始打靶 1.信息收集 arp-scan -l 扫描跟kali(攻击机&…

李宏毅深度强化学习导论——基本概念

引言 这是李宏毅老师深度强化学习视频的学习笔记,主要介绍强化学习的基本概念,从直观的角度去教大家如何理解强化学习的知识而不是理论的角度,所以包含的数学公式不多。 什么是强化学习 我们知道监督学习需要人类给机器一个标签&#xff0c…

Docker专题-04 Nginx部署

Docker专题-04 Nginx部署 注: 本教程由羞涩梦整理同步发布,本人技术分享站点:blog.hukanfa.com 转发本文请备注原文链接,本文内容整理日期:2024-03-21 csdn 博客名称:五维空间-影子,欢迎关注…

3.windows下Ubuntu,sratoolkit软件,从ncbi的sra数据库下载数据。

NCBI的SRA(Sequence Read Archive)数据库是一个公共数据库,用于存储高通量测序数据,包括基因组、转录组和表观基因组等数据。研究人员可以在SRA数据库中找到各种生物样本的测序数据,并进行检索、下载和分析。 在NCBI的…

启扬RK3568核心板,助力外科手术机器人迈向智能诊疗之路

外科手术机器人是将机器人技术与外科手术相结合的高端医疗装备,可以帮助医生制定手术计划,提高手术过程中的准确度,并将传统技术转化为数字程序。通过利用机械控制、视觉成像、光电技术、人工智能等技术,外科手术机器人在医疗领域…

全国产飞腾+FPGA架构,支持B码+12网口+多串电力通讯管理机解决方案

行业痛点: 中国的电力网络已经成为当今世界覆盖范围最广、结构最为复杂的人造科技系统。随着国家和各部委颁布了一系列法律法规,如国家颁布的《中华人民共和国网络安全法》、工信部颁布的《工业控制系统信息安全防护指南》、发改委颁布的14号令《电力监控系统安全防…

动态规划课堂7-----两个数组的dp问题(等价代换)

目录 引言: 例题1:最长公共子序列 例题2:不同的子序列 例题3:通配符匹配 例题4:正则表达式 结语: 引言: 本节我们就要进入两个数组的dp问题的学习,通过前面几个章节的学习&…

深入剖析JavaScript引擎的工作原理

文章目录 导文什么是JavaScript引擎的工作原理?1. 解析阶段解析器(Parser) 2. 编译阶段3. 执行阶段解释器(Interpreter)优化器(Optimizer) 4. 垃圾回收阶段垃圾回收器 其他 导文 JavaScript引擎…

如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?

放大了看效果 ​​​​​​​​​​​​​​ // 摇晃小铃铛振动/震动/摇晃/晃动的特效/效果---------------------------------------- [sg-shaking] {display: inline-block;transform-origin: center top;animation: sg-shaking 1s alternate forwards; }keyframes sg-shaki…

【Apache ShenYu源码】如何实现负载均衡模块设计

ShenYu是一个异步的,高性能的,跨语言的,响应式的 API 网关。有关ShenYu的介绍可以戳这。 一、前瞻 今天我们尝试不同的代码阅读方式,按模块来去阅读源码,看看效果如何。 本次阅读锁定在shenyu-loadbalancer&#xf…

Java安全 反序列化(3) CC1链-TransformedMap版

Java安全 反序列化(3) CC1链-TransformedMap版 本文尝试从CC1的挖掘思路出发,理解CC1的实现原理 文章目录 Java安全 反序列化(3) CC1链-TransformedMap版配置jdk版本和源代码配置前记 为什么可以利用一.CC链中的命令执行我们可以尝试一下通过InvokerTransformer.tr…

Windows环境下编译ffmpeg 6.1源码--Virtual Studio + Msys2方式

环境准备 约定:源码全部放到sources下,目录结构说明 /d/java/ffmpeg #工程工目录 ├── build #存放编译文件的目录,子目录为具体模块的构建目录 │ ├── fdk-aac │ ├── ffmpeg │ └── x264 ├── instal…