Impressao - setando tamanho papel, etc

Top  Previous  Next

uses Printers;

 

procedure SetPrinterSettings(FPrinter: TPrinter);

var

  FDevice   : PChar;

  FDriver   : PChar;

  FPort     : PChar;

  DeviceMode: THandle;

  DevMode   : PDeviceMode;

begin

  // reserva memoria para isto

  GetMem(fDevice, cchDeviceName);

  GetMem(fDriver, MAX_PATH);

  GetMem(fPort, MAX_PATH);

 

  // 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); // É ESTA QUE MODIFICA CONFIG

 

  // unlock a device

  GlobalUnlock(DeviceMode);

 

  // Free mem

  FreeMem(fDevice, cchDeviceName);

  FreeMem(fDriver, MAX_PATH);

  FreeMem(fPort, MAX_PATH);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  SetPrinterSettings( Printers.Printer );

end;

.