Author: Embarcadero USA
Question and Answer Database FAQ603D.txt - Changing the papersize of a print job. Category :Printing Platform :All-32Bit Product : Question: How can I change the papersize of my print job? Answer: One way to change printer settings at the start of a print job is to change the printer's devicemode structure. See: TDEVMODE in the Delphi 1.02 help file or DEVMODE in the Delphi 2.01 help file for other settings you can change (providing the print driver supports the change). The following example, contains code to change the papersize and the paper bin that is used: procedure TForm1.Button1Click(Sender: TObject); var Device : array[0..255] of char; Driver : array[0..255] of char; Port : array[0..255] of char; hDMode : THandle; PDMode : PDEVMODE; begin Printer.PrinterIndex := Printer.PrinterIndex; Printer.GetPrinter(Device, Driver, Port, hDMode); if hDMode <> 0 then begin pDMode := GlobalLock(hDMode); if pDMode <> nil then begin {Set to legal} pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize; pDMode^.dmPaperSize := DMPAPER_LEGAL; {Set to custom size} pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH; pDMode^.dmPaperSize := DMPAPER_USER; pDMode^.dmPaperWidth := 100 {SomeValueInTenthsOfAMillimeter}; pDMode^.dmPaperLength := 100 {SomeValueInTenthsOfAMillimeter}; {Set the bin to use} pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL; pDMode^.dmDefaultSource := DMBIN_MANUAL; GlobalUnlock(hDMode); end; end; Printer.PrinterIndex := Printer.PrinterIndex; Printer.BeginDoc; Printer.Canvas.TextOut(100,100, 'Test 1'); Printer.EndDoc; end; 4/2/99 11:21:00 AM
Article originally contributed by