Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Error en printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle); (https://www.clubdelphi.com/foros/showthread.php?t=11875)

JOMABRI 28-06-2004 23:15:01

Error en printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle);
 
Hola foro,

estoy probando el codigo para el establecer le tamaño de papel para recibos y facturas, pero en la ejecucion de la linea

printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle);

Emite un mensaje de Impresion en progreso y un error de violacion de acceso a la memoria y no me imprime mi codigo con printer.canvas que hay despues de esta instruccion.


Gracias por su ayuda.

marcoszorrilla 29-06-2004 09:41:00

Para definir el tamaño de papel yo utilizo esta función y no me da ningún tipo de error:
Código Delphi [-]

procedure SetPaperSize (intAlto,intAncho : Integer);
{aqui se define el tamaño del papel}
var
   ADevice, ADriver, APort : array [0..255] of Char;
   ADeviceMode : THandle;
   DevMode : PDevMode;
begin
   with Printer do
      begin
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         SetPrinter (ADevice, ADriver, APort, 0);
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         DevMode := GlobalLock(ADeviceMode);
         if not Assigned(DevMode) then
            ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
         else
            begin
               with DevMode^ do
                  begin
                     dmPaperSize:= DMPAPER_User;
                     dmPaperLength := intAlto;
                     dmPaperWidth:= intAncho;
                     dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLength or DM_PAPERWidth;
                  end;
               GlobalUnLock(ADeviceMode);
               SetPrinter(ADevice, ADriver, APort, ADeviceMode);
           end;
      end;
end;

Ojo el tamaño se mide en 0,1 mm por ejemplo 29,7x21 quedaría:
SetPaperSize (2970,2100);

Un Saludo.


La franja horaria es GMT +2. Ahora son las 21:00:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi