Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Continuación A4 para Leo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Continuación A4 para Leo Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Ahí si que no puedo ayudarte. No obstante debería coger los parámetros por defecto; digo yo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.