各位大虾:
    元宵节快乐!
    今天用VB写报表程序遇见一个非常奇怪的问题    一、
    我在程序中设置
    Printer.Orientation = VbPRORLandscape
    程序执行没有问题,可以实现打印
    但是安装在别人(没有安装VB)的电脑上,却不能执行程序,系统报错
    "应用程序错误:380
     无效的属性值"
    Printer.Orientation = VbPRORLandscape 这条语句有问题
    
    但是我把别人电脑的打印机设置改一下,把纸张走向改为“横向”
    程序却可以执行,可以进行打印
    小弟实在是不知道怎么回事?
    我总不能让用户要用的时候设置一下,打印之后再重新设置。多麻烦阿,顾客也不愿意这样啊
    
    请教各位大虾,这问题怎么解决阿?急!!!!!!!
    二、
    还有怎样设置纸张的大小?
    我如下设置却不起作用。
    Printer.PaperSize = 256
    Printer.ScaleWidth = 50
    Printer.ScaleHeight = 200      请教各位大虾,这问题怎么解决阿?急!!!!!!!

解决方案 »

  1.   

    Printer.Orientation = 1或2
    纸张的大小在程式中設定要根據你使用的印表機的驅動程式,很多印表機的驅動程式都不支持在程式中改動紙張大小,你只能在程式中改變系統預設印表機
      

  2.   

    YUAN168()
        Printer.Orientation = 2 和  Printer.Orientation = VbPRORLandscape 等价阿
    两者都试过了,结果都一样,程序报同样的错误。
        
        还有就是如何在程序中改变系统预设印表机阿?
        
      

  3.   

    还有就是如何在程序中改变系统预设印表机阿?
    -----------------------------------------------------
    你是直接Printer对象吧,那就是默认打印机
    至于选择打印机,应该枚举Printers集合VB的通用对话框控件一点都没做好
    ShowPrint只能返回打印机的hDC
    这是调用DeviceCapabilities得到打印机设备的名字
    再在Printers集合中查找还有怎样设置纸张的大小?
    -----------------------------------------------------------
    ScaleWidth、ScaleHeight只是设置逻辑缩放单位
    并不是改变纸张大小
    Width、Height才是纸张大小
      

  4.   

    建议:
    一、在系统中增加符合自己要求的自定纸张。
    二、在系统中增加固定名字的打印机,并将打印机的纸张设置成上面的自定义纸张(用不用设成默认打印机无所谓)。打印时,枚举Printers,只用你指定的打印机进行打印。可以做一个打印机初始化工具,可以自动添加自定义纸张、打印机,并自动设置打印机参数(打印出问题时只要执行这个小程序就可以了),这样就不会影响用户已有的打印机。以上是我一直以来的想法,一直没时间做,也不知可行不可行,借此机会大家也讨论一下。
      

  5.   

    Too  zyl910(910:分儿,我又来了!) 
      您能给我一段关于解决上述问题的源代码吗?
      谢谢!
      

  6.   

    Sorry!
    很久没有写打印代码了
    再加上现在在家里,没有VB
      

  7.   

    建议使用PRINTER对象来解决,给你点资料,是我以前用到的:
    http://community.csdn.net/Expert/topic/3181/3181353.xml?temp=.6019098
      

  8.   

    把邮箱给我,我自己用API 函数做了一个打印类,可能你用的上。
      

  9.   

    to yangjing0473(晶砣砣) :
    能给我传一份吗,谢谢!!
    [email protected]
      

  10.   

    Too yangjing0473(晶砣砣) Email:[email protected]谢谢