Programación General > Delphi

 Problema Con La Api De Windows

(1/1)

megalomano:
He estado usando el siguiente código que encontré en otro foro para inicializar Printer:


--- Código: Text --- 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;  
Y había satisfecho mis propósitos, pero cuando quise cambiar el tamaño de la hoja de papel por otra que no es carta y no está definida en las constantes de la API de Windows, veo que aunque le ponga el tamaño que le ponga, no cambia nunca, siempre se queda en carta.

Así que quisiera saber si alguien ya tuvo este problema y cómo lo resolvió. O si alguien sabe cómo resolverlo.

El problema específicamente es hacer que el tamaño definido en dmPaperLength y dmPaperWidth sea usado por Printer, ya que uso Printer para obtener ciertos valores como la mitad del ancho de página, etc... que son usados por Printer.Canvas.

De antemano, Gracias.

Navegación

[0] Índice de Mensajes

Ir a la versión completa