如何指定自定义纸张预览

sun8330 2014-10-28 09:10:30
如题:
给客户做了5个不同格式的贴纸报表(自定义格式),用的是同一个打印机,每次打印时,要人工选纸张,打印才正常,如果是预览的时候,报表全变成了A4纸张.
我的问题是:
如何用程序指定纸张,让用户预览的时候,自动调指定的打印机和指定的纸张来预览?
...全文
316 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun8330 2014-11-13
  • 打赏
  • 举报
回复
引用 12 楼 trainee 的回复:
在客户电脑上这种设定是一次性的,不用每次都要啊。 最简单的方法是 开放报表修改的功能给客户, 让他们进行PAGE SETTING,选择纸张,再保存。就OK了。 如果不让他们修改报表,可SYS(1037)让他们选择一次纸张, 再用prtinfo(2) 返会所选择纸张的papersize, 按9楼的方法保存在报表中。对于自定以纸张格式(PAPERSIZE=356),还要保存paperwidth, paperheight参数。
非常好,就是要这功能,多谢了
sun8330 2014-11-10
  • 打赏
  • 举报
回复
引用 10 楼 trainee 的回复:
vfp 打印是认papersize(纸张号), 不认formName(纸张名),同一纸张名在不同的电脑上其papersize可能不一样(除了常用的A4等可能一样外)。所以vfp自定义纸张常常会出现移植困难。 解决的方法,让客户选择一次纸张类型,并保存。下一次就认该纸张了。
引用 10 楼 trainee 的回复:
vfp 打印是认papersize(纸张号), 不认formName(纸张名),同一纸张名在不同的电脑上其papersize可能不一样(除了常用的A4等可能一样外)。所以vfp自定义纸张常常会出现移植困难。 解决的方法,让客户选择一次纸张类型,并保存。下一次就认该纸张了。
引用 10 楼 trainee 的回复:
vfp 打印是认papersize(纸张号), 不认formName(纸张名),同一纸张名在不同的电脑上其papersize可能不一样(除了常用的A4等可能一样外)。所以vfp自定义纸张常常会出现移植困难。 解决的方法,让客户选择一次纸张类型,并保存。下一次就认该纸张了。
写得很好,可是捕获用户选择的纸张类型呢?可否举例说明一下?多谢!
trainee 2014-11-10
  • 打赏
  • 举报
回复
vfp 打印是认papersize(纸张号), 不认formName(纸张名),同一纸张名在不同的电脑上其papersize可能不一样(除了常用的A4等可能一样外)。所以vfp自定义纸张常常会出现移植困难。 解决的方法,让客户选择一次纸张类型,并保存。下一次就认该纸张了。
oldbbb 2014-11-10
  • 打赏
  • 举报
回复
不是由用户修改报表文件。 运行时可由用户选择报表页面相关参数,再由程序去修改报表文件。 举个例子:改变“纸张类型”和“纸张方向”,“新纸张类型”和“新纸张方向”可先由用户选定。
USE 报表1.frx IN 0
LOCATE FOR ObjType==1 and ObjCode==53
m旧纸张类型 = "PAPERSIZE=" + STREXTRACT(Expr, "PAPERSIZE=", 0h0D)
m新纸张类型 = "PAPERSIZE=" + "11"      && A3="8", A4="9", A5="11", ...... 
m旧纸张方向 = "ORIENTATION=" + STREXTRACT(Expr, "ORIENTATION=", 0h0D)
m新纸张方向 = "ORIENTATION=" + "1"     && 纵向="0", 横向="1"
REPLACE Expr WITH STRTRAN(Expr, m旧纸张类型, m新纸张类型)
REPLACE Expr WITH STRTRAN(Expr, m旧纸张方向, m新纸张方向)
USE
CREATE CURSOR BB (f1 I)
INSERT INTO BB VALUES (1111)
REPORT FORM 报表1.frx PREVIEW NOWAIT
trainee 2014-11-10
  • 打赏
  • 举报
