...Set a Printer to Duplex Mode?

Author: P. Below

Category: Printing

{
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, nilnil) <>
    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;

 

printed from
www.swissdelphicenter.ch
developers knowledge base