Access) (Form.PrtDevMode 屬性
使用 PrtDevMode 屬性可在 [ 列印 ] 對話方塊中設定或傳回為表單或報表指定的列印裝置模式資訊。 讀取/寫入的 Variant。
語法
運算式。PrtDevMode
expression 代表 Form 物件的變數。
註解
強烈建議您參閱 Win32 軟體發展工具組,以取得 PrtDevMode、 PrtDevNames和 PrtMip 屬性的完整檔。
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 支援與意見反應。