var ADevice, ADriver, APort: array [0..255] of Char; DeviceHandle: THandle; DevMode: PDeviceMode; // A Pointer to a TDeviceMode structure begin { First obtain a handle to the TPrinter’s DeviceMode structure } Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle); { If DeviceHandle is still 0, then the driver was not loaded. Set the printer index to force the printer driver to load making the handle available } if DeviceHandle = 0 then begin Printer.PrinterIndex := Printer.PrinterIndex; Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle); end; { If DeviceHandle is still 0, then an error has occurred. Otherwise, use GlobalLock() to get a pointer to the TDeviceMode structure } if DeviceHandle = 0 then Raise Exception.Create(‘Could Not Initialize TDeviceMode structure’) else DevMode := GlobalLock(DeviceHandle); { Code to use the DevMode structure goes here } { !!!! } if not DeviceHandle = 0 then GlobalUnlock(DeviceHandle); end;
Hvis du bruger dette, så har du en handle til printeren i DevMode. Der hvor du har { !!!! }, skulle du nu kunne bruge følgende :
with DevMode^ do begin dmFields := dmFields or DM_PAPERSIZE; dmPaperSize := DMPAPER_LETTER; // Letter, 8-1/2 by 11 inches end;
Kig i hjælpen under TDeviceMode for at finde andre standard papirstørelser en DMPAPER_LETTER.
Jeg ved ikke om det hjælper dig, jeg har selv haft svært ved at få det til at virke.
Kan du ikke prøvwe at lave et breakpoint på linien med GetPrinter og derefter trace dig frem til hvilken linie det det går galt i ??
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.