win2k/xp系统下,经常需要打印一些特殊规格单据,纸张已经在打印机的"服务器属性"里面添加好了,由于电脑平时也打印其他一些东西,所以不可能将新添加的纸张设置为默认打印纸,所以希望能实现如下效果:
如当前打印机默认打印纸为A4,但我们用vb编写的程序使用的打印纸并非A4,这时程序可以用代码选择我们需要的并且在当前打印机中存在的打印纸进行预览和打印,但没有修改系统的默认打印纸,其功能就类似word,excel软件一样,请问该如何实现?谢谢!

解决方案 »

  1.   

    这个需要结合你使用的打印方式才能有答案.
    不知道你是用什么报表工具,或者你用直接printer?
    一般报表工具都有PaperSize属性的,设置这个属性就可以了
      

  2.   

    试过了,papersize属性在win2k/xp是不起作用的,况且win2k/xp系统下可以同时存在的自定义打印纸本来就可以不止一种,所以不可能用printer对象来设置
      

  3.   

    Printer.PaperSize = vbPRPSA3
    上述设置在WINXP应没问题,单需宽行打印机。
      

  4.   

    此外VB下Printer对象默认纸张是纵向打印的,故即使设置Printer.PaperSize = vbPRPSA3,它的横向打印最大宽度297毫米,想突破297毫米,则须转向打印.使用Printer对象的Orientation 属性,设置Printer对象的Orientation 属性为2 ,则文档打印以纸的宽边作顶部,A3纸仍按纵向走纸,但能达到宽420长297的打印效果。这些调用仅是执行VB的打印代码时起作用,结束打印系统仍维持原设置.以上是使用代码打印VB的数据查询结果,未使用vb自带的数据报表.
        以下见MSDN解释:
        Orientation 属性
        返回或设置一个值,该值指出文档是以纵向还是横向的方式被打印。在设计时是不可用的。
        语法
        object.Orientation [= value]
        Orientation 属性的语法包含下面部分:
        部分   描述 
        Object 对象表达式,其值是“应用于”列表中的一个对象。 
        Value  一个决定页方向的值或常数,“设置值”中有详细描述。 
        设置值
        value 的设置值为:
        常数             值 描述 
        VbPRORPortrait   1  文档打印以纸的窄边作顶部。     VbPRORLandscape  2  文档打印以纸的宽边作顶部。 
        说明
        这些常数在的对象浏览器中的 Visual Basic (VB) 对象库中列出。
        注意 Printer 对象的此属性的效果依赖于打印机厂商提供的驱动程序。某些属性设置值可能不起作用,或者一些不同的属性设置值可能有相同的效果。可接受范围之外的设置值可能产生也可能不产生错误。详细信息,请参阅厂家的具体驱动程序的文档。