VFP搜索打印机顺序: 报表默认打印机(报表内保存的) -> VFP默认了打印机( Set Printer To 设置) -> Windows 默认打印机
所以要使用网络打印机时,首先设计报表时不要保存报表打印机环境,方法如下:
VFP9.0以下:
Use 报表名.frx
Replace All Tag With '',tag2 With '' For Objtype=1
Use
重新编译程序
VFP9.0
页面设置中清除打印机环境
打开报表后, Page Setup 中将 Page Layout 选项卡中的 Save printer environment 选项去掉
重新编译程序
然后再用 Set Printer To 设置网络打印机吧
如果你要打印的报表是需要人工选择网络打印机,或者说网络打印次数不是很多,可以用如下语句:
lcPrinterName=Getprinter() &&打印前设定打印机( Getprinter VFP 的默认打印机)
If !Empty(lcPrinterName)
Set Printer To Name (lcPrinterName)
Report Form report1.frx Off To Printer
Endif
或
Report Form 报表 Off To Printer Prompt Preview &&打印时选择打印机( Prompt Windows 的默认打印机)
如果你要网络打印的报表是经常的,甚至是无人干预的,如餐饮业的厨房打印等,这就要设定打印机,而且有时还要不停的更改默认网络打印机,这时就要为了性能考虑一下了:
方法一: Set Printer To Name //网络计算机名称或IP/共享打印机名称 &&该子句仅支持运行于 Windows 2000 或更高版本之上的 Visual FoxPro 版本。
如:
Set Printer To Name //192.168.0.8/SharePrinterName1
Report Form 报表.frx Off To Printer
速度一般,每次大约3秒左右, Set Printer To Name 这句快,只不过 Report Form 向网络打印机打印时慢了。此方法适合打印次数比较少情况。
方法二: Set Printer To Name 本地添加的网络打印机名称 或 Run /N rundll32 printui.Dll,PrintUIEntry /Y /N "本地添加的网络打印机名称"
如:
Set Printer To Name NetPrinterName1
Report Form 报表.frx Off To Printer
或
Run /N rundll32 printui.Dll,PrintUIEntry /Y /N "NetPrinterName1"
Report Form 报表.frx Off To Printer
注:
此种方法速度快,比较适合网络打印次数比较频繁的情况。
但需要注意的是,本地添加的网络打印机名称不是手工添加的,
而是用 VFP 的 “ Set Printer To Name //网络计算机名称或IP/共享打印机名称”方式自动添加的,
或用 Windows 的 Net 命令:“net use //网络计算机名称或IP/共享打印机名称”方式自动添加的。
自动添加后的打印机名称为“在 网络计算机名称 上自动 打印机名称”,如:“在 PC01 上自动 POS58”
必要时将网络打印机名称改名,以便于程序编写。
如果这种方式自动添加的网络打印机被删除,再用此方法是无法添加的,只有更改网络计算机名称或IP或共享名后再用此方式添加就可以了,这一点需要注意。
如果机器重装了或打印机更换了也要用此方法自动添加,不能用手动方式添加。