Свойство PrtDevMode

Применение

Объект Form

Объект Report

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

выражение.PrtDevMode

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

Примечания

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

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

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

Член

Описание

DeviceName

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

SpecVersion

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

DriverVersion

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

Size

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

DriverExtra

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

Fields

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

Orientation

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

PaperSize

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

PaperLength

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

PaperWidth

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

Scale

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

Copies

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

DefaultSource

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

PrintQuality

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

Color

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

Duplex

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

YResolution

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

TTOption

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

Collate

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

FormName

Строка длиной не более 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.

×