| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Lun 30 Abr, 2018 12:06 pm Asunto: Continuación A4 para Leo |
|
|
Leo...
Sigue igual... y con en el error de la misma dirección de memoria (0065FDCE y 00000048)
Como es un fallo de acceso a dirección de memoria es difícil localizar el posible problema.
Entonces y visto que no puedo solucionar el problema, he optado por utilizar la función para leer en el REGISTRO varios valores REG_MULTI_SZ , utilizaré varias entradas para consolidar la lectura de forma más eficaz.
La función de localizar la IMPRESORA PREDETERMINADA DE WINDOWS y consultar si es A4, la necesito por lo siguiente:
EXPLICACIÓN del por qué necesito saber si es A4:
Resulta que mi programa que es un TPV, funciona normalmente con impresoras MiniPrinter con formato de impresión de ROLLO, no de hojas sueltas.
Pues bien, el cliente puede optar por EXPORTAR cualquier INFORME de a PDF y dicha función la tengo implementada sin el más mínimo problema.
Solo hay un pequeño problema y es que por alguna razón la función que contrala el PDF consulta la impresora PREDETERMINADA DE WINDOWS, y si esta no contempla el salto de página solo se EXPORTA LA PRIMERA PAGINA del INFORME, no haciendo caso del resto. Esto es porque si la IMPRESORA PREDETERMINADA DE WINDOWS, es la IMPRESORA que el cliente utiliza para Imprimir los TICKETS, entonces ésta no tiene SALTO DE PAGINA (Imprime de forma continua todo hasta que termina el documento independientemente de las paginas que tenga dicho documento).
De lo dicho, resulta que el filtro PDF, cuando finaliza la primera pagina, finaliza la exportación. Por supueto el informe y al filtro se le configura la propiedad antes de la exportación para que lo exporte en A4
Si el filtro tiene alguna propiedad para solucionar esto, lo ignoro.
| Código: |
// Creo el Filtro
TQRPDFDocumentFilter* Filtro = new TQRPDFDocumentFilter(Fichero);
Filtro->Concatenating = true; // Inicializa Filtro
frmImprimirCajaA4->Tiquet->ExportToFilter(Filtro); // Exporta el Informe
Filtro->EndConcat(); // Terminar el proceso de Recibir Informe
delete Filtro; // Destruyo el Filtro
|
CORRIJO:
No imprime solo la primera PAGINA sino que imprime una pagina cada 12,3 páginas.
Valla, curiosidades de la vida...
He realizado otras pruebas con el OBJETO "TQRPDFDocumentFilter"
y he probado a darle valor a la única propiead que he encontrado:
| Código: |
TQRPDFDocumentFilter* Filtro = new TQRPDFDocumentFilter(Fichero);
Filtro->PageLength = 11;//NUEVA PROPIEDAD ASIGNADA
Filtro->Concatenating = true; // Inicializa Filtro
//Antes de Imprimir para saber el numero de paginas que se imprimiran
frmImpresionAcumulado->Tiquet->Prepare();
frmImpresionAcumulado->QRLNumPag->Caption = frmImpresionAcumulado->Tiquet->QRPrinter->PageCount;
frmImpresionAcumulado->QRLNumPagT->Caption = frmImpresionAcumulado->Tiquet->QRPrinter->PageCount;
frmImpresionAcumulado->Tiquet->ExportToFilter(Filtro); // Exporta el Informe
Filtro->EndConcat(); // Terminar el proceso de Recibir Informe
delete Filtro; // Destruyo el Filtro
|
FUNCIONA, pero estoy confuso:
En la linea "Filtro->PageLength = 11;"
Que es la única propiedad que he encontrado es una propiedad "int" pero parece ser que espera un valor en PULGADAS y no en Milimetros y parece que este valor si no se da EXPRESAMENTE lo coje de la impresora predeterminada de Windows, pero tambíen parece que si dicha impresora no contiene la propiedad LENGTH coje otro valor pero en milimetros y no hace la conversión.
Ejemplo:
coje el valor 291/350mm que son los valores de corte automático de las impresoras MiniPrinter y se la pasa a la propiedad de esta forma:
Filtro->PageLength = 291;
Filtro->PageLength = 350;
Pero claro!!! le pasa milimetros en lugar de PULGADAS y el resultado es que todo el contenido de cada pagina de va desde 11 a 291/350 se pierde y no aparece en el informe.
Es curioso y he realizado muchas pruebas y en un INFORME REAL de 123 paginas solo me exporta 10 y más curioso aún es que los ficheros resultado son casi iguales: Con 123 paginas: 2.878KB y con 10 paginas 2.810KB.
Parece que el resto el exportador se ve afectado en algún punto por la propiedad Filtro->PageLength
...y ahora la pregunta del millón...
Si Filtro->PageLength está esperando un VALOR ENTERO, como le paso el valor alto de pagina A4 en pulgadas que son respectivamente 297mm y 11,6929134 pulgadas????
POSDATA:
Que desastre!!!
Ahora ya no hace ni caso de Filtro->PageLength = 11;
Lo ÚNICO que me queda claro es que cuando WINDOWS tiene una IMPRESORA PREDETERMINADA A4 todo es PERFECTO. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 03 May, 2018 8:59 am Asunto: |
|
|
| JesúsGandia escribió: | En la linea "Filtro->PageLength = 11;"
Que es la única propiedad que he encontrado es una propiedad "int" pero parece ser que espera un valor en PULGADAS |
Por desgracia es así: las medidas estándar del papel se dan en pulgadas. De está forma un formato DIN A4 son 11 pulgadas.
Demos otra vuelta de tuerca. Una pulgada son 25,4 mm. y un papel DIN A4 mide 297 mm; por lo tanto son realmente 11,69 pulgadas. ¡Misterios de los sajones!
Una cosa: a mi la exportación a PDF no me da ningún problema independientemente del número de páginas que tenga el informe a imprimir. Y uso prácticamente el mismo código que has puesto. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Jue 03 May, 2018 1:26 pm Asunto: |
|
|
Pon una Impresora MiniPrinter de TICKETS como PREDETERMINA en Windows y entonces me cuentas. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 03 May, 2018 8:52 pm Asunto: |
|
|
Lo siento, hace mucho que no trabajo con el QuickReport, y de las versiones que tengo instaladas en este momento solo lo tengo en el BCB6 pero es la versión que trae de fábrica.
De todas formas, tiene pinta de ser algún error del QuickReport, has mirado a ver si tienen algún parche o actualización? o probando a cambiar de impresora antes de lanzar según que listados.. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 04 May, 2018 8:54 am Asunto: |
|
|
| _Leo escribió: | | De todas formas, tiene pinta de ser algún error del QuickReport, has mirado a ver si tienen algún parche o actualización? o probando a cambiar de impresora antes de lanzar según que listados.. |
Jesús: No sé con que versión de Builder estás trabajando. Para BCB 6 te puedo pasar un parche que hay para el QR, el QR362ProfCB6. ¿Te hace falta? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Vie 04 May, 2018 9:34 am Asunto: |
|
|
Gracias a los dos, tengo el QR comprado y siempre actualizado.
Este proceso viene siendo así desde la versión del año 2005.
Como digo solo sucede esto cuando Windows tiene una impresora PREDETERMINADA MiniPrinter de ROLLOS de papel y 80mm/58mm ancho papel.
No pasa nada. Lo solucioné avisando al USUARIO de este hecho.
El problema de los USUARIOS de Hostelería es que ellos Instalan la IMPRESORA DE TICKETS y Windows siempre o casi siempre cuando instalas tu última impresora te la pone por defecto como PREDETERMINADA.
Y para colmo, ahora con la versión nueva de WINDWOS 10, este hecho toma otro punto de locura, ya que ahora Windows viene por defecto configurado para que la última impresora que utilizaste para imprimir, él te la pone como PREDETERMINADA. Dicha opción se puede desactivar, pero ese hecho no es la cuestión. Dile a un usuario eso que la mayoría no sabe ni lo que es el PANEL DE CONTROL DE WINDOWS.
En fin, gracias, ya solucione lo de la impresora PREDETERMINADA gracias a Leo... por cierto... no se lo viste, pero en otro post te escribí que el primer código me funcionó desactivando para esa función las Optimatizaciones. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Vie 04 May, 2018 6:58 pm Asunto: |
|
|
| Angel escribió: | | _Leo escribió: | | De todas formas, tiene pinta de ser algún error del QuickReport, has mirado a ver si tienen algún parche o actualización? o probando a cambiar de impresora antes de lanzar según que listados.. |
Jesús: No sé con que versión de Builder estás trabajando. Para BCB 6 te puedo pasar un parche que hay para el QR, el QR362ProfCB6. ¿Te hace falta? |
Tengo la versión 5.05.2 de QR comprada y no puedo poner otra versión porque necesitaria actualizar el Builder 2010.
Ya he comprobado que es un error del QR que está solucionado en la versión 6.
De todas formas con la ayuda de Leo, ya solucioné el problema. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 04 May, 2018 9:38 pm Asunto: |
|
|
Si, vi lo del problema con las optimizaciones, tenía que ser algo de eso, ya que yo siempre pruebo las cosas como mínimo en un par de versiones, alguna vieja y alguna nueva y cuando son cosas que pueden depender de la versión de Windows muchas veces hago una prueba rápida en distintas versiones de Windows..
No sé si viste la segunda opción, la ventaja de la segunda que puse es que si mientras tienes abierto el programa se hacen cambios en las impresoras este los recoge. No sé si también dará el mismo problema con las optimizaciones, pero seguramente es algo más concreto de la versión 2010:
https://cppbuilder.es/viewtopic.php?p=47651#47651
(Es mejor continuar un tema en el mismo hilo, más que nada por si a alguien le puede ser útil en el futuro... y mejor poner algún título descriptivo y no dirigirlo a una persona concreta, con eso limitas a que otra persona pueda responderte. Aunque supongo que por aquí ya no quedamos muchos..) |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Sab 05 May, 2018 1:09 pm Asunto: |
|
|
Gracias por la observación en cuanto al segundo código y también gracias por la aclaración de los post y sus hilos.
Lo hice por inercia, pero tienes toda la razón. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|