如何将通过CommonDialog对话框里设置的纸张大小赋值给Print对象。

解决方案 »

  1.   

    PaperSize 属性返回或设置一个值,该值指出当前打印机的纸张大小。在设计时是不可用。语法object.PaperSize [= value]PaperSize 属性的语法包含下面部分:部分 描述
    object 对象表达式,其值是“应用于”列表中的一个对象。
    value 一个用来指定纸张大小的值或常数,“设置值”中有详细描述。
    设置值value 的设置值是:常数 值 描述
    vbPRPSLetter 1 信笺, 8 1/2 x 11 英寸。 
    vbPRPSLetterSmall 2 +A611 小型信笺, 8 1/2 x 11 英寸。
    vbPRPSTabloid 3 小型报, 11 x 17 英寸。
    vbPRPSLedger 4 分类帐, 17 x 11 英寸。
    vbPRPSLegal 5 法律文件, 8 1/2 x 14 英寸。
    vbPRPSStatement 6 声明书,5 1/2 x 8 1/2 英寸。
    vbPRPSExecutive 7 行政文件,7 1/2 x 10 1/2 英寸。
    vbPRPSA3 8 A3, 297 x 420 毫米 
    vbPRPSA4 9 A4, 210 x 297 毫米 
    vbPRPSA4Small 10 A4小号, 210 x 297 毫米
    vbPRPSA5 11 A5, 148 x 210 毫米 
    vbPRPSB4 12 B4, 250 x 354 毫米 
    vbPRPSB5 13 B5, 182 x 257 毫米 
    vbPRPSFolio 14 对开本, 8 1/2 x 13 英寸。
    vbPRPSQuarto 15 四开本, 215 x 275 毫米。
    vbPRPS10x14 16 10 x 14 英寸。
    vbPRPS11x17 17 11 x 17 英寸。 
    vbPRPSNote 18 便条,8 1/2 x 11 英寸。
    vbPRPSEnv9 19 #9 信封, 3 7/8 x 8 7/8 英寸。
    vbPRPSEnv10 20 #10 信封, 4 1/8 x 9 1/2 英寸。
    vbPRPSEnv11 21 #11 信封, 4 1/2 x 10 3/8 英寸。 
    vbPRPSEnv12 22 #12 信封, 4 1/2 x 11 英寸。
    vbPRPSEnv14 23 #14 信封, 5 x 11 1/2 英寸。
    vbPRPSCSheet 24 C 尺寸工作单
    vbPRPSDSheet 25 D 尺寸工作单
    vbPRPSESheet 26 E 尺寸工作单
    vbPRPSEnvDL 27 DL 型信封, 110 x 220 毫米
    vbPRPSEnvC3 29 C3 型信封, 324 x 458 毫米
    vbPRPSEnvC4 30 C4 型信封, 229 x 324 毫米
    vbPRPSEnvC5 28 C5 型信封, 162 x 229 毫米
    vbPRPSEnvC6 31 C6 型信封, 114 x 162 毫米
    vbPRPSEnvC65 32 C65 型信封,114 x 229 毫米
    vbPRPSEnvB4 33 B4 型信封, 250 x 353 毫米
    vbPRPSEnvB5 34 B5 型信封,176 x 250 毫米
    vbPRPSEnvB6 35 B6 型信封, 176 x 125 毫米
    vbPRPSEnvItaly 36 信封, 110 x 230 毫米
    vbPRPSEnvMonarch 37 信封大王, 3 7/8 x 7 1/2 英寸。
    vbPRPSEnvPersonal 38 信封, 3 5/8 x 6 1/2 英寸。
    vbPRPSFanfoldUS 39 U.S. 标准复写簿, 14 7/8 x 11 英寸。 
    vbPRPSFanfoldStdGerman 40 德国标准复写簿, 8 1/2 x 12 英寸。
    vbPRPSFanfoldLglGerman 41 德国法律复写簿, 8 1/2 x 13 英寸。 
    vbPRPSUser 256 用户定义
    说明这些常数在 Visual Basic (VB) 中的对象浏览器中的对象库中列出。
    打印机 Height 和 Width 属性的设置自动地将 PaperSize 设置为 vbPRPSUser。注意   Printer 对象此属性的效果依赖于打印机厂家提供的驱动程序。某些属性设置值可能不起作用,或者一些不同的属性设置值可能有相同的效果。接受范围之外的设置值可能产生也可能不产生错误。详细信息,请参阅厂家具体驱动程序的文档。
      

  2.   

    更多资料去此处查:
    http://www.egooglet.com论坛
    http://bbs.j2soft.cn
      

  3.   

    你说的页面大小的值我怎么能从commondialog对话框里得到啊?
      

  4.   

    Option ExplicitPublic Const PHYSICALWIDTH = 110
    Public Const PHYSICALHEIGHT = 111
    Public Const PHYSICALOFFSETX = 112
    Public Const PHYSICALOFFSETY = 113Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
    Public PhysWidth As Single, PhysHeight As Single        '纸张宽,高度
    Public PrintWidth As Single, PrintHeight As Single   '可列印宽,高度
    Public TopMargin As Single, BottomMargin As Single     '上,下边界
    Public LeftMargin As Single, RightMargin As Single   '左,右边界Public nCopy As Integer '列印份数
    Public nRows As Integer '排列行数
    Public nCols As Integer '排列列数
    Public nRowSpace As Long '行距
    Public nColSpace As Long '列距
    Public nLeftSpace As Long '左边距
    Public nTopSpace As Long  '上边距
    Public StrPrint As String '需列印的字符
    Public xObj As Object
    Public Sub ShowPrinter()
        'GetDeviceCaps 回传值的单位是 pixels
        Printer.ScaleMode = 1 'vbPixels '像素
        '计算部份
        PhysWidth = GetDeviceCaps(Printer.hDC, PHYSICALWIDTH)     '纸张实际宽度
        PhysHeight = GetDeviceCaps(Printer.hDC, PHYSICALHEIGHT)   '纸张实际高度
        PrintWidth = Printer.ScaleWidth                           '可列印范围宽度
        PrintHeight = Printer.ScaleHeight                         '可列印范围高度
        LeftMargin = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETX)  '左边界
        RightMargin = PhysWidth - (LeftMargin + PrintWidth)       '右边界
        TopMargin = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETY)   '上边界
        BottomMargin = PhysHeight - (TopMargin + PrintHeight)     '下边界End Sub
    把以上放入一模块中设置好打印属性后再调用ShowPrinter函数