主页 > 解决方案 > 康虎云套打方案 > 康虎使用手册 > 脚本 >
联系方式Contact
地 址:广东省广州市白云区太和镇龙归龙兴西路14号云天大厦 公司名称:广州众谛信息科技有限公司 售前咨询:177-7459-3039 售后技术:020-22043323 咨询Q Q:124412206 邮 箱:info@zodioo.com

事件

阅读:

前面我们测试了报表生成开始时运行的系统主过程。它一般用于初始化一些配置、初始化变量等。但仅仅用主过程 是难以灵活控制整个报表过程的。为尽可能有效地控制报表过程,每个对象都有自己的事件函数。例如在数据Band中可以过滤数据,或根据条件显示或隐藏部分对象。

 

下面我们用一个包含一个页面和一个带两个“文本”对象的主数据Band的简单报表演示一下报表创建和事件触发的过程:

 

clip0191

 

前面已经讲过,脚本主过程在报表开始运行时被调用,然后开始报表构造。首先是报表对象的“OnStartReport”事件被触发,然后,在输出页面被创建之前,“OnBeforePrint”事件被触发。报表中每一设计页在输出前都会触发“OnBeforePrint”事件一次(设计页面不要与报表输出页面混淆!)。在我们的,由于只有一个设计页,所以该事件只触发一次。

 

在设计页的“OnBeforePrint”之后,按以下顺序触发数据Band的其他事件:

1. Band的“OnBeforePrint”事件被触发

2. Band中每个对象的“OnBeforePrint”事件被触发

3. 每个对象填充数据(在本例中是“Company”和“Addr1”字段)

4. Band中每个对象的“OnAfterData”事件被触发

5. 计算band中每个对象的位置(在对象周边有可伸缩对象时),计算Band的高度并进行拉伸(如果可伸缩)

6. Band的“OnAfterCalcHeight”事件被触发

7. 如果页面空间不够Band渲染对象,则生成一个新页面

8. Band和其上所有对象都显示在输出页面上

9. Band上的每个对象的“OnAfterPrint”事件被触发

10. Band自己的“OnAfterPrint”事件被触发

 

Band关联的数据表的数据全部打印完,然后触发报表页“OnAfterPrint”事件,最后是报表对象的“OnStopReport”事件。

 

如此,通过不同组件的事件我们可以控制报表生成的每一步。使用事件的关键是理解Band输出的过程,我们将在接下来的九个节中进行讨论。在Band的“OnBeforePrint”事件中可以做很多事情,任何对对象所做的更改都能马上显示。然后,如果band是可伸缩的,则不在此事件中输出页面,因为还需要进行上面第5步所说的计算Band高度。但这些修改可以在上述第6步的“OnAfterCalcHeight”或第9步的“OnAfterPrint”中来做。注意,在最新一个事件中,由于Band已经被输出了,所以对对象的任何更改都不再起效。

 

为了能很好地通过事件来控制报表的行为,必须清楚了解Band及其中对象于“何时何地”输出,并了解每个事件顺序。

 

康虎云报表官网:http://www.khcloud.net

评论

发表评论

 
QQ在线咨询
售前咨询热线
177-7459-3039
售后服务热线
020-22043323
返回顶部