VisualFoxPro9.0中扩展报表系统功能

VisualFoxPro9.0中扩展报表系统功能,第1张

VisualFoxPro9.0中扩展报表系统功能,第2张

微软在2004年底发布了最新版本的Visual Foxpro 9.0。这个消息让我们想起了曾经那么美好的Foxpro。现在已经被Java,Delphi,VB等很多明星遮蔽了。有人认为,如果不是诞生在巨头微软,它早就消失了。但是了解Visual Foxpro的人都知道,Visual Foxpro的优秀性能是不可替代的。
新版Visual Foxpro 9.0在Foxpro社区引起了轰动。新版本将包含更快的本地数据引擎,支持更多的数据类型,在SQL语句的执行方面具有更大的一致性,完全重新设计的可扩展报告编写器,以及一系列效率和功能增强特性。

Visual FoxPro 9.0的报表系统得到了令人难以置信的改进。在本文中,我只讨论几个新功能之一——扩展运行时报告引擎的功能。

Visual FoxPro团队在处理运行时改进时一直牢记几个目标,包括:使用GDI+进行报表输出,处理除打印和预览以外的各种报表输出
。这将带来很多显著的改进,例如精确的显示、图像和字体的平滑调整,以及一些额外的功能(例如文本旋转)
提供了一个更加灵活和可扩展的报告系统
您可以同时访问新旧报告引擎,因此您可以根据需要选择在哪个引擎下运行报告。但是一旦你看到新报表引擎的优势,你就再也不想用旧报表了。

报告系统的体系结构

以前版本的Visual FoxPro 9中的报告系统类似于一个单片电路:它处理所有的细节,只有少数例外(用户定义的函数、带有报告条的OnEntry和OnExit表达式等。),并且您不能在报告运行时与之进行交互。

新的报表引擎将报表功能分为两部分:当前的报表引擎只处理数据和对象定位;一个新的对象(报告监听器)处理显示和输出事务。因为报告侦听器是一个类,所以我们现在可以按照我们以前梦想的方式与报告过程进行交互。

的新报告语法

Visual FoxPro 9支持使用旧的报表引擎运行报表;您可以像以前一样使用REPORT命令(尽管您可以使用new命令来重载报告的行为)。为了获得新的报告行为,您必须使用REPORT命令的OBJECT子句。OBJECT子句支持两种用法:指定报表监听器和指定报表样式。微软将其归类为对象辅助报表。

报告侦听器是一个提供新报告行为的对象。ReportListener基于Visual FoxPro 9的新基类reportlistener。为了让Visual FoxPro 9使用报告中指定的侦听器,有必要实例化侦听器类,并在报告命令的OBJECT子句中指明对象的名称。下面是一个例子:

loListener = createobject(' MyReport listener ')
报表形式my report对象lo listener

如果不想手动实例化侦听器,可以通过指定报告类型让Visual FoxPro自动完成实例化过程,例如:

报表表单MyReport对象类型1

定义的类型有:0-从打印机输出
1-预览
2-某一时刻的页面信息模式,但不会输出到打印机
3-所有页面模式,但不会调用预览窗口
4-XML输出

当报告以这种方式运行时,在new _REPORTOUTPUT系统变量(位于REPORTOUTPUT中)中指定的应用程序。APP默认在Visual FoxPro主目录下)来决定用哪个监听器类来实例化类型。这是通过查看应用程序内置的侦听器注册表中的侦听器类型来实现的(尽管您可以指定它使用外部表)。如果找到所需的类,它会实例化该类,并将侦听器对象的引用传递给报告引擎。因此,在REPORT命令中使用某种类型的对象类型的效果与以下代码的效果相同:

loListener = . null .
do(_ report output)用SomeType,lo listener
报告表单MyReport对象lo listener

报告监听器

在报表运行过程中,随着报表事件的发生,Visual FoxPro将这些事件公开给基于ReportListener基类的对象。Visual FoxPro帮助文件记录了ReportListener的属性、事件和方法(PEM),但在本文中,我将只讨论最有用的那些。

表1列出了ReportListener类的一些最常用的属性。

表1:1:report listener类的一些有用属性

属性
描述了由监听器生成的报表数据

current datasession
frxdatasession
frx游标的数据会话id

GDI+drawing对象的gdiplusgraphics句柄

ListenerType
报表输出类型的数据会话id。默认值为-1(无输出)。您应该将其更改为符合您需求的值。其值与REPORT命令的OBJECT TYPE子句中指定的值相同。

输出页数
显示的页数

QuietMode
如果其值为。t .(默认值是。f .),它支持进度信息

表2显示了常用ReportListener的事件和方法。

表2:2:report listener的一些有用的事件和方法

事件/方法
说明
load report
Call
unload report
Call
before report
在加载FRX之前但在运行报告之前调用
After report
在报告运行之后,调用
BeforeBand
和在处理报告波段之后调用
AfterBand
,并在显示字段之前调用
EvaluateContents
。当rendering
显示一个对象时,它调用
OutputPage
将指定的显示页面输出到特定的设备

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VisualFoxPro9.0中扩展报表系统功能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情