(Access) 的 Report.PrtDevMode 屬性

使用 PrtDevMode 屬性可在 [ 列印 ] 對話方塊中設定或傳回為表單或報表指定的列印裝置模式資訊。 讀取/寫入的 Variant

語法

運算式PrtDevMode

表達 代表 Report 物件的變數。

註解

強烈建議您參閱 Win32 軟體發展工具組,以取得 PrtDevModePrtDevNamesPrtMip 屬性的完整檔。

PrtDevMode 屬性設定為 Win32 Software Development Kit 中所定義的 DEVMODE 結構 94 位元組結構。 如需 PrtDevMode 屬性成員的完整資訊,請參閱 Win32 軟體發展工具組。

PrtDevMode 屬性使用下列成員。

成員 描述
DeviceName 最多 32 個位元組的字串,指定驅動程式支援的裝置名稱;例如,如果Hewlett-Packard LaserJet IIISi 是指定的印表機,則為 「HP LaserJet IIISi」。 每一台印表機驅動程式都有唯一的字串。
SpecVersion Integer ,它指定 Win32 Software Development Kit 中,DEVMODE 結構的版本號碼。
DriverVersion Integer ,它指定印表機驅動程式開發者所指定的印表機驅動程式版本號碼。
Size Integer,指定 DEVMODE 結構的大小,以位元組為單位。 如果應用程式只處理與驅動程式無關的部分資料,您可以使用此成員來求出此結構的長度,而不用去理會不同的版本。
DriverExtra Integer ,它指定此結構之後的裝置特定的資料的選擇性 dmDriverData 成員位元組大小。 如果應用程式不使用裝置特定的資訊,您設定此成員為 0。
Fields Long 值,它指定已在 DEVMODE 結構中初始化哪些剩餘成員。
Orientation Integer ,它指定紙張列印方向。 它不是 1 (縱向) 就是 2 (橫向)。
PaperSize 整數 ,會指定在列印的紙張大小。 如果您將此成員為 0 或 256、 長度及寬度的紙張是所指定 PaperLength 和 PaperWidth 成員,分別。 否則,您可以設定 PaperSize 成員為預先定義的值。 如需可用的值,請參閱 PaperSize 成員值
PaperLength Integer ,它指定紙張長度為 1/10 公釐單位。 此成員會覆寫自訂紙張大小或是能列印不同大小紙張的點陣印表機上的 PaperSize 成員所指定的紙張長度。
PaperWidth Integer,指定單位為 1/10 公釐的紙張寬度。 這個成員會覆寫 PaperSize 成員所指定的紙張寬度。
Scale Integer,指定將縮放列印輸出的因數。 明顯的頁面大小會從實體頁面大小調整 為縮放 比例 /100。 例如,測量 8.5 x 11 英吋的紙張 (字母大小) 縮放值為 50 的紙張會包含與測量 17 x 22 英吋 17 x 22 英吋一樣多的資料,因為輸出文字和圖形會是其原始高度和寬度的一半。
Copies Integer ,如果列印的裝置支援多頁列印,它會指定列印份數。
DefaultSource 整數 ,會指定要從中進紙預設紙匣。 如需可用的值,請參閱 DefaultSource 成員值
PrintQuality 指定印表機解析度的 Integer 。 這些值為 4 (高) 、3 () 、2 (低) ,以及 1 (草稿) 。
色彩 一個 Integer 。 對於彩色印表機而言,指定是否使用彩色列印輸出。 值是 1 (彩色) 和 2 (單色)。
Duplex 一個 Integer 。 對於可以雙面列印的印表機而言,指定是否列印在紙張的兩面。 值是 1 (單工)、2 (水平) 及 3 (垂直)。
YResolution 一個指定印表機的 Y 解析度每英吋幾個點 (dpi) 的 Integer 。 如果印表機初始此成員,PrintQuality 成員會指定印表機的 X 解析度的 dpi 值。
TTOption 指定的 整數 TrueType 字型列印的方式。 如需可用的值,請參閱 TTOption 成員值
Collate 一個指定當列印多個份數時,是否使用自動分頁的 Integer 。 使用未自動分頁會提供較快速、更有效率的輸出,因為資料只被送到印表機一次。
FormName 指定使用紙張的大小,最多使用 16 個字元的字串,例如 "Letter" 或 "Legal"。
Pad 用來為以後的版本需要而空出空白、字元或值的 Long 值。
Bits Long 值,它指定顯示裝置中,每個像素色彩解析度的位元數。
PW Long 值,它指定可見裝置表面 (螢幕或印表機) 的寬度 (以像素為單位)。
PH Long 值,它指定可見裝置表面 (螢幕或印表機) 的高度 (以像素為單位)。
DFI 指定裝置的顯示模式的 Long 值。
DFR Long 值,它指定顯示裝置在特定模式中的頻率,以赫茲為單位 (每秒週期數)。

此屬性設定值在設計檢視中是可讀寫的,在其他檢視中則是唯讀的。

印表機驅動程式可以在 94 位元組的 DEVMODE 結構後面新增裝置特定的資料。 基於此理由,上述 DEVMODE 的資料不要超過 94 位元組。

只有匯出 ExtDeviceMode 函數的印表機驅動程式會使用 DEVMODE 結構。

應用程式可以擷取的紙張大小和印表機支援使用 DC_PAPERS、 DC_PAPERSIZE 及 DC_PAPERNAMES 的值呼叫 DeviceCapabilities 函數的名稱。

在設定 TTOption 的成員值之前, 應用程式應該找出印表機驅動程式如何使用 DC_TRUETYPE 的值呼叫 DeviceCapabilities 函數來使用 TrueType 字型。

範例

下列範例會使用 PrtDevMode 屬性來檢查報表的使用者定義頁面大小。

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

下列範例顯示如何改變報表的列印方向。 此範例將根據報表目前的列印方向,從縱向到橫向或是橫向到縱向切換列印方向。

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

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應