1、仅触发一次的事件

以下是在报表的处理过程中仅触发一次的所有事件这些事件在报表的处理周期中仅在最开始和结束前触发一次。

ReportStart

该事件在DataInitialize事件触发之前发生。使用此事件来初始化运行报表时需要的任何对象或者变量。还可以使用此事件设置子报表控件一个新的子报表实例。一旦该事件处理完成,不要动态的向报表动态地添加项目。

DataInitialize

该事件在ReportStart事件之后触发。使用它像报表的字段集合添加自定义字段。自定义字段可以被添加到一个绑定的报表(一个使用数据控件连接并获取记录的报表)或者一个非绑定态报表(一个不依赖数据控件获取记录的报表)。在绑定态报表中,首先打开数据集并添加数据集字段到自定义自段集合,然后触发DataInitialized事件,可以在其中添加新的自定义字段。DataInitialize事件也可以用来调整数据源或者建立数据库连接。

ReportEnd

该事件在报表处理完成时触发。使用该事件关闭或者释放您在非绑定模式使用的对象,或者向最终用户显示信息或者消息。

2、多次触发的事件

以下ActiveReports事件在报表的处理过程中多次触发。

FetchData

该事件在每次一个新的纪录处理完成时触发。FetchData具有一个EOF参数,该参数指示是否触发FetchData事件。该参数和RecordSet的EOF属性不同,默认值为True。当使用一个绑定态报表(使用数据控件的报表)时,EOF被报表自动设置,但是,当使用非绑定态报表时,该参数需要手动设置。

使用FetchData事件在非绑定报表中设置通过DataInitialize事件添加的自定义字段的值。或者在绑定报表中执行特殊功能,比如将两个字段结合或者执行计算。FetchData事件处理方法中不应当使用报表中的任何控件。

如果您希望在明细区域的一个控件上使用一个来自于数据集的值,请在FetchData事件中设置一个变量,然后在区域的Format事件中将值传递给控件。请注意,只有Detail_Format 事件支持这种用法。

此外,在使用数组或者集合时还可以使用FetchData事件递增计数器。

PageStart

该事件在一页呈现之前触发。使用该事件来初始化运行一个非绑定报表时,每个页面需要的任何变量。

PageEnd

该事件在一页呈现之后触发。使用该事件来更新运行一个非绑定报表时,每个页面需要的任何变量。

当绑定和非绑定数据值设置时

1. 绑定到报表的数据集在DataInitialize事件触发后填充字段集合。(在一个非绑定报表中,此时字段集合尚未设置。)

2. 触发FetchData事件,让用户有机会修改字段集合。

3. 所有绑定的字段的值传输完成。

4. 引发Format事件。

3、区域事件

在一份报表中,无论各种区域的内容如何,每个区域都有三个事件:

Format, BeforePrint 以及AfterPrint。

因为可能存在很多可能的报表设计,事件触发的顺序是动态的,以适应不同报表的需求。唯一可以保证的顺序是区域的Format事件会在BeforePrint事件之前触发。报表不应当设计的过度的依赖事件触发的顺序。

重要: 切勿在以上区域事件中引用报表的Fields集合。仅在DataInitialize 和 FetchData 事件中对Fields集合进行访问。

Format 事件

ActiveReports 会在数据绑定到区域包含的控件之后触发这个事件。但是会确保在区域呈现到页面上之前。

Format事件是唯一一个您可以在其中改变区域高度的事件。使用该区域对象以改变其中任何控件的属性,或者区域对象本身。

同样可以使用这个Format 事件来传递信息,比如说一个SQL字符串到子报表。

如果区域或者区域内部任何控件的 CanGrow 或者 CanShrink 属性设置为True ,所有的增长和收缩的操作在Format事件中完成。正因为如此,您无法在该事件中获取一个控件或者区间的高度的准确信息。

正是由于一个区域的高度信息在Format事件结束以前是不确定的。例如,明细区域的Format事件触发,但是计算结果表明,当前的明细区域过大,导致此页面容纳不下。这时就会导致当前页面的PageFooter事件和PageEnd事件触发。同时下一个页面的PageStart,其他的Header事件以及有可能存在的FetchData事件在该页的明细区域尚未呈现之前,提前触发。

BeforePrint 事件

ActiveReports在一个区域呈现到页面之前触发这个事件。

