This text file contains details regarding both the PrtDevMode and PrtDevNames properties.
Posted by Kim Abercrombie 70761,650  Microsoft Access PSS


PrtDevMode Property

Description
Sets or returns the device mode information specified for a datasheet, form, report, or module in 
its Print Setup dialog box.

Setting
The PrtDevMode property setting is a 64-byte structure that mirrors the DEVMODE structure defined 
in the Microsoft Windows Software Development Kit (SDK).  The PrtDevMode property has the following 
members.

Member	Description

DeviceName: A 32-character string that specifies the name of the device the driver supports 
for example, "HP LaserJet IIISi" in the case of the Hewlett-Packard LaserJet IIISi.  Each driver 
has a unique string.

SpecVersion: An Integer that specifies the version number of the DEVMODE structure in the SDK.  
For Microsoft Windows version 3.1, this value should be 0x30A.

DriverVersion: An Integer that specifies the printer driver version number assigned by the 
printer driver developer.

Size: An Integer that specifies the size, in bytes, of the DEVMODE structure.  (This value doesn't 
include the optional dmDriverData member for device-specific data, which can follow this structure.)  
If an application manipulates only the driver-independent portion of the data, you can use this member 
to find out the length of this structure without having to account for different versions.

DriverExtra: An Integer that specifies the size, in bytes, of the optional dmDriverData member for 
device-specific data, which can follow this structure.  If an application doesn't use device-specific 
information, you should set this member to 0.

Fields: A Long value that specifies which of the remaining members in the DEVMODE structure have been 
initialized.  It can be any combination of specific constants or none of them.  For available constants, 
see the "Constants for the Fields Member" below.

Orientation: An Integer that specifies the orientation of the paper.  It can be either 1 (portrait) 
or 2 (landscape).

PaperSize: An Integer that specifies the size of the paper to print on.  You can set this member to 
0 if the length and width of the paper are specified by the PaperLength and PaperWidth members, 
respectively.  Otherwise, you can set the PaperSize member to a predefined value.  For available 
values, see the "Values for the PaperSize Member" below.

PaperLength: An Integer that specifies the paper length in tenths of a millimeter.  This member 
overrides the paper length specified by the PaperSize member, either for custom paper sizes or for 
devices such as dot-matrix printers that can print on a variety of paper sizes.

PaperWidth: An Integer that specifies the paper width in tenths of a millimeter.  This member 
overrides the paper width specified by the PaperSize member.

Scale: An Integer that specifies the factor by which the printed output is to be scaled.  The 
apparent page size is scaled from the physical page size by a factor of Scale/100.  For example, 
a letter-size paper with a Scale value of 50 would contain as much data as a page measuring 17 by 
22 inches because the output text and graphics would be half their original height and width.

Copies: An Integer that specifies the number of copies printed if the printing device supports 
multiple-page copies.

DefaultSource: An Integer that specifies the default bin from which the paper is fed.  For available 
values, see the "Values for the DefaultSource Member" below.

PrintQuality: An Integer that specifies the printer resolution.  See the "Values for the PrintQuality 
Member" below.

Color: An Integer.  For a color printer, specifies whether the output is printed in color.  For 
available values, see the "Values for the Color Member" below.

Duplex: An Integer.  For a printer capable of duplex printing, specifies whether the output is printed 
on both sides of the paper.  For available values, see the "Values for the Duplex Member" below.

YResolution: An Integer that Specifies the y-resolution of the printer in dots per inch.  If the printer 
initializes this member, the PrintQuality member specifies the x-resolution of the printer in dots per inch.

TTOption: An Integer that Specifies how TrueType fonts should be printed.  For available values, see the 
"Values for the TTOption Member" below.

Use a macro or an event procedure to set the PrtDevMode property.  

Usage
This property setting is read/write in Design and read-only in other views.

Remarks
Only drivers that are fully updated for Windows version 3.0 and later and that export the ExtDeviceMode 
function use the DEVMODE structure.
An application can retrieve the paper sizes and names supported by a printer by calling the 
DeviceCapabilities function with the DC_PAPERS, DC_PAPERSIZE, and DC_PAPERNAMES values.

