Form.PrtDevMode 属性 (Access)

使用 PrtDevMode 属性可在“ 打印 ”对话框中设置或返回为窗体或报表指定的打印设备模式信息。 读/写 Variant

语法

表达式PrtDevMode

expression:表示 Form 对象的变量。

备注

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

PrtDevMode 属性设置为镜像定义 Win32 软件开发工具包中的 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 结构的字节大小。 (此值不包括特定于设备的数据的可选 dmDriverData 成员,该成员可以遵循此结构。) 如果应用程序仅操作与驱动程序无关的数据部分,则可以使用此成员来查找此结构的长度,而无需考虑不同的版本。
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×11 英寸(信纸大小)的纸缩放值为 50,则包含的数据大小与 17×22 英寸的纸张中数据一样,因为前者输出的文本和图形其高度和宽度都是原始值的一半。
Copies Integer 值,如果打印设备支持多页副本,则用于指定打印份数。
DefaultSource 一个 整数 ,指定默认纸盒中的纸。 有关可用值,请参阅 DefaultSource 成员值
PrintQuality 一个 整数 ,用于指定打印机的分辨率。 值为 4 (高) 、3 (中) 、2 (低) 和 1 (草稿) 。
颜色 整数。 对于彩色打印机,指定是否以彩色打印输出。 值为 1 (彩色) 和 2 (单色) 。
Duplex 整数。 对于能够双面打印的打印机,指定是否在纸张的两侧打印输出。 值为 1 (单工) 、2 (水平) 和 3 (垂直) 。
YResolution Integer 值,以点/英寸 (dpi) 为单位指定打印机 y 轴方向的分辨率。 如果打印机对此成员进行初始化,则 PrintQuality 成员指定的将是打印机的 x 轴方向分辨率的 dpi 值。
TTOption 一个 整数 ,指定 TrueType 字体的打印方式。 有关可用值,请参阅 TTOption 成员值
Collate Integer 值,在打印多个副本时,用于指定是否归类打印。 使用不归类打印可提供更快、更有效的输出,因为数据只向打印机发送一次。
FormName 最大长度为 16 个字符的字符串,用于指定要使用的纸张大小,例如,“Letter”或“Legal”。
Pad Long 值,用于为以后的版本空出空白、字符或值。
Bits Long 值,以位/像素为单位指定显示设备的颜色分辨率。
PW Long 值,以像素为单位指定设备可视界面(屏幕或是打印机)的宽度。
PH Long 值,以像素为单位指定设备可视界面(屏幕或是打印机)的高度。
DFI Long 值,用于指定设备的显示模式。
DFR Long 值,以赫兹(每秒的周期数)为单位指定显示设备在特定显示模式下的频率。

此属性设置在"设计"视图中可读/写,而在其他视图中则为只读。

打印机驱动程序可以在 DEVMODE 结构之后添加 94 字节设备专用数据。 因此上述的 DEVMODE 数据不要超过 94 个字节,这一点很重要。

只有打印机驱动程序导出 ExtDeviceMode 函数使用 DEVMODE 结构。

应用程序可以检索的纸张大小和打印机支持通过使用 DC_PAPERS、 DC_PAPERSIZE 和 DC_PAPERNAMES 值来调用 DeviceCapabilities 函数的名称。

在设置之前 TTOption 成员的值,应用程序应了解如何打印机驱动程序可以使用 TrueType 字体,使用 DC_TRUETYPE 的值来调用 DeviceCapabilities 函数。

示例

以下示例使用 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。