yjyx2000,具体该如何操作能!
我的意思是通过编程方法实现该功能(不用错误处理方式得到),据我所知API中没有直接提供得到指定打印机所支持全部纸张类型名及其尺寸的函数。本人有一想法,可能可以实现该功能,就是Subclass 打印公用对话框,置DEVMODE结构的相应标志,使其直接返回而不显示对话框,但不知道 打印公用对话框其内部数据结构,因此只能停在理论上。不知哪位高手能指点迷津?!

解决方案 »

  1.   

        打印机所支持的纸张值(PaperSize)范围为1-41,255。其中每种值都是标准的大小,255为自定定义大小。赋值PaperSize后,通过Printer的Width或Height或获取该纸张尺寸。
        要判断打印机是否支持这些纸张,可以用On error Resume next强行赋值,如果赋值后有错(Err.Number<>0)则不支持。这是一种很笨很慢的办法。如果哪位知道更好的办法,不要忘了告诉我。
       NT不支持自定义纸张。以下是纸张描述:
    '打印纸张常量(256=自定义)
    Public Const PageSize1 = "信笺, 8 1/2 x 11 英寸"
    Public Const PageSize2 = "+A611 小型信笺, 8 1/2 x 11 英寸"
    Public Const PageSize3 = "小型报, 11 x 17 英寸"
    Public Const PageSize4 = "分类帐, 17 x 11 英寸"
    Public Const PageSize5 = "法律文件, 8 1/2 x 14 英寸"
    Public Const PageSize6 = "声明书,5 1/2 x 8 1/2 英寸"
    Public Const PageSize7 = "行政文件,7 1/2 x 10 1/2 英寸"
    Public Const PageSize8 = "A3, 297 x 420 毫米"
    Public Const PageSize9 = "A4, 210 x 297 毫米"
    Public Const PageSize10 = "A4小号, 210 x 297 毫米"
    Public Const PageSize11 = "A5, 148 x 210 毫米"
    Public Const PageSize12 = "B4, 250 x 354 毫米"
    Public Const PageSize13 = "B5, 182 x 257 毫米"
    Public Const PageSize14 = "对开本, 8 1/2 x 13 英寸"
    Public Const PageSize15 = "四开本, 215 x 275 毫米"
    Public Const PageSize16 = "10 x 14 英寸"
    Public Const PageSize17 = "11 x 17 英寸"
    Public Const PageSize18 = "便条,8 1/2 x 11 英寸"
    Public Const PageSize19 = "#9 信封, 3 7/8 x 8 7/8 英寸"
    Public Const PageSize20 = "#10 信封, 4 1/8 x 9 1/2 英寸"
    Public Const PageSize21 = "#11 信封, 4 1/2 x 10 3/8 英寸"
    Public Const PageSize22 = "#12 信封, 4 1/2 x 11 英寸"
    Public Const PageSize23 = "#14 信封, 5 x 11 1/2 英寸"
    Public Const PageSize24 = "C 尺寸工作单"
    Public Const PageSize25 = "D 尺寸工作单"
    Public Const PageSize26 = "E 尺寸工作单"
    Public Const PageSize27 = "DL 型信封, 110 x 220 毫米"
    Public Const PageSize28 = "C5 型信封, 162 x 229 毫米"
    Public Const PageSize29 = "C3 型信封, 324 x 458 毫米"
    Public Const PageSize30 = "C4 型信封, 229 x 324 毫米"
    Public Const PageSize31 = "C6 型信封, 114 x 162 毫米"
    Public Const PageSize32 = "C65 型信封,114 x 229 毫米"
    Public Const PageSize33 = "B4 型信封, 250 x 353 毫米"
    Public Const PageSize34 = "B5 型信封,176 x 250 毫米"
    Public Const PageSize35 = "B6 型信封, 176 x 125 毫米"
    Public Const PageSize36 = "信封, 110 x 230 毫米"
    Public Const PageSize37 = "信封大王, 3 7/8 x 7 1/2 英寸"
    Public Const PageSize38 = "信封, 3 5/8 x 6 1/2 英寸"
    Public Const PageSize39 = "U.S. 标准复写簿, 14 7/8 x 11 英寸"
    Public Const PageSize40 = "德国标准复写簿, 8 1/2 x 12 英寸"
    Public Const PageSize41 = "德国法律复写簿, 8 1/2 x 13 英寸"
      

  2.   

    town,我不想用错误处理的方法,因为那样速度很慢。
    我需要实现的功能就如同MS WORD中那样:如果改变了打印机,则页面设置中的可选纸张就相应变化。