FastReport 变量列表使用
使用报表变量时,引用“frxVariables”单元。 变量定义在“TfrxVariable” 类:
TfrxVariable = class(TCollectionItem)
published
property Name: String; //Name of a variable
property Value: Variant; //Value of a variable
end;
变量列表在“TfrxVariables” 类,有所有相关的方法:
TfrxVariables = class(TCollection)
public
function Add: TfrxVariable; //Adds a variable to the end of the list
function Insert(Index: Integer): TfrxVariable; //Adds a variable to the given position of the list
function IndexOf(const Name: String): Integer; //Returns the index of a variable with the given name
procedure AddVariable(const ACategory, AName: String; const AValue: Variant); //Adds a variable to the specified category
procedure DeleteCategory(const Name: String); //Deletes a category and all its variables
procedure DeleteVariable(const Name: String); //Deletes a variable
procedure GetCategoriesList(List: TStrings; ClearList: Boolean = True); //Returns the list of categories
procedure GetVariablesList(const Category: String; List: TStrings); //Returns the list of variables in the specified category
property Items[Index: Integer]: TfrxVariable readonly; //The list of variables
property Variables[Index: String]: Variant; default; //Values of variables
end;
如果变量的列表很长,可以按类别分组。例如,当有下列变量列表:
Customer name
Account number
in total
total vat
可以使用以下方式:
Properties
Customer name
Account number
Totals
In total
total vat
有以下局限:
- 必须创建至少一个类别
- 类别在data tree下层, 变量在第二层
- 类别不能嵌套
- 变量的名称必须是唯一的,在整体列表中,而不是在一个类别中
一:创建一个变量列表
A link to the report variables is stored in the “TfrxReport.Variables” property. To create a list manually, the following steps must be performed:
- clear the list
- create a category
- create variables
- repeat the 2 and 3 steps to create another category
二:清空变量列表
It is performed with the help of the “TfrxVariables.Clear” method:
frxReport1.Variables.Clear;
三:添加分类
必需至少创建一个类别, 类别和变量保存在一个list。 类别不同于变量是以一个空格开始,这是名字的第一个符号.所有的变量都是属于这一类别。
有两个方法添加类别:
frxReport1.Variables[' ' + 'My Category 1'] := Null;
or
var
Category: TfrxVariable;
Category := frxReport1.Variables.Add;
Category.Name := ' ' + 'My category 1';
四:添加变量
添加变量必须在类别添加以后, 在列表中变量名必须唯一, 并且必须在类别中。
这里有几个方法添加变量到列表:
frxReport1.Variables['My Variable 1'] := 10; // 添加(如果不存在) 或修改一个变量的值。
var
Variable: TfrxVariable;
Variable := frxReport1.Variables.Add;
Variable.Name := 'My Variable 1';
Variable.Value := 10;
以上2个方法都把变量添加到列表最后, 因此, 添加到最后的类别. 如果想添加到列表的指定位置,使用“Insert” 方法:
var
Variable: TfrxVariable;
Variable := frxReport1.Variables.Insert(1);
Variable.Name := 'My Variable 1';
Variable.Value := 10;
添加到指定的类别,使用“AddVariable” 方法:
frxReport1.Variables.AddVariable('My Category 1', 'My Variable 2', 10);
五:删除变量
frxReport1.Variables.DeleteVariable('My Variable 2');
六:删除分类
frxReport1.Variables.DeleteCategory('My Category 1');
七:修改变量值
八:脚本变量
你可以在TfrxReport.Script中定义脚本变量,用来代替report变量, 看看 report变量和 script变量的不同:
|
Report variables |
Script variables |
|
|
位置 |
In the report variables list, TfrxReport.Variables. |
In the report script, TfrxReport.Script.Variables. |
|
Variable name |
May contain any symbols. |
May contain any symbols. But if you want to use that variable inside the report script, its name should conform to Pascal identificator specifications. |
|
Variable value |
May be of any type. Variables of string type are calculated each time you access them, and are, in itself, an expressions. |
May be of any type. No calculation is performed, behavior is like standard language variable. |
|
可访问性 |
Programmer can see the list of report variables in the "Data tree" window. |
The variable is not visible, programmer should know about it. |
Working with script variables is easy. Just assign value to the variable this way:
frxReport1.Script.Variables['My Variable'] := 'test';
In this case FastReport will create a variable if it is not exists, or assign a value to it. There is no need to use extra quotes when assigning a string to that variable.
九:TfrxReport.OnGetValue中传递变量值
最后一种传递值到报表中的方法是使用 TfrxReport.OnGetValue 事件,这个方式可以得到动态值,以前的方法通过静态值。
举例说明使用方法. 报表中放一个文本对象,输入以下内容:
[My Variable]
创建 TfrxReport.OnGetValue 事件:
procedure TForm1.frxReport1GetValue(const VarName: String; var Value: Variant);
begin
if CompareText(VarName, 'My Variable') = 0 then
Value := 'test'
end;
运行报表,我们看到变量是显示正确的。 事件TfrxReport.OnGetValue 在遇到所有未知变量时调用 。
http://www.cnblogs.com/moon25/p/5534095.html
FastReport 变量列表使用的更多相关文章
- [翻译] FastReport 变量列表使用
使用报表变量时,引用"frxVariables"单元. 变量定义在"TfrxVariable" 类: TfrxVariable = class(TCollect ...
- 存储过程里面使用in变量列表异常的处理
在写一个存储过程的时候,由于需要用到类似:select id,name from tablename where id in(id1,id2,id3...)的查询语句,同时括号里面的变量是拼接得到的, ...
- Phpcms所有系统变量列表 Phpcms V9 文件目录结构
Phpcms所有系统变量列表 用户变量: view plaincopy to clipboardprint? $_userid 用户id $_username 用户名 $_areaid ...
- Shell特殊变量列表
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...
- shell-特殊变量列表
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数.有引号则引号内,作为一个参数传入. $@ 传递 ...
- Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
一.可用环境变量列表(以下来自google翻译): BRANCH_NAME 对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从而master不是从特征分支部署到生产. CHANGE_ ...
- UNIX高级环境编程(8)进程环境(Process Environment)- 进程的启动和退出、内存布局、环境变量列表
在学习进程控制相关知识之前,我们需要了解一个单进程的运行环境. 本章我们将了解一下的内容: 程序运行时,main函数是如何被调用的: 命令行参数是如何被传入到程序中的: 一个典型的内存布局是怎样的: ...
- Python 学习笔记5 变量-列表
列表是python常用的一种变量. 是由一些列按照特定顺序排列的元素组成的.你可以创建包含字母表中的所有字母,数字.可以将任何东西都加入到列表中. 通常情况下,列表中都包含多个元素,所以建议变量的名称 ...
- Windows系统变量列表
%ALLUSERSPROFILE% : 列出所有用户Profile文件位置. %APPDATA% : 列出应用程序数据的默认存放位置. %CD% : 列出当前目录. %CLIENTNAME% : ...
随机推荐
- 马尔可夫毯(Markov blanket)
马尔可夫毯(Markov blanket) 马尔科夫毯,是满足如下特性的一个最小特征子集:一个特征在其马尔科夫毯条件下,与特征域中所有其他特征条件独立.设特征T的马尔科夫毯为MB(T),则上述可表示为 ...
- WPF中如何使用BusyIndicator
一.下载dll:http://wpftoolkit.codeplex.com/releases/view/99072 下载之后将WPFToolkit引用到WPF项目下: 二.添加命名空间: xmlns ...
- lambda取两字符串的交集
取两个有规律字符串的交集,字符串的格式如下: “[3095139,9080109]” jar支持: fastjson 程序demo: import com.alibaba.fastjson.JSON; ...
- 5 行 Python 代码调用电脑摄像头
前提: 确保 python 中安装了 opencv-python 模块.如果没有安装,可以参考:https://pypi.org/project/opencv-python/ 进行安装.话不多少,直接 ...
- python基础—字典
阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...
- 用xpo实现dc技术的关键点-XPO是如何处理接口类型与真实类型的对应关系的
https://www.devexpress.com/Support/Center/Question/Details/Q487000/xpodatamodel-and-model-interfaces ...
- X5webview去掉分享功能和缓存功能
x5webview比原生的webview适配更好,加载更快,对音视频的兼容性更好,具备独特的优势 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使 ...
- 关于springcloud的一些问题总结.txt
@Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCo ...
- 防csrf详解
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶 ...
- 关于jQuery Form Plugin使用心得
吐槽一下先 好久没开发了,今天遇到一个客户form提交的问题,想把form提交从同步变成ajax的异步方式,在网页接受返回来的数据,使用的是jquery from插件,于是网上搜了一圈,博客园,csd ...