适用于
Form 对象 |
Report 对象 |
可在“打印”对话框中使用 PrtDevMode 属性,设置或返回为表单或报表指定的打印设备模式信息。 读取/写入变量。
表达式.PrtDevMode
表达式 必需。 返回“适用范围”列表中的对象之一的表达式。
备注
强烈建议查看 Win32 软件开发工具包,获取有关 PrtDevMode、PrtDevNames 和 PrtMip 属性的完整文档。
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