Mega Code Archive

 
Categories / Delphi / Printing
 

Set a Printer to Duplex Mode

Title: Set a Printer to Duplex Mode? { You typically switch a printer to duplex mode by changing its TDeviceMode(API: DEVMODE)record .But first you should test whether the installed printer driver supports this: } uses printers, winspool; function PrinterSupportsDuplex: Boolean; var Device, Driver, Port: array[0..255] of Char; hDevMode: THandle; begin Printer.GetPrinter(Device, Driver, Port, hDevmode); Result := WinSpool.DeviceCapabilities(Device, Port, DC_DUPLEX, nil, nil) 0; end; {if it does you can try to switch the duplex mode on before you call richedit.print:} var Device, Driver, Port: array[0..80] of Char; DevMode: THandle; pDevmode: PDeviceMode; begin // Get printer device mode handle. Printer.GetPrinter(Device, Driver, Port, DevMode); if Devmode 0 then begin // lock it to get pointer to DEVMODE record pDevMode := GlobalLock(Devmode); if pDevmode nil then try with pDevmode^ do begin dmDuplex := DMDUP_VERTICAL; dmFields := dmFields or DM_DUPLEX; end; finally // unlock devmode handle. GlobalUnlock(Devmode); end; end; { If } end;