FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Configurando tamaño de papel en QR.
Hola foro.
Mis reportes diseñados en QR tienen tamaño de papel por defecto (QReport.Page.PageSize := 'Default'). Esto quiere decir que: Si el usuario configura tamaño oficio, pues el reporte se imprime en oficio. Si el usuario selecciona carta, el reporte se imprime en carta. Problema: Previsualizo el reporte en carta o en oficio. Presiono el botón 'Printer Setup'. Cambio el tamaño de hoja de la impresora actual. Doy click en Aceptar y no pasa nada. Es como si el tamaño no se hubiese cambiado. Intenté hacer lo siguiente: 1. Usar un componente TPrinterSetupDialog para configurar el tamaño del papel antes crear el reporte. Código:
if PrinterSetupDialog.Execute then // Crea reporte y lo previsualiza Código:
// Primero crea reporte if PrinterSetupDialog.Execute then // Previsualiza reporte Código:
QuickRep1.Tag := 0; QuickRep1.PrinterSetup; if QuickRep1.Tag = 0 Then QuickRep1.Preview; Código:
QuickRep1.Tag := 0; QuickRep1.PrinterSetup; if QuickRep1.Tag = 0 Then begin QuickRep1.ResetPageFooterSize; QuickRep1.Preview; end; Se supone que si yo cambio el tamaño del papel cuando tengo la previsualización en pantalla (con el botón 'Printer Setup') debo reconstruir el reporte? Si es así cómo lo hago? No olvidar que lo que se necesita es cambiar el tamaño del papel sin necesidad de ir por el menú Inicio. Gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#2
|
|||
|
|||
Pues en mi caso casí nunca cambiamos los tamaños de los reportes.. pues siempre se tienen un tamaña especifico para cada reporte.. pero tal vez te sirva esta pequeña rutina donde se configuran ciertas propiedades la impresora default, podrías poner una pantalla antes de llamar tu reporte donde selecciones el tamaño de papel o variarlo en base a alguna variable que indique a que tipo de papel va ese reporte.
With Printer do Begin Printer.GetPrinter(ADevice,ADriver,APort,DeviceHandle); if DeviceHandle <> 0 Then Begin DevMode := GlobalLock(DeviceHandle); //GlobalUnlock(DeviceHandle); end; with DevMode^ do begin dmFields := dmFields or DM_PAPERWIDTH; //dmPaperSize := DMPAPER_LETTER; //dmPaperWidth := 1500; dmPaperWidth := 1500; dmPaperLength := 1500; dmPaperSize := DMPAPER_USER; dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLENGTH or DM_PAPERWIDTH; end; GlobalUnlock(DeviceHandle); Printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle); end; |
#3
|
||||
|
||||
Je je... después de tanto tiempo una respuesta aún te ayuda a resolver tus problemas.
Voy a probar el código a ver qué tal... gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
|
|
|