区域和其中的控件都已经完成了增长和收缩。因此,您可以在这个事件中获取区域和其中控件的准确高度。您可以在BeforePrint事件中改变控件的值或者尺寸,但是您不能改变区域自身的高度。

同样您可以在这个事件中做一些页面相关的格式化工作,因为在这个事件触发时,报表可以知道该区域将会呈现在哪个页面上。一旦事件处理过程完毕,区域将无法改变,因为那时区域已经在这个事件发生之后立即呈现到Canvas上。

AfterPrint 事件

ActiveReports在一个区域呈现到页面后触发这个事件。

虽然AfterPrint在ActiveReport之前的版本1的ServicePack3中间是一个重要的事件。在新版本的ActiveReports中,它已经几乎不用。然而,这个事件在某些情况下依然有用,比如您希望在页面呈现之后再对页面进行绘制。

ActiveReports 区域报表中的事件介绍的更多相关文章

  1. 在ActiveReports页面报表中显示Google地图

    有些报表需求中需要我们显示国家.城市等地址信息,在报表中添加地图信息会让报表给最终用户代码更多有效信息. 在报表中可以将地图作为图片添加进来,当一个图片显示在报表中时,该图片必须存放到本地计算机或者服 ...

  2. C#中的事件介绍

    什么是事件?事件有哪些?怎么用事件? 一.什么是事件? 事件(Event) 基本上说是一个用户操作,如按键.点击.鼠标移动.输入值改变等等,或者是一些出现,如系统生成的通知.应用程序需要在事件发生时响 ...

  3. ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

    本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 ...

  4. 如何在CRM系统中集成ActiveReports最终报表设计器

    有时候,将ActiveReports设计器集成到业务系统中,为用户提供一些自定义的数据表,用户不需要了解如何底层的逻辑关系和后台代码,只需要选择几张关联的数据表,我们会根据用户的选择生成可供用户直接使 ...

  5. ActiveReports最终报表设计器本地化方法介绍

    ActiveReports UI界面中的所有字符信息.错误提示信息.以及一些logo.图像资源,都能够通过运行batch文件来本地化.本文主要介绍资源本地化的具体步骤: 1. 资源目录 所有可本地化的 ...

  6. ActiveReports 报表中 RDF 文件解析

    AcitveReport 提供两种报表模板,XML(RPX)模板和Code-Based 模板.两者都可以用于设计报表. 但是 RDF 格式文件我们大多不是很了解.许多客户在提到 RDF 格式时显得无所 ...

  7. 葡萄城公布新版ActiveReports 9报表控件和报表server

    2014年11月10日---葡萄城宣布正式公布ActiveReports9,包含了三种报表模型:RDL报表.页面报表.区域报表.对于ActiveReports中的这个最新版本号中,我们专注于提高产品的 ...

  8. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  9. jQuery学习笔记(三)jQuery中的事件

    目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...

随机推荐

  1. 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)

    写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`; DELIMIT ...

  2. 集成学习算法总结----Boosting和Bagging

    1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...

  3. (转)python3-staticmethod与classmethod

    原文:https://blog.csdn.net/youngbit007/article/details/68957848 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  4. 输入两棵二叉树A,B,判断B是不是A的子结构(c++实现)

    #include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...

  5. Python+selenium+webdriver 安装与环境配置

    1.python安装:访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下载后设置path环境变量,然后Windows命令行就可以调用: 2.Sele ...

  6. vuex详细介绍和使用方法

    1.什么是vuex? 官方的解释: Vuex是一个专为Vue.js应用程序开发的状态管理模式 当项目比较庞大的时候,每个组件的状态比较多,为了方便管理,需要把组件中的状态抽取出来,放入Vuex中进行统 ...

  7. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十):接口服务整理

    通用操作 通用操作是指一般的增删改查操作,逻辑大体都是一致的,所以统一抽象到CURD接口,需要用到CURD的表直接实现接口就可以了. 通用操作主要有以下几个: 保存操作 /** * 保存操作 * @p ...

  8. JDK7 异常的多重捕获

    Java 7之前的版本: 1 2 3 4 5 6 7 8 9 10 catch (IOException ex) {      logger.error(ex);      throw new MyE ...

  9. C++版Hello World

    代码 #include <iostream> using namespace std; int main() { cout << ; } 开头那两句代码 暂时先记住吧 #inc ...

  10. JAR 介绍-百度百科

    JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件). J ...