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
Ir a la versión completa