报表生成器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 介绍就讲解到这里了,点击此处查看关于用户指南的更多内容。

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

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

相关文章

The plain HTTP request was sent to HTTPS port

异常信息 原因 错误信息 “The plain HTTP request was sent to HTTPS port” 表明客户端尝试使用未加密的HTTP协议发送请求到一个配置为使用加密的HTTPS协议的端口。 解决方案 要解决这个问题,需要确保使用正确的协议和端口号进行请求。应该使用的HTTPS前缀。例如…

官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会

摘要:本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会,内容主要分为以下四部分: 1、Flink CDC 新仓库,新流程 2、Flink CDC 新定位,新玩法 3、Flin…

【嵌入式硬件】步进电机

1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…

灵境矩阵平台x百度---智能体(一)

什么是数据插件 大模型插件:大语言模型插件是随着大语言模型发展而诞生的全新插件。大语言模型插件的核心是Web API独立于大语言模型,插件开发过程不受大语言模型的约束,同时没有开发语言的限制,更加通用,只要WebAPI遵循RESTfuI相…

html5cssjs代码 034 自定义字体

html5&css&js代码 034 自定义字体 一、代码二、解释 这是一个带有自定义字体的网页,设置了页面背景颜色、文字颜色以及全局样式。它定义了三种自定义字体并通过font-face规则引入外部字体文件,并通过CSS类(.f1, .f2, .f3)…

第十二届蓝桥杯省赛CC++ 研究生组-路径

记录到每个结点的最短距离&#xff0c;以此为基础计算后续结点最优值 #include<iostream> #include<algorithm> using namespace std; typedef long long ll;ll gcd(int a, int b){if(!b) return a;return gcd(b, a % b); }int main(){ll dp[2022] {0};//dp[i]记…

如何打破SAST代码审计工具的局限性?

关键词&#xff1a;白盒测试&#xff1b;代码分析工具&#xff1b;代码扫描工具&#xff1b;静态代码检测工具&#xff1b; 在代码的世界里&#xff0c;安全问题如同潜伏的暗礁&#xff0c;随时可能让航行中的软件项目触礁沉没。SAST代码审计工具如同雷达一样&#xff0c;以其独…

inputStream.avaliable()方法网络操作读取不全BUG

一、问题描述 公司有个需求&#xff0c;就是调用方&#xff08;我&#xff09;需要把pdf文件转为Base64字符串作为参数传递为被调用方&#xff0c;以下是大致转换过程&#xff1a; URL url new URL("http://xxxx.pdf");HttpURLConnection uc (HttpURLConnection) …

docker入门(十)—— docker-compose详解

Docker Compose dockercompose官网&#xff1a;https://docs.docker.com/compose/ 什么是 docker compose Docker Compose 是用于定义和运行多容器应用程序的工具。 这是解锁简化和高效的开发和部署体验的关键。 Compose 简化了对整个应用程序堆栈的控制&#xff0c;让您能…

Chrome 114 带着侧边栏扩展来了

效果展示 manifest.json {"manifest_version": 3,"name": "ChatGPT学习","version": "0.0.2","description": "ChatGPT,GPT-4,Claude3,Midjourney,Stable Diffusion,AI,人工智能,AI","icons"…

cocos 3.8开发 微信小游戏分包技巧压缩主包

Creator 版本&#xff1a; 3.8.2 目标平台&#xff1a;小游戏开发 压缩后 我不知道别人压缩几百kb是怎么做到的。不过哪个要钱。 我这个技巧不用花钱。 论坛有教程但是没有教详细怎么做。 开整&#xff01; 做一个空白的场景。然后写一个load脚本。load主场景。 从代码可…

数据结构知识总结

二叉树 满二叉树 特性 所有叶子结点都集中在二叉树的最下面一层上&#xff0c;而且结点总数为&#xff1a;2^n-1 (n为层数 / 高度&#xff09; 完全二叉树 特性 若设二叉树的高度为h&#xff0c;除第h层外&#xff0c;其他各层的节点数都达到最大个数&#xff0c;第h层有…

Http中Host,Referer,Origin和Access-Control-Allow-Origin

Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-Origin 文章目录 Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-OriginHost定义特性作用 Referer定义特性作用 Origin定义特性作用 Access-Control-Allow-Origin定义特性作用…

基于微信小程序的CMS内容管理系统开发笔记

背景调研 内容管理CMS小程序的帮助运营者创建和管理小程序内容&#xff0c;提供一个直观的操作界面&#xff0c;能够轻松地添加、编辑和发布内容&#xff0c;而无需了解复杂的编程知识。可以进行栏目管理&#xff0c;文章管理&#xff0c;编辑文章内容&#xff0c;包括文字、图…

React腳手架已經創建好了,想使用Vite作為開發依賴

使用Vite作為開發依賴 安裝VITE配置VITE配置文件簡單的VITE配置項更改package.json中的scripts在根目錄中添加index.html現在可以瀏覽你的頁面了 安裝VITE 首先&#xff0c;在現有的React項目中安裝VITE npm install vite --save-dev || yarn add vite --dev配置VITE配置文件 …

【UE5】动画蒙太奇简述

项目资源文末百度网盘自取 动画蒙太奇基本功能 动画蒙太奇&#xff08;Animation Montage&#xff09; 可以将多个 动画序列&#xff08;Animation Sequences&#xff09; 合并为单个资产并通过蓝图播放&#xff0c;还可以将一个蒙太奇动画切分为多个 蒙太奇分段&#xff08;M…

六大排序精解

排序概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#x…

安装nginx和PHP

首先规划四台虚拟机&#xff0c;之前的主从数据库已经两台&#xff0c;其余两台&#xff0c;一个设置nginx&#xff0c;一个是php 首先NGINX的概念&#xff0c;请参考https://blog.csdn.net/hyfsbxg/article/details/122322125。正向代理&#xff0c;反向代理&#xff0c;可以…

【每日八股】Java基础经典面试题4

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;如果你也在复习的话不妨…

【独立版】海之心陪诊系统-陪诊陪护小程序-V3.0

商品介绍 陪诊这个词在近两年才出现在人们的视野中&#xff0c;随着人口老龄化&#xff0c;社会信息化。我们的父母很多不会操作信息化的系统&#xff0c;以至于在手机上挂号和线下取号取报告比较困难&#xff0c;年轻人需要工作时间有限&#xff0c;陪诊需求因此而来。 陪诊…