编号:QA002328 建立日期: 1999年12月27日 最后修改日期:2003年6月22日 所属类别:
Q Leo: 操作系统:NT 4.0 编程工具:Visual Basic 6.0 问题:本人使用 DataReport 进行设计时,遇到一个很宽的报表(约有 43厘米宽)。现有以下问题: 1. 设置 Printer.Width 和 Printer.Height 属性,似乎不起作用? 2. 设置PRINTER_INFO_2.DEVMODE 结构的dmPaperLength 和 dmPaperWidth 属性,设置dmOrientation为横向,调用 API函数 SetPrinter,仍然报错 "报表宽度大于纸宽"。但是函数的返回值为 1,并且对打印方向的设置确实已经生效,不知为什么?这样一个报表应该如何实现?
A回答:
yogi的意见: 如果你的VB是SP4以上,增加了一个新的属性Orientation。Datareport默认使用系统打印机的设置,你可以用DataReport.Orientation改变。 党涛的意见: 应该是因为该打印机不支持这么宽的报表的纸张。换台能打印很宽报表的打印机即可!(与程序设计无关,以前俺也碰到过,呵呵!) HM的意见: 1、设置好打印机 2、将DataReport的BorderStyle=1,再设置报表的宽度即可。 zxm的意见: 更换打印机驱动程序即可。无须有实际的宽行打印机。 郭洪涛的意见: 其原因可能是DataReport使用自己的打印机设备环境句柄,不是VB的打印机的句柄。而你更改的句柄并DataReport使用的打印机设备环境句柄,此句柄好象无法获得。此问题我也无法解决,如果你已经解决拜托你Email给我,谢谢。 pan的意见: 打印机的纸宽你不必设,出现你说的那种情况是由于你的某个控件(比如 rptline控件)的宽度加上leftMargin的宽度长于纸宽。 rain的意见: 据我所知,DATAREPORT的纸张是8 1/2*11 in的,大于这个纸的报表都不能打印。 T1289的意见: 下载SP5(http://msdn.microsoft.com/vstudio/sp/default.asp)就能解决这个问题,但要注意默认打印机的设置。 aa的意见: 在以下站点中(《关于数据报表的打印设置》)有相应的代码 : http://vbboshi.myrice.com/vbtech/database/page_3/file74.htm
此问题由党涛等回答。 把这个问题推荐给朋友 您的意见类别 更好的答案 希望得到进一步解释 我有有关代码可以提供给网友 链接错误 文字错误 其他 您的名字 您的电子邮件 您的建议(请尽可能详细)