PrtDevMode 屬性

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

使用 PrtDevMode 屬性可以設(shè)置或返回“打印”對(duì)話框中為窗體或報(bào)表指定的打印設(shè)備模式信息。Variant 型,可讀寫。

expression.PrtDevMode

expression     必需。返回“應(yīng)用于”列表中的一個(gè)對(duì)象的表達(dá)式。

說明

如果需要有關(guān) PrtDevMode、PrtDevNamesPrtMip 屬性的完整文檔,強(qiáng)烈建議您查閱 Win32 Software Development Kit。

PrtDevMode 屬性設(shè)置是一個(gè) 94 字節(jié)的結(jié)構(gòu),反映了 Win32 Software Development Kit 中定義的 DEVMODE 結(jié)構(gòu)。有關(guān) PrtDevMode 屬性成員的完整信息,請(qǐng)參閱 Win32 Software Development Kit。

PrtDevMode 屬性使用以下成員:

成員

說明

DeviceName

最多為 32 字節(jié)的字符串,該字符串用于指定驅(qū)動(dòng)程序所支持的設(shè)備名稱。例如,如果 Hewlett-Packard LaserJet IIISi 是指定的打印機(jī),則字符串為“HP LaserJet IIISi”。每個(gè)打印機(jī)驅(qū)動(dòng)程序都有唯一的字符串。

SpecVersion

Integer 值,用于指定在 Win32 Software Development Kit 中 DEVMODE 結(jié)構(gòu)的版本號(hào)。

DriverVersion

Integer 值,用于指定打印機(jī)驅(qū)動(dòng)程序開發(fā)者指定的打印機(jī)驅(qū)動(dòng)程序的版本號(hào)。

Size

Integer 值,用于指定 DEVMODE 結(jié)構(gòu)的字節(jié)大小。(該值不包含在此結(jié)構(gòu)之后的設(shè)備專用數(shù)據(jù)的可選 dmDriverData 成員)。如果應(yīng)用程序只處理與驅(qū)動(dòng)程序無關(guān)的部分?jǐn)?shù)據(jù),則可以使用該成員來求出此結(jié)構(gòu)的長度,而不必考慮版本的不同。

DriverExtra

Integer 值,以字節(jié)為單位指定在此結(jié)構(gòu)之后的設(shè)備專用數(shù)據(jù)的可選 dmDriverData 成員大小。如果應(yīng)用程序不使用設(shè)備專用的信息,可將該成員設(shè)為 0。

Fields

Long 值,用于指定在 DEVMODE 結(jié)構(gòu)中,哪些剩余的成員已經(jīng)被初始化。

Orientation

Integer 值,用于指定紙張的打印方向。它可以是 1(縱向)或者 2(橫向)。

PaperSize

Integer 值,用于指定打印紙張的大小。若將該成員設(shè)為 0 或 256,則紙張的長度和寬度分別由 PaperLength 和 PaperWidth 成員指定。否則,可以將 PaperSize 成員設(shè)為預(yù)定值。有關(guān)可用值的詳細(xì)信息,請(qǐng)參閱 PaperSize 成員值。

PaperLength

Integer 值,以 1/10 毫米為單位來指定紙張的長度。對(duì)于 PaperSize 成員為自定義紙張大小,或?yàn)榭梢允褂酶鞣N紙張大小的點(diǎn)陣打印機(jī)等設(shè)備而指定的紙張長度,該成員會(huì)將其覆蓋。

PaperWidth

Integer 值,以 1/10 毫米為單位來指定紙張寬度。該成員將覆蓋 PaperSize 成員所指定的紙張寬度。

Scale

Integer 值,用于指定打印輸出的縮放比例因子。頁面大小外觀是從實(shí)際頁面大小按 Scale/100 的比例因子進(jìn)行縮放而得到的。例如,一張 8.5×11 英寸(信紙大小)的紙縮放值為 50,則包含的數(shù)據(jù)大小與 17×22 英寸的紙張中數(shù)據(jù)一樣,因?yàn)榍罢咻敵龅奈谋竞蛨D形其高度和寬度都是原始值的一半。

