相信大家对VFP9.0的报表功能已经有所了解,虽然其功能有较大的提升,但对于自定义纸张,特别是对WIN2000及XP及以后的操作系统而言,相对麻烦,虽然网上有各种解决方法,但对于一般水平的狐友而言,如读天书,效果不是很理想,本人在实际编程中摸索出一个经验,拿来与大家分享。

我的思路:

在设计报表时,XP以后版本,通过控制面板——打印机和传真——空白处点右键——服务器属性——格式——创建新格式来创建您的自定义纸张,并记住您创建的自定义纸张的名称和大小在此例中分别以SKPZ和2100和896表示(单位0.1毫米),此处可以定义多个自定义纸张。用您创建的自定义纸张设计报表(报表名称记住),报表设计好后将“保存打印机环境”选项取消。

再用VFP创建一个单独的EXE文件(此例中以PRINSET.EXE表示),以备在您的系统中用菜单调用(用如下命令可调用run/n prinset.exe)。您的系统安装在一台新的机器上之后,调用一次这个EXE文件,便可重新设定好自定义纸张,报表也可以放心使用。以后运行系统,便无需再重新设定自定义纸张。

EXE文件表单COMMAND按钮CLICK事件代码:

Set Library To myFll *MYFLL是木瓜的Microsoft Visual FoxPro 扩展库,本论坛有下载,此句调用MYFLL。

PaperDel(\"skpz\")*若机器中存在名称为SKPZ的自定义纸张则删除。PaperAdd(\"skpz\",2100,896)*在机器中重新创建名称为SKPZ,宽高分别为21厘米和8.96厘米的自定义纸张。

NEWPAPERSIZE=ALLTRIM(STR(PaperInfo(\"skpz\",1)))*取重新创建的自定义纸张的ID。
papersize=\'PAPERSIZE=\'+NEWPAPERSIZE*将ID赋值给PAPERSIZE,此处格式。
use
USE SKPZ.frx IN 0 ALIAS mFrx *将您的报表以别名打开。
REPLACE EXPR WITH \'ORIENTATION=0\'*设置纸张纵横向
REPLACE EXPR WITH PAPERSIZE ADDITIVE*设置纸张的ID,即设置纸张的大小。
REPLACE EXPR WITH \'COLOR=1\' ADDITIVE*设置着色。
Set Library To
use

将此表单设计成PRINSET.exe程序即可在新机器上设置自定义纸张。不管新机器上将的是什么操作系统,什么打印机。

运行一次即可。如果有多个自定义纸张,可适当修改即可。