Before setting the value of the dmTTOption member, applications should find out how a printer driver 
can use TrueType fonts by calling the DeviceCapabilities function with the DC_TRUETYPE value.

Drivers can add device-specific data immediately following the DEVMODE structure.


Constants for the Fields Member

A printer driver supports only those members that are appropriate for the printer technology.
Constant	Value

DM_ORIENTATION   &H0000001
DM_PAPERSIZE     &H0000002
DM_PAPERLENGTH   &H0000004
DM_PAPERWIDTH    &H0000008
DM_SCALE         &H0000010
DM_COPIES        &H0000100
DM_DEFAULTSOURCE &H0000200
DM_PRINTQUALITY  &H0000400
DM_COLOR         &H0000800
DM_DUPLEX        &H0001000
DM_YRESOLUTION   &H0002000
DM_TTOPTION      &H0004000


Values for the PaperSize Member

Value	Paper size

1	Letter (8.5 x 11 in.)
2	Letter Small (8.5 x 11 in.)
3	Tabloid (11 x 17 in.)
4	Ledger (17 x 11 in.)
5	Legal (8.5 x 14 in.)
6	Statement (5.5 x 8.5 in.)
7	Executive (7.25 x 10.5 in.) 
8	A3 (297 x 420 mm)
9	A4 (210 x 297 mm)
10	A4 Small (210 x 297 mm)
11	A5 (148 x 210 mm)
12	B4 (250 x 354)
13	B5 (182 x 257 mm)
14	Folio (8.5 x 13 in.)
15	Quarto (215 x 275 mm)
16	11 x 17 in.
18	Note (8.5 x 11 in.) 
19	Envelope #9 (3.875 x 8.875 in.)
20	Envelope #10 (4.125 x 9.5 in.)
21	Envelope #11 (4.5 x 10.375 in.)
22	Envelope #12 (4.25 x 11 in.)
23	Envelope #14 (5 x 11.5 in.)
24	C size sheet (17 x 22 in.)
25	D size sheet (22 x 34 in.)
26	E size sheet (34 x 44 in.)
27	Envelope DL (110 x 220 mm)
28	Envelope C5 (162 x 229 mm)
29	Envelope C3 (324 x 458 mm) 
30	Envelope C4 (229 x 324 mm) 
31	Envelope C6 (114 x 162 mm) 
32	Envelope C65 (114 x 229 mm) 
33	Envelope B4 (250 x 353 mm) 
34	Envelope B5 (176 x 250 mm 
35	Envelope B6 (176 x 125 mm) 
36	Envelope (110 x 230 mm) 
37	Envelope Monarch (3.875 x 7.5 in.)
38	6-3/4 Envelope (3.625 x 6.5 in.)
39	US Std Fanfold (14.875 x 11 in.)
40	German Std Fanfold (8.5 x 12 in.)
41	German Legal Fanfold (8.5 x 13 in.)
256	User-defined


Values for the DefaultSource Member

Value	Meaning

1	Upper or only one bin 
2	Lower bin
3	Middle bin
4	Manual bin
5	Envelope bin
6	Envelope manual bin
7	Automatic bin
8	Tractor bin
9	Small-format bin
10	Large-format bin
11	Large-capacity bin
14	Cassette bin
256	Device-specific bins start here


Values for the PrintQuality Member

Value	Resolution

-4	High
-3	Medium
-2	Low 
-1	Draft


Values for the Color Member

Value	Meaning

1	Color
2	Monochrome


Values for the Duplex Member

Value	Meaning

1	Simplex
2	Horizontal
3	Vertical


Values for the TTOption Member

Value	Meaning

1	Print TrueType fonts as graphics.  This is the default action for 
        dot-matrix printers.
2	Download TrueType fonts as soft fonts.  This is the default action 
        for Hewlett-Packard printers that use Printer Control Language 
        (PCL).
3	Substitute device fonts for TrueType fonts.  This is the default 
        action for PostScript printers.


PrtDevMode Property Example 1

This example shows how to enable a user to specify the number of copies to print for a report.  
The Wizard.MDA file must be loaded when you use this function.

Function SetCopies (MyReport As String, Copies As Integer)
	Dim dm As zwtDevModeStr	' Structures defined in zwAllGlobals 
                              ' module in Wizard.MDA.
	Dim DevMode As zwtDeviceMode
	Reports(MyReport).Painting = False
	DoCmd OpenReport MyReport, A_DESIGN
	If Not IsNull(Reports(MyReport).PrtDevMode) Then
		dm.rgb = Reports(MyReport).PrtDevMode
		LSet DevMode = dm
		DevMode.dmCopies = Copies
		LSet dm = DevMode
		Reports(MyReport).PrtDevMode = dm.rgb
		DoCmd SetWarnings False
		DoCmd DoMenuItem 7, A_FILE, 2 
		DoCmd Close A_REPORT, MyReport
		DoCmd SetWarnings True
	End If
	Reports(MyReport).Painting = True
End Function


PrtDevMode Property Example 2

This example shows how to set the paper size for a report.   The Wizard.MDA file must be loaded 
when you use this function.

Sub SetPaperSize (MyReport As String, MyPaperSize As Integer)
	Dim dm As zwtDevModeStr	' Structures defined in zwAllGlobals 
                              ' module in Wizard.MDA.
	Dim DevMode As zwtDeviceMode
	Reports(MyReport).Painting = False
	DoCmd OpenReport MyReport, A_DESIGN
	If Not IsNull(Reports(MyReport).PrtDevMode) Then
		dm.rgb = Reports(MyReport).PrtDevMode
		LSet DevMode = dm
		DevMode.dmPaperSize = MyPaperSize
		LSet dm = DevMode
		Reports(MyReport).PrtDevMode = dm.rgb
		DoCmd SetWarnings False
		DoCmd DoMenuItem 7, A_FILE, 2 
		DoCmd Close A_REPORT, MyReport
		DoCmd SetWarnings True
		
	End If
	Reports(MyReport).Painting = True
End Sub

The PrtDevMode information is documented in the "Secrets of Access Wizards" available with the Microsoft 
Access Distribution Kit (ADK).
The manual is also available from Customer Service 1-800-426-9400, 
part #077-050-039 for $9.95.
================================================================

PrtDevNames Property

Description
Sets or returns information about the selected printer.

Setting
The PrtDevNames property is a variable-length structure that mirrors the DEVNAMES structure defined in the 
Microsoft Windows Software Development Kit.  This structure is composed of the following members.

Member     Description

DriverOffset: Specifies the offset from the beginning of the structure to a null-terminated 
string that specifies the filename (without an extension) of the device driver.  This string is 
used to set which printer is initially displayed in the dialog box.

DeviceOffset: Specifies the offset from the beginning of the structure to the null-terminated 
string that specifies the name of the device.  This string cannot exceed 32 bytes in length, including 
the null character, and must be identical to the DeviceName member of the DEVMODE structure.  You can 
determine the driver name and device name by looking at the [DEVICES] section of the WIN.INI file.

OutputOffset: Specifies the offset from the beginning of the structure to the null-terminated string 
that specifies the MS-DOS device name for the physical output medium (output port); for example, "LPT1:".

Default: Specifies whether the strings specified in the DEVNAMES structure identify the default printer.  
On input, if Default is set to 1 and all of the values in the DEVNAMES structure match the current default 
printer, the selected printer will be set to the default printer.  On output, Default is set to 1 if the 
current default printer has been selected.

Remarks:
Microsoft Access uses the DEVNAMES structure to initialize the print setup dialog box.  When you choose 
the OK button to close the dialog box, information about the selected printer is returned in the PrtDevNames 
property.

You can't change the PrtDevNames setting without changing the PrtDevMode setting to your current printer
settings.  Some Windows printer drivers assume that the PrtDevMode was created by that driver.  If you 
select a different printer driver in the PrtDevNames structure without changing the PrtDevMode structure, 
Access will pass the old PrtDevMode structure to the new printer driver.  This may cause the printer 
driver to operate incorrectly and could cause Application Errors.

An example of using both the PrtDevNames stucture and the PrtDevMode structure is not available at this
time.  Best to refer to the Windows Software Developers Kit, SDK for more information.

The PrtDevNames information will be documented in a future release of Microsoft Access.
======================================================================