Copies

Integer 值,如果打印設(shè)備支持多頁副本,則用于指定打印份數(shù)。

DefaultSource

Integer 值,用于指定默認(rèn)送紙盒。有關(guān)可用值的詳細(xì)信息,請(qǐng)參閱 DefaultSource 成員值。

PrintQuality

Integer 值,用于指定打印機(jī)的分辨率。取值可為 -4(高)、-3(中)、-2(低)和 -1(草稿)。

Color

Integer 值,用于指定彩色打印機(jī)的輸出是否為彩色。取值可為 1(彩色)和 2(單色)。

Duplex

Integer 值,用于指定可雙面打印的打印機(jī)是否進(jìn)行雙面打印。值為 1(單面)、2(水平)和 3(垂直)。

YResolution

Integer 值,以點(diǎn)/英寸 (dpi) 為單位指定打印機(jī) y 軸方向的分辨率。如果打印機(jī)對(duì)該成員進(jìn)行初始化,PrintQuality 成員指定的將是打印機(jī)的 x 軸方向分辨率的 dpi 值。

TTOption

Integer 值,用于指定如何打印 TrueType 字體。有關(guān)可用值的詳細(xì)信息,請(qǐng)參閱 TTOption 成員值。

Collate

Integer 值,在打印多個(gè)副本時(shí),用于指定是否歸類打印。使用不歸類打印可提供更快、更有效的輸出,因?yàn)閿?shù)據(jù)只向打印機(jī)發(fā)送一次。

FormName

最大長度為 16 個(gè)字符的字符串,用于指定要使用的紙張大小,例如,“Letter”或“Legal”。

Pad

Long 值,用于為以后版本的需要而空出空白、字符或值。

Bits

Long 值,以位/像素為單位,指定顯示設(shè)備的顏色分辨率。

PW

Long 值,以像素為單位,指定設(shè)備可視界面(屏幕或是打印機(jī))的寬度。

PH

Long 值,以像素為單位,指定設(shè)備可視界面(屏幕或是打印機(jī))的高度。

DFI

Long 值,用于指定設(shè)備的顯示模式。

DFR

Long 值,以赫茲(每秒的周期數(shù))為單位,指定顯示設(shè)備在特定顯示模式下的掃描頻率。

 

注釋  可以使用 Visual Basic 設(shè)置 PrtDevMode 屬性。

該屬性設(shè)置在“設(shè)計(jì)”視圖中可讀寫,而在其他視圖中則為只讀。

注意  打印機(jī)驅(qū)動(dòng)程序可以在 DEVMODE 結(jié)構(gòu)之后添加 94 字節(jié)設(shè)備專用數(shù)據(jù)。因此上述的 DEVMODE 數(shù)據(jù)不要超過 94 個(gè)字節(jié),這一點(diǎn)很重要。

只有導(dǎo)出 ExtDeviceMode 函數(shù)的打印機(jī)驅(qū)動(dòng)程序使用 DEVMODE 結(jié)構(gòu)。

應(yīng)用程序可以使用 DC_PAPERS、DC_PAPERSIZE 及 DC_PAPERNAMES 值調(diào)用 DeviceCapabilities 函數(shù),以檢索打印機(jī)支持的紙張大小和名稱。

在設(shè)置 TTOption 的成員值之前,應(yīng)用程序應(yīng)該使用 DC_TRUETYPE 值調(diào)用 DeviceCapabilities 函數(shù),以找出打印機(jī)驅(qū)動(dòng)程序使用 TrueType 字體的方法。

示例

下面的示例使用 PrtDevMode 屬性來檢查用戶定義的報(bào)表頁面大小。

Private Type str_DEVMODE

    RGB As String * 94

End Type

