PrtDevMode 属性

适用于

Form 对象

Report 对象

可在“打印”对话框中使用 PrtDevMode 属性,设置或返回为表单或报表指定的打印设备模式信息。读取/写入变量

expression.PrtDevMode

表达式(必需)。返回“适用于”列表中的某一对象的表达式。

备注

强烈建议查看 Win32 软件开发工具包,获取有关 PrtDevModePrtDevNamesPrtMip 属性的完整文档。

PrtDevMode 属性设置是一种 94 字节结构,是 Win32 软件开发工具包中定义的 DEVMODE 结构的镜像。有关 PrtDevMode 属性成员的完整信息,请查阅 Win32 软件开发工具包。

PrtDev Mode 属性使用以下成员。

成员

说明

DeviceName

字符串(最大长度为 32 字节)指定驱动程序支持的设备名称。如果 Hewlett-Packard LaserJet IIISi 是指定打印机,则为“HP LaserJet IIISi”。每个打印机驱动程序具有一个唯一的字符串。

SpecVersion

一个整数,指定 Win32 软件开发工具包中的 DEVMODE 结构的版本号。

DriverVersion

一个整数,指定打印机驱动程序开发人员分配的打印机驱动程序版本号。

Size

一个整数,指定 DEVMODE 结构的大小(以字节为单位)。(该值不包括特定于设备的数据的可选 dmDriverData 成员,该成员可能采用此结构。)如果应用程序仅处理与驱动程序无关的数据部分,可使用该成员查找该结构的长度,而无需说明不同版本。

DriverExtra

一个整数,指定特定于设备的数据的可选 dmDriverData 成员的大小(以字节为单位),该成员可能采用此结构。如果应用程序不使用特定于设备的信息,将该成员设置为 0。

Fields

一个长值,指定 DEVMODE 结构剩余成员中已初始化的成员。

Orientation

一个整数,指定纸张的打印方向。可以是 1(纵向)或 2(横向)。

PaperSize

一个整数,指定要打印的纸张的大小。如果将此成员设置为 0 或 256,则成员 PaperLength 和 PaperWidth 分别指定纸张长度和宽度。否则,请将成员 PaperSize member 设置为预定义值。

PaperLength

一个整数,指定纸张长度(以毫米的 1/10 为单位)。该成员替代针对自定义纸张大小或可在多种大小纸张上打印的设备(如点阵打印机)的 PaperSize 成员指定的纸张长度。

PaperWidth

一个整数,指定纸张宽度(以毫米的 1/10 为单位)。此成员替代由 PaperSize 成员指定的纸张宽度。

Scale

一个整数,指定打印输出的缩放系数。外观页面大小在实际页面大小的基础上,以 /100 缩放系数进行缩放。例如,尺寸为 8.5 x 11 英寸(信纸大小)的一张纸(缩放值为 50)可包含与尺寸为 17 x 22 英寸的纸张同样多的数据,因为输出文本和图形是原始高度和宽度的一半。

Copies

一个整数,指定打印副本份数(若打印设备支持多页副本)。

DefaultSource

一个整数,指定进纸的默认纸槽。

PrintQuality

一个整数,指定打印机分辨率。值为 4(高)、3(中)、2(低)和 1(草稿)。

Color

一个整数。对于彩色打印机,指定输出是否打印为彩色。值为 1(彩色)和 2(单色)。

Duplex

一个整数。对于具有双面打印功能的打印机,指定输出是否打印在纸张的两面。值为 1(单面)、2(水平)和 3(垂直)。

YResolution

一个整数,指定以每英寸点数 (dpi) 表示的打印机 y 分辨率。如果打印机初始化此成员,PrintQuality 成员指定以 dpi 表示的打印机 x 分辨率。

TTOption

一个整数,指定 TrueType 字体的打印方式。

Collate

一个整数,指定打印多份副本时是否应使用排序规则。使用无排序规则的副本可提供更快、更高效的输出,因为数据仅发送到打印机一次。

FormName

最大长度为 16 个字符的字符串,指定要使用的纸张大小,例如“Letter”或“Legal”。

Pad

一个值,用于填充将来版本的空格、字符或值。

Bits

一个值,指定以每像素位数表示的显示设备颜色分辨率。

PW

一个值,指定可见设备表面(屏幕或打印机)的宽度,以像素为单位。

PH

一个值,指定可见设备表面(屏幕或打印机)的高度,以像素为单位。

DFI

一个值,指定设备的显示模式。

DFR

一个值,指定显示设备在特定模式下的频率,以赫兹(每秒周期数)为单位。


注意: 可使用 Visual Basic for Applications (VBA) 代码设置 PrtDevMode 属性。

此属性设置在设计视图或布局视图中为读/写,在其他视图中为只读。

打印机驱动程序可立即添加特定于设备的数据,数据采用 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 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×