回复
在客户电脑上这种设定是一次性的,不用每次都要啊。 最简单的方法是 开放报表修改的功能给客户, 让他们进行PAGE SETTING,选择纸张,再保存。就OK了。 如果不让他们修改报表,可SYS(1037)让他们选择一次纸张, 再用prtinfo(2) 返会所选择纸张的papersize, 按9楼的方法保存在报表中。对于自定以纸张格式(PAPERSIZE=356),还要保存paperwidth, paperheight参数。
sun8330 2014-11-09
  • 打赏
  • 举报
回复
不用预览,直接打印,跳出打印设置对话框,在对话框中指定纸张是可以的,运行时修改报表文件不太适合吧,用户哪里会改报表设置?
oldbbb 2014-11-09
  • 打赏
  • 举报
回复
运行时修改报表文件的页面数据可以吗?
sun8330 2014-11-09
  • 打赏
  • 举报
回复
我用的是vfp9.0 SP2,所有的报表都没有勾选 Save printer environment,预览的时候,都会变成用预设打印机的预设纸张来预览,并不能按报表设置的纸张来预览
十豆三 2014-11-01
  • 打赏
  • 举报
回复
自定义纸张操作方法 如果是win98 请通过,控制面板-->打印机-->自定义纸张,转到VFP,报表-->页面设置-选择自定义纸张 如果是win2000 或XP 请通过,打印机-->服务器属性-->格式-->创建新格式-->保存格式,转到VFP,报表-->页面设置-选择自定义的纸张 格式 或通过打印机“属性”中的“打印首选项”中手动添加了自定义纸张,转到VFP,报表-->页面设置-选择自定 义的纸张格式 我的测试环境及步骤: 《电脑A》: Windows XP (SP3) USB连接一台HP1020打印机 并共享了此打印机(共享名为HP1) 《电脑B》: Windows XP (SP3) USB连接一台HP1020打印机 添加了网络打印机HP1。即《电脑B》有2台打印机,一个本地打印机, 一个网络打印机。 VFP9.0 (SP2) 两机器联网正常 在《电脑B》分别右单击这两台打印机,通过“属性”中的“打印首选项”手动添加了自定义纸张,自定义名称随意,两台自定义纸张名称也可 以不一样, 但自定义纸张大小均为 150.0mm x 150.0mm(正文形,为了便于预览测试) 在《电脑A》打印机的“打印首选项”中不用设置自定义纸张,但如果《电脑A》中也要运行程序就必须添加自定义纸张了, 也就是说那个机器运行程序,那个机器用到的打印机就要添加自定义纸张,添加自定义纸张可以是手动,也可以是代码方式(参考MyFll.fll) 。 我在《电脑B》设计了一个报表,选择的是本地打印机的自定义纸张,报表不保存打印机环境(即不选中报表 Page Setup 中 Page Layout 的 Save printer environment 选项) 我在《电脑B》编译后,在《电脑B》上运行程序,分别选择本地打印机和网络打印机,均可以用自定义纸张预览。
十豆三 2014-11-01
  • 打赏
  • 举报
回复
1、使用软件和开发的的电脑,打印机中添加你所用到的所有纸张。手动方法自行百度,代码方法参考 MYFLL的帮助。 2、 设置完你的5个报表后(每个报表选择你的对应纸张),清除报表打印机环境 VFP9.0以下: Use 报表名.frx Replace All Tag With '',tag2 With '' For Objtype=1 Use VFP9.0 页面设置中清除打印机环境 打开报表后,Page Setup 中将 Page Layout 选项卡中的 Save printer environment 选项去掉 然后重新编译
lzw_0736 2014-11-01
  • 打赏
  • 举报
回复
這個問題有難度
sun8330 2014-10-28
  • 打赏
  • 举报
回复
myfll只能指定打印机,不能指定纸张
fyyylyl 2014-10-28
  • 打赏
  • 举报
回复
使用myfll试试

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