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..255of 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..80of 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