Report.PrtDevMode 属性 (Access)
使用 PrtDevMode 属性可在“ 打印 ”对话框中设置或返回为窗体或报表指定的打印设备模式信息。 读/写 Variant。
语法
表达式。PrtDevMode
表达 一个代表 Report 对象的变量。
备注
强烈建议参阅 Win32 软件开发工具包,获取有关 PrtDevMode、 PrtDevNames 和 PrtMip 属性的完整文档。
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。