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.