注册 登录
编程论坛 VFP论坛

VFP9预览后打印不能打印到文件

xlsoftware 发布于 2023-10-26 16:09, 720 次点击
LOCAL m.loFrm as Form
m.loFrm = CREATEOBJECT('Form')
m.loFrm.Show()
REPORT FORM "report1.frx" PREVIEW WINDOW (m.loFrm.Name) TO FILE c:\_6QS0W6F0B.bin

这段代码,在 VFP8 中,可以在预览界面点打印,会生成文件 c:\_6QS0W6F0B.bin
但是在 VFP9中,可以显示预览,但是点打印时,直接打印到打印机中,并未生成 BIN文件

请问需要如何才能让VFP9也支持预览时打印也可以生成文件?
15 回复
#2
iswith2023-10-26 20:36
SET REPORTBEHAVIOR 80
#3
xlsoftware2023-10-27 17:48
回复 2楼 iswith
是的,设置了 80 之后就不行,但希望能以 80 方式处理报表
#4
pvm20002023-10-29 16:35
vfp9的预览和打印有许多问题,一言难尽

#5
xlsoftware2023-10-30 11:15
回复 4楼 pvm2000
是的,VFP8中,报表设计时,勾选“报表环境”,在发出“report from”命令前,使用“set print to ”可以切换打印机,但是在 VFP9 里,只要勾选“报表环境”,就换不了打印机,只能人为将报表文件中的 tag/tag2 置空;
但置空又出现另一个问题,有些报表(如标签),是里要使用特定标签打印机进行打印的,去掉了又导致标签也要选择打印机,不然就用默认打印机去打印了
#6
heping_fly2023-10-31 01:31
分成2次,连续进行如何?
#7
xlsoftware2023-11-02 18:59
回复 6楼 heping_fly
在这个环境(SET REPORTBEHAVIOR 80)下,不能自定义预览时自带的 “打印工具栏”,用户在预览时,直接就点了打印按钮。

[此贴子已经被作者于2023-11-2 19:05编辑过]

#8
吹水佬2023-11-03 21:11
试试:TO FILE d:\_6QS0W6F0B.bin 或其他自建文件夹
#9
xlsoftware2023-11-04 09:56
回复 8楼 吹水佬
也不行,跟了api调用,在打印时调API StartDoc(hdc,DOCINFOA *lpdi),
在第二个参数中,VFP9没有传递 lpdi.lpszOutput 参数,这个参数用于指定打印到文件时的目标文件名
#10
laowan0012023-11-04 10:23
以下是引用xlsoftware在2023-10-30 11:15:11的发言:

是的,VFP8中,报表设计时,勾选“报表环境”,在发出“report from”命令前,使用“set print to ”可以切换打印机,但是在 VFP9 里,只要勾选“报表环境”,就换不了打印机,只能人为将报表文件中的 tag/tag2 置空;
但置空又出现另一个问题,有些报表(如标签),是里要使用特定标签打印机进行打印的,去掉了又导致标签也要选择打印机,不然就用默认打印机去打印了

介绍一下我的用法(VFP9),供参考:
在这种使用不同打印机的情况下,让用户指定标签打印名称和A4打印机名称,分别保存下来。
在打印标签的时候,看是否有保存的标签打印机名称,如果有就set print to name 标签打印机名称,直接打印到标签打印机了,如果没有则选择打印机


#11
xlsoftware2023-11-04 11:26
以下是引用laowan001在2023-11-4 10:23:51的发言:


介绍一下我的用法(VFP9),供参考:
在这种使用不同打印机的情况下,让用户指定标签打印名称和A4打印机名称,分别保存下来。
在打印标签的时候,看是否有保存的标签打印机名称,如果有就set print to name 标签打印机名称,直接打印到标签打印机了,如果没有则选择打印机

是的,这也是一种方案,只是打印机名称要固定,对于有多个不同标签机的有点难度;如果能直接使用设计时的名称,学习成本相对要低些
#12
laowan0012023-11-05 10:11
以下是引用xlsoftware在2023-11-4 11:26:37的发言:


是的,这也是一种方案,只是打印机名称要固定,对于有多个不同标签机的有点难度;如果能直接使用设计时的名称,学习成本相对要低些


打印机是每台电脑自己保存自己的(保存在本地),不是大家都用一样的设备,也不需要固定,随时可以修改所选打印机,就算有多个不同标签打印机,但通常一台电脑会相对固定使用某台标签打印机,这样正好适应了不同电脑的设备环境

“直接使用设计时的名称”:如果用户更新了打印设备,难道还要修改程序不成?
#13
iswith2023-11-05 15:52
说半天都不知道在说什么,很神奇。。。。。是不是说打印换个打印机,纸张页面不对。。。?
#14
xlsoftware2023-11-05 23:22
回复 13楼 iswith
在 VFP8 中,执行命令 REPORT FORM "report1.frx" PREVIEW WINDOW (m.loFrm.Name) TO FILE c:\_6QS0W6F0B.bin 可以在预览后,再点打印,可以将报表打印到文件中;
但是在 VFP9 中,它是直接向当前打印机中输出内容(直接用打印机打印了);
 我希望VFP9里,设置 SET REPORTBEHAVIOR 80 后,也能像 VFP8 一样,预览后再打印,也是将内容输出到一个文件中,而不是直接输出到打印机中打印出来
#15
iswith2023-11-06 07:28
看样子,大数人真不看VFP9的新特性 ReportListener ,自己多看看吧,VFP自带实例有这些的。
#16
xlsoftware2023-11-06 18:59
以下是引用iswith在2023-11-6 07:28:09的发言:

看样子,大数人真不看VFP9的新特性 ReportListener ,自己多看看吧,VFP自带实例有这些的。


SET REPORTBEHAVIOR 80
80模式下有新特性吗

[此贴子已经被作者于2023-11-6 19:00编辑过]

1