Druckereinstellungen ohne Dialog ändern |
|
| Autor | Benjamin Desef |
|---|---|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.04.2011 |
Wenn man nicht den Umweg über den TPrintDialog gehen will, um Druckereigenschaften zu ändern, kann man folgende Funktion verwenden:
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.