Private Type type_DEVMODE

    strDeviceName As String * 32

    intSpecVersion As Integer

    intDriverVersion As Integer

    intSize As Integer

    intDriverExtra As Integer

    lngFields As Long

    intOrientation As Integer

    intPaperSize As Integer

    intPaperLength As Integer

    intPaperWidth As Integer

    intScale As Integer

    intCopies As Integer

    intDefaultSource As Integer

    intPrintQuality As Integer

    intColor As Integer

    intDuplex As Integer

    intResolution As Integer

    intTTOption As Integer

    intCollate As Integer

    strFormName As String * 32

    lngPad As Long

    lngBits As Long

    lngPW As Long

    lngPH As Long

    lngDFI As Long

    lngDFr As Long

End Type

Public Sub CheckCustomPage(ByVal rptName As String)

    Dim DevString As str_DEVMODE

    Dim DM As type_DEVMODE

    Dim strDevModeExtra As String

    Dim rpt As Report

    Dim intResponse As Integer

    ' Opens report in Design view.

    DoCmd.OpenReport rptName, acDesign

    Set rpt = Reports(rptName)

    If Not IsNull(rpt.PrtDevMode) Then

        strDevModeExtra = rpt.PrtDevMode

        ' Gets current DEVMODE structure.

        DevString.RGB = strDevModeExtra

        LSet DM = DevString

        If DM.intPaperSize = 256 Then

            ' Display user-defined size.

            intResponse = MsgBox("The current custom page size is " & _

                          DM.intPaperWidth / 254 & " inches wide by " & _

                          DM.intPaperLength / 254 & " inches long. Do you want " & _

                          "to change the settings?", vbYesNo + vbQuestion)

        Else

            ' Currently not user-defined.

            intResponse = MsgBox("The report does not have a custom page size. " & _

                          "Do you want to define one?", vbYesNo + vbQuestion)

        End If

        If intResponse = vbYes Then

            ' User wants to change settings. Initialize fields.

            DM.lngFields = DM.lngFields Or DM.intPaperSize Or _

                           DM.intPaperLength Or DM.intPaperWidth

            ' Set custom page.

            DM.intPaperSize = 256

            ' Prompt for length and width.

            DM.intPaperLength = InputBox("Please enter page length in inches.") * 254

            DM.intPaperWidth = InputBox("Please enter page width in inches.") * 254

            ' Update property.

            LSet DevString = DM

            Mid(strDevModeExtra, 1, 94) = DevString.RGB

            rpt.PrtDevMode = strDevModeExtra

        End If

    End If

    Set rpt = Nothing

End Sub

下面的示例顯示如何更改報(bào)表的打印方向。該示例將打印方向從縱向切換到橫向,或是從橫向切換到縱向,這取決于報(bào)表當(dāng)前的打印方向。

Public Sub SwitchOrient(ByVal strName As String)

    Const DM_PORTRAIT = 1

    Const DM_LANDSCAPE = 2

    Dim DevString As str_DEVMODE

    Dim DM As type_DEVMODE

    Dim strDevModeExtra As String

    Dim rpt As Report

    ' Opens report in Design view.

    DoCmd.OpenReport strName, acDesign

    Set rpt = Reports(strName)

    If Not IsNull(rpt.PrtDevMode) Then

        strDevModeExtra = rpt.PrtDevMode

        DevString.RGB = strDevModeExtra

        LSet DM = DevString

        DM.lngFields = DM.lngFields Or DM.intOrientation

        ' Initialize fields.

        If DM.intOrientation = DM_PORTRAIT Then

            DM.intOrientation = DM_LANDSCAPE

        Else

            DM.intOrientation = DM_PORTRAIT

        End If

        ' Update property.

        LSet DevString = DM

        Mid(strDevModeExtra, 1, 94) = DevString.RGB

        rpt.PrtDevMode = strDevModeExtra

    End If

    Set rpt = Nothing

End Sub