| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2102 人关注过本帖
标题:报表打印,困惑好久的问题?
只看楼主 加入收藏
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
 问题点数:0 回复次数:12 
报表打印,困惑好久的问题?

以前在98下,用VFP6。0开发的程序,使用正常。后来在win2000或XP下面,定义自定义纸张的大小后,在本机上应用正常,但编译后在其他机器上运行,则不能正常打印了,有高手能指点一下吗???

搜索更多相关主题的帖子: 困惑 打印 
2006-05-16 16:48
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 

在以往的VFP版本中,使用VFP提供的报表设计器设计的报表,如果报表页面大小不是Windows操作系统提供的标准规格的纸张大小,在Windows 9X下,可通过自定义纸张来确定纸张的大小,但只能定义一种自定义纸张规格。在Windows 2000/XP下,虽可创建多种纸张格式,在开发程序的机器上,确实也可以实现多种自定义纸张格式的报表打印。但当把程序发布到其他运行Windows 2000/XP的机器上时,即使按同样方式定义了各种纸张格式,在打印报表时却不一定是按定义的纸张格式打印报表。问题出在哪呢?在两台机器上分别打开报表文件(.frx),它实标上也是一种数据表文件,浏览其第一条记录的Expr字段的内容,通过比较,问题找到了。Expr字段的内容记录着相关的打印参数,其中的PAPERSIZE=140行说明了纸张尺寸大小的编号,但在Windows 2000/XP下,在不同机器上所定义的相同规格的自定义纸张,在VFP报表文件中其PAPERSIZE的值并不一定是相同的,这也就是在不同机器上会出现同一自定义纸张规格的报表却打印出不同页面大小的报表的原因。


认真看书学习,弄通Fox主义。
2006-05-16 19:26
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
得分:0 

多谢楼上的,但问题是这样,我在2000下面定义好自定义纸张,打印正常,编译后到其他的2000系统下面,设置同样大小的自定义纸张,打印的宽度正常,但长度好象是按照A4打印的,同系统下机器定义的也不一样吗?有办法解决吗,我对打印了解不多,有个例子最好,多谢了

2006-05-17 12:24
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
我同时装了vfp6、vfp9,同一个开发程序,同样的报表,同样的自定义纸,其编号就不一样。很头疼。这样吧,打印前你调用页面设置函数重新设置一下看看。

认真看书学习,弄通Fox主义。
2006-05-17 18:47
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
得分:0 

我的问题不知道是否和你的一样,我编译后标题和细节打印都没问题,但页注脚则好象始终按照A4纸进行,即使把所有的参数都该为自定义都不成,程序由于打印功能使用比较频繁,不断调用页面设置函数有点烦琐的感觉,不过可以测试一下,多谢

2006-05-17 19:53
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
得分:0 

测试过了,如果在本机,打印对话框上显示出来的是自定义,而换一台机器,打印对话框上显示出来的是就是A4的纸了,每次都选显然是不合适的了,能否在代码里对机器的默认值进行设定,有高手知道吗

2006-05-19 13:43
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
得分:0 

有知道的吗?我急用,多谢

2006-05-24 13:30
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
在WINDOWS的控制面板上设置打印机参数看看能不能解决
其实VFP能控制打印机参数的.

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-24 13:33
sdzb_wzy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-2-8
收藏
得分:0 

有测试打印机当前状态的函数吗,比如纸张类型的编号,当前打印机,打印机端口等等

2006-05-29 15:44
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
prtinfo( ) 函数

返回当前的打印机设置。

语法

PRTINFO(nPrinterSetting [, cPrinterName])

参数
nPrinterSetting

指定返回 Visual FoxPro 打印机的某个设置。
在下面表中列出了打印机设置的返回值。

附注
如果 PRTINFO(2) 返回 -1,就用 PRTINFO(3) 和 PRTINFO(4) 返回纸的大小。

如果 nPrinterSetting 等于 1 (FOXPRO.H 中的 PRT_ORIENTATION),PRTINFO( ) 返回纸的方向。

返回值设置 –1 信息不可使用 0 纵向 1 横向

如果 nPrinterSetting 等于 2 (FOXPRO.H 中的PRT_PARERSIZE),PRTINFO( ) 返回纸的大小:

