Home » Tipps & Tricks » Drucker » Druckereigenschaften » Druckereinstellungen ohne Dialog ändern

Druckereinstellungen ohne Dialog ändern

Wenn man nicht den Umweg über den TPrintDialog gehen will, um Druckereigenschaften zu ändern, kann man folgende Funktion verwenden:

Procedure SetPrinterSettings;
Var
   Device, Driver, Port: Array [0..255] Of Char;
   hDevMode:             THandle;
   pDevMode:             PDeviceMode;
Begin
     Printer.GetPrinter(Device, Driver, Port, hDevmode);
     Printer.SetPrinter(Device, Driver, Port, 0);
     Printer.GetPrinter(Device, Driver, Port, hDevmode);
     If hDevmode  0 Then Begin
        pDevmode := GlobalLock(hDevmode);
        If pDevmode  NIL Then
           Try
              // Ändern der Auflösung (hier 300 dpi):
              pDevMode^.dmPrintQuality := LoWord(300);
              pDevmode^.dmYResolution  := HiWord(300);
              pDevmode^.dmFields       := pDevmode^.dmFields Or
                                          DM_PRINTQUALITY Or
                                          DM_YRESOLUTION;
              // Ändern der Papiergröße (hier A5):
              pDevMode^.dmPaperSize    := DMPAPER_A5;
              pDevmode^.dmFields       := pDevmode^.dmFields Or
                                          DM_PAPERSIZE;
           Finally
              GlobalUnlock(hDevmode);
           End;
     End;
End;

Um weitere Druckereigenschaften zu ändern, müssen nur die Eigenschaften von pDevMode geändert werden und das geänderte in dmFields reingeschrieben werden. Alle möglichen Werte stehen im MSDN unter dem Stichwort DEVMODE.

EKON 28