选择显示字体大小

visual foxpro9.0中扩展报表系统功能

微软在2004年岁末发布最新版visual foxpro 9.0,这则消息让我们回想起曾经风光无限的foxpro,现在它已经被javadelphivb等众多明星遮掩了光芒,有人认为如果不是诞生在豪门微软,它肯定已经消失。但了解visual foxpro的都知道,visual foxpro的卓越性能是无法代替的。新版visual foxpro 9.0在foxpro社区引起了轰动,新版中将包含一个更快的本地数据引擎,支持更多的数据类型,sql语句执行中有更大的一致性,一个完全重新设计的可扩展报表编写器,以及一系列效率和功能增强特性。

  在visual foxpro 9.0的报表系统出现了难以置信的改进。在本文中,我只讨论几个新增功能中的一个——扩展运行时报表引擎(runtime reporting engine)的能力。

  visual foxpro小组在处理运行时改进工作时一直紧记着几个目标,包括:

  你可以同时访问旧的和新的报表引擎,因此你可以根据需要选择在哪种引擎下运行报表。但是一旦你看到新的报表引擎的优点,你就再也不希望使用旧式报表了。

  报表系统的架构

  visual foxpro 9以前版本中的报表系统类似于单片电路:它处理所有细节信息,只有少量的例外(用户定义的函数、报表带条的onentry和onexit表达式等等),在报表运行的时候,你是不能与它交互操作的。

  新的报表引擎把报表的功能分成了两部分:现在的报表引擎只处理数据和对象定位;一种新对象(报表监听器)处理显示和输出的事务。由于报表监听器是类(class),因此我们现在可以使用以前梦寐以求的方式与报表进程交互操作。

  新的报表语法

  visual foxpro 9支持使用旧的报表引擎运行报表;你可以像以前一样使用report命令(尽管你可以使用新命令重载report的行为)。为了得到新式的报表行为,必须使用report命令的object子句。object子句支持两种使用方法:指定报表监听器和指定报表样式。微软把它归纳为对象辅助(object-assisted)报表。

  报表监听器是提供新式报表行为的对象。报表监听器是基于visual foxpro 9的新的基础类reportlistener的。为了让visual foxpro 9使用报表指定的监听器,需要实例化监听器类,并在report命令的object子句中指出该对象的名称。下面是一个例子:

lolistener = createobject('myreportlistener')
report form myreport object lolistener

  如果不希望手动实例化监听器,可以通过指定报表类型让visual foxpro自动为你完成实例化过程,例如:

report form myreport object type 1

  已经定义好的类型有:   当然我们还可以使用其它的用户自定义类型。

  使用这种方式运行报表的时候,将调用新的_reportoutput系统变量(默认情况下它位于visual foxpro主目录的reportoutput.app中)中指定的应用程序来决定指定该类型使用哪种监听器类来实例化。它是通过查看app中内建的监听器注册表(尽管你可以指定它使用一个外部表)中的监听器类型来实现的。如果它找到了需要的类,它就实例化该类并传递该监听器对象的一个引用到报表引擎中。因此,在report命令中使用object type 某种类型的效果与下面的代码的效果是相同的:

lolistener = .null.
do (_reportoutput) with sometype, lolistener
report form myreport object lolistener

  报表监听器

  在报表运行的过程中,伴随着报表事件的发生,visual foxpro把这些事件暴露给基于reportlistener基类的对象。visual foxpro帮助文件记录了reportlistener的属性、事件和方法(pems),但是在本文中我只讨论其中最有用的一些。

  表1列举了reportlistener类的最常使用的一些属性。

  表1:reportlistener类的一些有用属性

属性
描述
currentdatasession
报表数据的数据对话id
frxdatasession
frx游标的数据对话id
gdiplusgraphics
用于显示的gdi+绘图对象句柄
listenertype
监听器生成的报表输出类型。默认值是-1(无输出),你应该把它改成符合需要的值。它的值与report 命令的object type 子句中规定的值是相同的。
outputpagecount
被显示的页面的数量
quietmode
如果它的值为.t. (默认值是 .f.) 就支持进度信息

  表2显示了经常使用的reportlistener的事件和方法。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons