Dotyczy
|
Obiekt Form |
|
Obiekt Report |
Właściwość PrtDevMode służy do ustawiania lub zwracania informacji o trybie urządzenia drukującego, które zostało określone dla formularza lub raportu w oknie dialogowym Drukowanie. Właściwość od odczytu i zapisu typu Variant (wariant).
wyrażenie.PrtDevMode
wyrażenie Argument wymagany. Wyrażenie zwracające jeden z obiektów na liście Dotyczy.
Spostrzeżenia
Zaleca się skorzystanie z zestawu Win32 Software Development Kit, w którym znajduje się pełna dokumentacja właściwości PrtDevMode, PrtDevNames i PrtMip.
Wartość właściwości PrtDevMode jest 94-bajtową strukturą odwzorowującą strukturę DEVMODE zdefiniowaną w zestawie Win32 Software Development Kit. Pełne informacje o elementach członkowskich właściwości PrtDevMode można znaleźć w zestawie Win32 Software Development Kit.
Właściwość PrtDevMode składa się z następujących elementów członkowskich.
|
Element członkowski |
Opis |
|
DeviceName |
Jest to ciąg o maksymalnej długości 32 bajtów, określający nazwę urządzenia obsługiwanego przez sterownik, na przykład „HP LaserJet IIISi” w wypadku drukarki Hewlett-Packard LaserJet IIISi. Każdy sterownik drukarki ma niepowtarzalny ciąg identyfikacyjny. |
|
SpecVersion |
Liczba całkowita, określająca numer wersji struktury DEVMODE w zestawie Win32 Software Development Kit. |
|
DriverVersion |
Liczba całkowita określająca numer wersji sterownika drukarki przypisany przez twórcę tego sterownika. |
|
Size |
Liczba całkowita zawierająca wyrażony w bajtach rozmiar struktury DEVMODE. (Ta wartość nie obejmuje opcjonalnego elementu członkowskiego dmDriverData dotyczącego danych specyficznych dla urządzenia, który może wystąpić za tą strukturą). Jeśli aplikacja operuje jedynie na części danych niezależnej od sterownika, można posłużyć się tym elementem do określenia długości tej struktury bez konieczności brania pod uwagę różnych wersji sterowników. |
|
DriverExtra |
Liczba całkowita zawierająca wyrażony w bajtach rozmiar opcjonalnego elementu członkowskiego dmDriverData dotyczącego danych specyficznych dla urządzenia, który może wystąpić za tą strukturą. Jeśli aplikacja nie używa informacji specyficznych dla urządzenia, ten element otrzymuje wartość 0. |
|
Fields |
Liczba długa określająca pozostałe elementy członkowskie w strukturze DEVMODE, które zostały zainicjowane. |
|
Orientation |
Liczba całkowita określająca orientację papieru. Może wynosić 1 (pionowa) lub 2 (pozioma). |
|
PaperSize |
Liczba całkowita określająca rozmiar papieru do drukowania. Jeśli ten element członkowski zostanie ustawiony na 0 lub 256, długość i szerokość papieru będą określone odpowiednio przez elementy PaperLength i PaperWidth. W przeciwnym razie elementowi PaperSize można przypisać predefiniowaną wartość. |
|
PaperLength |
Liczba całkowita określająca długość papieru w jednostkach 1/10 milimetra. Ten element członkowski zastępuje długość papieru określoną w elemencie PaperSize dla niestandardowych rozmiarów papieru lub dla urządzeń, takich jak drukarka igłowa, które mogą drukować na papierach o różnych rozmiarach. |
|
PaperWidth |
Liczba całkowita określająca szerokość papieru w jednostkach 1/10 milimetra. Ten element członkowski zastępuje szerokość papieru określoną w elemencie PaperSize. |
|
Scale |
Liczba całkowita określająca współczynnik skalowania wydruku. Rzeczywisty rozmiar papieru jest skalowany według współczynnika Scale/100. Na przykład kartka o wymiarach 8,5 na 11 cali (format Letter) z wartością Scale równą 50 może pomieścić tyle danych, co strona o wymiarach 17 na 22 cale, ponieważ wysokość i szerokość tekstu oraz grafiki na wydruku będą dwukrotnie mniejsze niż normalnie. |
|
Copies |
Liczba całkowita określająca liczbę kopii, jeśli urządzenie drukujące obsługuje wydruk wielu kopii strony. |
|
DefaultSource |
Liczba całkowita określająca domyślny pojemnik, z którego jest pobierany papier. |
|
PrintQuality |
Liczba całkowita określająca rozdzielczość drukarki. Dopuszczalne wartości to: -4 (wysoka), -3 (średnia), -2 (niska) i -1 (robocza). |
|
Color |
Liczba całkowita. W przypadku drukarek kolorowych określa, czy dane wyjściowe będą drukowane w kolorze. Dopuszczalne wartości to: 1 (wydruk kolorowy) i 2 (wydruk monochromatyczny). |
|
Duplex |
Liczba całkowita. W przypadku drukarek z możliwością wydruku dwustronnego określa, czy dane wyjściowe będą drukowane na obu stronach papieru. Dopuszczalne wartości to: 1 (wydruk jednostronny), 2 (wydruk poziomy) i 3 (wydruk pionowy). |
|
YResolution |
Liczba całkowita określająca rozdzielczość osi y drukarki, wyrażoną w punktach na cal (dpi). Jeśli drukarka inicjuje ten element członkowski, wówczas wartość PrintQuality określa rozdzielczość osi x drukarki, również wyrażoną w punktach na cal. |
|
TTOption |
Liczba całkowita określająca sposób wydruku czcionek TrueType. |
|
Collate |
Liczba całkowita określająca, czy podczas wydruku wielu kopii są one sortowane. Jeśli sortowanie kopii jest wyłączone, wydruk przebiega szybciej, ponieważ dane są wysyłane do drukarki tylko raz. |
|
FormName |
Ciąg składający się z maksymalnie 16 znaków, określający rozmiar używanego papieru, na przykład „Letter” lub „A4”. |
|
Pad |
Liczba długa, która jest używana do wypełniania spacjami, znakami lub wartościami. Przeznaczona do przyszłych zastosowań. |
|
Bits |
Liczba długa zawierająca wyrażoną w bitach na piksel rozdzielczość kolorów urządzenia drukującego. |
|
PW |
Liczba długa zawierająca wyrażoną w pikselach szerokość widocznej powierzchni urządzenia (ekranu lub drukarki). |
|
PH |
Liczba długa zawierająca wyrażoną w pikselach wysokość widocznej powierzchni urządzenia (ekranu lub drukarki). |
|
DFI |
Liczba długa określająca tryb wyświetlania urządzenia. |
|
DFR |
Liczba długa zawierająca wyrażoną w Hz (liczbie cyklów na sekundę) częstotliwość urządzenia wyświetlającego w określonym trybie. |
Uwaga: Właściwość PrtDevMode można ustawiać przy użyciu kodu w języku Visual Basic for Applications (VBA).
Ta właściwość jest dostępna do odczytu i zapisu w widoku projektu lub układu oraz tylko do odczytu w pozostałych widokach.
Urządzenia drukujące mogą dodawać dane specyficzne dla urządzenia zaraz za 94 bajtami struktury DEVMODE. Z tego względu ważne jest, aby wymienione powyżej dane struktury DEVMODE nie przekroczyły 94 bajtów.
Struktury DEVMODE używają jedynie drukarki eksportujące funkcję ExtDeviceMode.
Aplikacja może pobrać rozmiary papieru oraz nazwy obsługiwane przez drukarkę z wartości DC_PAPERS, DC_PAPERSIZE i DC_PAPERNAMES przekazanych w wywołaniu funkcji DeviceCapabilities.
Przed ustawieniem wartości elementu TTOption aplikacja powinna stwierdzić, w jaki sposób sterownik drukarki korzysta z czcionek True Type. W tym celu należy wywołać funkcję DeviceCapabilities z wartością DC_TRUETYPE.
Przykład
W poniższym przykładzie pokazano użycie właściwości PrtDevMode do sprawdzania rozmiaru strony raportu zdefiniowanej przez użytkownika:
Private Type str_DEVMODE RGB As String * 94End TypePrivate 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 LongEnd TypePublic 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 = NothingEnd Sub
W tym przykładzie pokazano, jak zmieniać orientację raportu. W tym przypadku orientacja zostanie przełączona z pionowej na poziomą lub odwrotnie — w zależności od bieżącej orientacji raportu.
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 = NothingEnd Sub