Mega Code Archive

 
Categories / Delphi / Printing
 

To set a printer settings

Title: to set a printer settings Question: How can I set a some printer settings? Answer: At first, of course, you must open the printer device (as I described in previous tip " to get a printer settings"). Now you can set the any settings (supported only, of course) in properties of DevMode^ variable and add a "assigned" flag in DevMode^.dmFields. After that you need call a SetPrinter procedure and unlock device. View small example: procedure SetPrinterSettings(FPrinter: TPrinter); var FDevice: PChar; FDriver: PChar; FPort: PChar; DeviceMode: THandle; DevMode: PDeviceMode; begin {to get a current printer settings} FPrinter.GetPrinter(FDevice, FDriver, FPort, DeviceMode); {lock a printer device} DevMode := GlobalLock(DeviceMode); {set a paper size as A4-Transverse} if ((DevMode^.dmFields and DM_PAPERSIZE) = DM_PAPERSIZE) then begin DevMode^.dmFields := DevMode^.dmFields or DM_PAPERSIZE; DevMode^.dmPaperSize := DMPAPER_A4_TRANSVERSE; end; {set a paper source as Tractor bin} if ((DevMode^.dmFields and DM_DEFAULTSOURCE) = DM_DEFAULTSOURCE) then begin DevMode^.dmFields := DevMode^.dmFields or DM_DEFAULTSOURCE; DevMode^.dmDefaultSource := DMBIN_TRACTOR; end; {set a Landscape orientation} if ((DevMode^.dmFields and DM_ORIENTATION) = DM_ORIENTATION) then begin DevMode^.dmFields := DevMode^.dmFields or DM_ORIENTATION; DevMode^.dmOrientation := DMORIENT_LANDSCAPE; end; {set a printer settings} FPrinter.SetPrinter(FDevice, FDriver, FPort, DeviceMode); {unlock a device} GlobalUnlock(DeviceMode); end;