Свойство (PrtDevMode)

Применение

Объект «Форма»

Объект «Отчет»

Свойство PrtDevMode служит для задания или возврата сведений о режиме устройства печати, указанных для формы или отчета в диалоговом окне Печать. Значение данного свойства типа Variant доступно для чтения и записи.

выражение.PrtDevMode

выражение Обязательное. Выражение, возвращающее один из объектов списка «Применение».

Замечания

Настоятельно рекомендуется обратиться за консультацией к пакету Win32 Software Development Kit для получения всех документов по свойствам PrtDevMode, PrtDevNames и PrtMip.

Значение свойства PrtDevMode представляет собой 94-байтовую структуру, которая отражает структуру DEVMODE, определенную в пакете Win32 Software Development Kit. Исчерпывающие сведения о компонентах свойства PrtDevMode можно найти в пакете Win32 Software Development Kit.

В свойстве PrtDevMode используются следующие элементы.

Элементы

Описание

Имя устройства

строка с максимальным размером 32 байта, которая определяет имя устройства, поддерживаемого драйвером, например «HP LaserJet IIISi», если указанным принтером является Hewlett-Packard LaserJet IIISi. Каждый драйвер принтера имеет уникальную строку.

SpecVersion

Значение типа целочисленный тип данных, определяющее номер версии структуры DEVMODE в пакете Win32 Software Development Kit.

ВерсияДрайвера

Значение типа Integer, определяющее версию драйвера принтера, назначенную разработчиком драйвера принтера.

Размер

Значение типа Integer, определяющее размер в байтах структуры DEVMODE. (Это значение не включает дополнительный элемент dmDriverData для данных конкретного устройства, которые могут следовать за этой структурой.) Если приложение обрабатывает только независимую от драйвера часть данных, этот элемент можно использовать для нахождения длины данной структуры без необходимости учета разных версий.

DriverExtra

Значение типа Integer, определяющее размер в байтах дополнительного компонента dmDriverData для данных конкретного устройства, которые могут следовать за данной структурой. Если приложение не использует сведения, являющиеся специфическими для устройства, можно задать для этого компонента значение 0.

Поля

Значение типа тип данных "длинное целое", которое определяет, какие из остальных компонентов структуры DEVMODE инициализированы.

Ориентация

Значение типа Integer, определяющее ориентацию бумаги. Может быть равно либо 1 (книжная), либо 2 (альбомная).

размеры бумаги

Значение типа Integer, определяющее размер бумаги для печати. Если задать для этого компонента значение 0 или 256, длина и ширина бумаги будут определяться соответственно компонентами PaperLength и PaperWidth. В противном случае можно задать для компонента размеры бумаги заранее определенное значение.

Длина бумаги

Значение типа Integer, определяющее длину бумаги в единицах, равных 1/10 миллиметра. Данный элемент переопределяет длину бумаги, заданную элементом размеры бумаги для пользовательских размеров бумаги или для устройств, которые могут печатать на бумаге разного размера, например матричных принтеров.

Ширина бумаги

Значение типа Integer, определяющее ширину бумаги в единицах, равных 1/10 миллиметра. Этот элемент переопределяет ширину бумаги, заданную компонентом размеры бумаги.

Масштаб

Значение типа Integer, определяющее коэффициент масштабирования результата печати. Видимый размер страницы изменяется по сравнению с физическим размером страницы путем умножения на коэффициент, равный масштабу, деленному на 100. Например, бумага размером 215,9 х 279,4 мм (размер Letter) при значении масштаба 50 будет содержать столько данных, сколько страница размером 431,8 х 558,8 мм, поскольку текст и рисунки при печати будут в два раза меньше их исходной длины и ширины.

Копии

Значение типа Integer, которое определяет количество копий, печатаемых устройством, если оно поддерживает копии, включающие несколько страниц.

DefaultSource

Значение типа Integer, определяющее лоток по умолчанию, из которого подается бумага.

Разрешение

Значение типа Integer, определяющее разрешение принтера. Возможны следующие значения: –4 (высокое), –3 (среднее), –2 (низкое) и –1 (черновик).

Цвет

Значение типа Integer. Для цветных принтеров определяет необходимость печати в цвете. Возможные значения: 1 (цветная печать) и 2 (черно-белая печать).

Duplex

Значение типа Integer. Для принтера с возможностью двусторонней печати указывает, будут ли данные напечатаны на обеих сторонах бумаги. Возможные значения: 1 (односторонняя), 2 (горизонтальная) и 3 (вертикальная).

YResolution

Значение типа Integer, определяющее вертикальное разрешение принтера в точках на дюйм. Если принтер инициализирует этот компонент, компонент Разрешение PrintQuality задает горизонтальное разрешение принтера в точках на дюйм.

TTOption

Значение типа Integer, определяющее способы печати шрифтов TrueType.

разобрать по копиям

Значение типа Integer, определяющее, будет ли использоваться сортировка при печати нескольких копий. Использование несортированных копий ускоряет печать и повышает производительность принтера, поскольку данные отправляются на принтер только один раз.

Имя формы

Строка длиной не более 16 знаков, определяющая размер используемой бумаги, например «Letter» или «Legal».

Pad

Значение типа Long, используемое для заполнения пробелами, знаками или значениями для будущих версий.

Bits

Значение типа Long, определяющее цветовое разрешение дисплея в битах на точку.

PW

Значение типа Long, определяющее ширину видимой поверхности устройства (экрана или принтера) в точках.

PH

Значение типа Long, определяющее высоту видимой поверхности устройства (экрана или принтера) в точках.

DFI

Значение типа Long, определяющее режим отображения устройства.

DFR

Значение типа Long, определяющее частоту в Герцах (периодах в секунду) устройства отображения в конкретном режиме.


Примечание : Свойство PrtDevMode можно задать с помощью кода Visual Basic для приложений (VBA).

Значение данного свойства доступно для чтения и записи в режиме конструктора и режиме Макет и доступно только для чтения в других режимах.

Драйверы принтера могут добавлять данные конкретного устройства сразу после 94 байтов структуры DEVMODE. Поэтому важно, чтобы размер упомянутых выше данных DEVMODE не превышал 94 байтов.

Структуру DEVMODE используют только драйверы принтера, экспортирующие функцию ExtDeviceMode.

Приложение может извлекать размеры и наименования бумаги, поддерживаемые принтером, с помощью значений 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

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×