返回值设置 –1 或非下表所列值信息不可使用。使用 nPrinterSetting =3 和 nPrinterSetting =4 决定纸的大小。 1 Letter, 8 1/2 x 11 in 2 Letter Small, 8 1/2 x 11 in 3 Tabloid, 11 x 17 in 4 Ledger, 17 x 11 in 5 Legal, 8 1/2 x 14 in 6 Statement, 5 1/2 x 8 1/2 in 7 Executive, 7 1/4 x 10 1/2 in 8 A3, 297 x 420 mm 9 A4, 210 x 297 mm 10 A4, Small 210 x 297 mm 11 A5, 148 x 210 mm 12 B4, 250 x 354 mm 13 B5, 182 x 257 mm 14 Folio, 8 1/2 x 13 in 15 Quarto, 215 x 275 mm 16 10 x 14 in 17 11 x 17 in 18 Note, 8 1/2 x 11 in 19 Envelope #9, 3 7/8 x 8 7/8 in 20 Envelope #10, 4 1/8 x 9 1/2 in 21 Envelope #11, 4 1/2 x 10 3/8 in 22 Envelope #12, 4 1/2 x 11 in 23 Envelope #14, 5 x 11 1/2 in 24 C size sheet 25 D size sheet 26 E size sheet 27 Envelope DL, 110 x 220 mm 28 Envelope C5, 162 x 229 mm 29 Envelope C3, 324 x 458 mm 30 Envelope C4, 229 x 324 mm 31 Envelope C6, 114 x 162 mm 32 Envelope C65, 114 x 229 mm 33 Envelope B4, 250 x 353 mm 34 Envelope B5, 176 x 250 mm 35 Envelope B6, 176 x 125 mm 36 Envelope, 110 x 230 mm 37 Envelope Monarch, 3 7/8 x 7.5 in 38 6 3/4 Envelope, 3 5/8 x 6 1/2 in 39 US Std Fanfold, 14 7/8 x 11 in 40 German Std Fanfold, 8 1/2 x 12 in 41 German Legal Fanfold, 8 1/2 x 13 in

如果 nPrinterSetting 等于 3 (FOXPRO.H 中的 PRT_PAPERLENGTH),PRTINFO( ) 按 .1mm 为单位返回纸的长度。
如果 nPrinterSetting 等于 4 (FOXPRO.H 中的 PRT_PAPERWIDTH),PRTINFO( ) 按 .1mm 为单位返回纸的宽度。
如果 nPrinterSetting 等于 5 (FOXPRO.H 的 PRT_SCALE),PRTINFO( ) 返回打印输出的比例因子。
如果 nPrinterSetting 等于 6 (FOXPRO.H 中的 PRT_COPIES),PRTINFO( ) 返回需要打印的副本数目。
如果 nPrinterSetting 等于 7 (FOXPRO.H 中的 PRT_DEFASOURCE),PRTINFO( ) 返回默认的纸张来源:

返回值设置 1 上层纸盒 2 下层纸盒 3 中层纸盒 4 人工送纸 5 信封纸盒 6 人工送纸的信封 7 自动选取 8 输纸器送纸 9 小型样式 10 大型样式 11 大容量 14 卡式盒
如果 nPrinterSetting 等于 8 (FOXPRO.H 中的 PRT_PRTQUAL),
PRTINFO( ) 返回一个正值,以每英寸的点数 (DPI) 指示水平分辨率,或一个负值指示打印质量: 返回值 设置 –1 草图 –2 低档 –3 中档 –4 高档
如果 nPrinter Setting 等于 9 (FOXPRO.H 中的 PRT_COLOR),PRTINFO( ) 返回一个值,指示彩色打印机输出为彩色还是黑白: 返回值 设置 1 彩色 2 黑白

如果 nPrinterSetting 等于 10 (FOXPRO.H 中的 PRT_DUPLEX),PRTINFO( ) 返回双工方式:

返回值设置 1 单向打印 2 垂直双向打印 3 水平双向打印

如果 nPrinterSetting 等于 11 (FOXPRO.H 中的 PRT_YRESOLUTION),PRTINFO( ) 以每英寸的点数 (DPI) 返回垂直分辨率。如果此信息不可用,返回 -1。
如果 nPrinterSetting 等于 12 (FOXPRO.H 中的 PRT_TTOPTION),PRTINFO( ) 返回一个值,指示如何打印 TueType 字体:

返回值 设置 1 作为位图图形打印 2 作为软字体下载 3 替代设备字体

如果 nPrinterSetting 等于 13,PRTINFO( ) 返回一个值指示输出是否排序:

返回值 设置 0 不排序 1 排序

cPrinterName

指定需要返回信息的打印机名,如果省略 cPrinterName,则返回默认的打印机的信息。

返回值类型

数值型

说明

Visual FoxPro 的打印机设置是在“页面设置”对话框中进行的。从“文件”菜单中选择页面设置可以显示 Visual FoxPro 的“页面设置”对话框。


感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-05-29 19:50
快速回复:报表打印,困惑好久的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014697 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved