Visual FoxPro 9.0 SP2对报表的增强

Visual FoxPro 9.0 SP2引入了对报表的增强,包括ReportListener的新特性,如CallAdjustObjectSize和CallEvaluateContents属性,以及PrintCachedPages方法。此外,Properties对话框的Document Properties和Advanced Properties选项卡提供了更多自定义功能,如控件旋转和HTML输出。开发者现在可以更轻松地扩展报表设计器和输出引擎,提高报表设计和打印的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

订购:http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=10054628
http://www.china-pub.com/computers/common/info.asp?id=34809

在本书即将完成之际,微软公司发布了Visual FoxPro 9.0SP2版本。在SP2中又引入了对报表的许多增强,这些增强中最引人注目的是现在可以通过xBase代码扩展报表设计器和报表输出引擎。

报表设计器现在允许自定义设计器的Properties对话框,在SP2之前,开发者不能扩展现有Properties对话框,但是可以通过事件处理器注册表(Event Handler Registry)来替换它们。不过创建一个自定义Properties对话框并不是一件容易的事情,SP2的增强受欢迎之处是为所有用户在报表设计器中提供了一个接口,作为对所创建自定义报表绘制对象的补充。

SP2也使得报表输出处理更加容易。包含在SP2中的REPORTOUTPUT.APP,提供了一种使用自定义类挂钩报表输出的方法。这个新增类叫做Handlers,它由FXGFX两部分构成。FX Handlers提供了报表运行的扩展功能,但是它并不处理任何报表绘制功能。GFX Handlers执行实际的报表绘制功能,并提供扩展当前绘制或替换所有绘制的功能。

12.17.1 ReportListener的新增功能

1CallAdjustObjectSize属性

12.10.5 节使用EvaluateContents事件实现了对域控件对象绘制的调整,要实现对形状或图片类型的布局元素的调整,则应当在控件的AdjustObjectSize事件中进行。Visual FoxPro为形状或图片的每个布局元素在绘制之前调用一次AdjustObjectSize,但是当具备下列某个条件时除外:

l     如果在运行时刻派生的ReportListenerAdjustObjectSize事件中没有代码;

l     如果元素在带区中没有标记为可扩展;

SP2中新增了CallAdjustObjectSize属性,用于指定是否要求ReportListener为所有相应的形状或图片类型控件调用AdjustObjectSize事件。该属性的可用值在如表12-50所示。

12-50                                                         CallAdjustObjectSize属性的可用值

说明

0(默认值)

如果在AdjustObjectSize事件具有代码的话,则对所有布局对象运行此代码

1

不发生AdjustObjectSize事件,即使其中具有代码

2

AdjustObjectSize事件总是发生,不管事件中是否具有代码。该值主要的目的是用于调用BINDEVENT( ),而不是执行方法中的代码

如果报表输出不需要动态对象大小,可以关闭该功能,以实现更好的性能。假设在表单上有一个复选框被选定,下列代码示例使用CallAdjustObjectSize关闭AdjustObjectSize事件,进行最佳化报表输出。

oReport = CREATEOBJECT("myReportlistener")

IF THISFORM.chkNoAdjustSize.Value = .T.

   oReport.CallAdjustObjectSize = 1

ENDIF

REPORT FORM (myreportfile) OBJECT oReport PREVIEW

2CallEvaluateContents属性

CallAdjustObjectSize属性类似,CallEvaluateContents属性用于指定是否要求ReportListener对报表上的所有的域控件调用EvaluateContents事件。通过 12.10.5 节的介绍可以知道,在EvaluateContents事件中可以改变域控件的文本、颜色、字体和Alpha值。该属性的可用值如表12-51所示。

12-51                                                         CallEvaluateContents属性的可用值

说明

0(默认值)

如果在EvaluateContents事件具有代码的话,则对所有布局对象运行此代码

1

不发生EvaluateContents事件,即使其中具有代码

2

EvaluateContents事件总是发生,不管事件中是否具有代码。该值主要的目的是用于调用BINDEVENT( ),而不是执行方法中的代码

现有一个报表,可以在运行时刻通过ReportListenerEvaluateContents事件修改域控件的画笔颜色,如果使用了一个非彩色打印机,则可能希望关闭EvaluateContents事件。下面的代码根据复选框的值来决定是否关闭EvaluateContents事件的处理。

oReport = CREATEOBJECT("myReportlistener")

IF THISFORM.chkColorPrinter.Value = .F.

   oReport.CallEvaluateContents = 1

ENDIF

REPORT FORM (myreportfile) OBJECT oReport PREVIEW

3PrintCachedPages方法

SP2之前,在将报表输出到预览窗口后,如果希望打印缓冲区中的报表,只能在关闭预览窗口的情况下执行ReportListenerOnPreviewClose(.T.)方法(参考 12.13.2 节的示例代码)。在SP2中提供了PrintCachedPages方法,如果在预览窗口打开的情况下调用该方法,执行结果OnPreviewClose(.T.)相同。

由于ReportPreview应用程序中已经包含了

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值