Thursday, April 30, 2009

[Delphi] Changing Printer Paper Size


var
Device, Driver, Port: array[0..80] of Char;
DevMode: THandle;
pDevmode: PDeviceMode;
...
...
// Get printer device name etc.
Printer.GetPrinter(Device, Driver, Port, DevMode);
// force reload of DEVMODE
Printer.SetPrinter(Device, Driver, Port, 0) ;
// get DEVMODE 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
// modify paper size
DEBUG('Old dmPapersize = ' + IntToStr(dmPapersize) );

if Unit2.ActiveAccount.clPaperSize = 0 then // Letter
dmPaperSize := DMPAPER_LETTER
else
dmPapersize := DMPAPER_A4;

DEBUG('New dmPapersize = ' + IntToStr(dmPapersize) );
// tell printer driver that dmPapersize field contains
// data it needs to inspect.
dmFields := dmFields or DM_PAPERSIZE;
End;
finally
// unlock devmode handle.
GlobalUnlock( Devmode );
end;
End; { If }

source: http://www.efg2.com/Lab/Library/UseNet/2000/0314.txt

1 comment:

justin albert said...

Awesome post!!! Really enjoyed this post. But I want more information on such valuable topic .


Photocopier Repairs Braintree