Impressao - setar modo duplex |
Top Previous Next |
{ 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;
|