Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
FastReport y códigos de barras

Hola a todos.

Estoy con D7 y FastReport 4. El caso es que imprimo etiquetas con códigos de barras (EAN 128) y me está pasando que algunos usuarios aumenta el tamaño del texto de la pantalla (en personalización de pantalla del panel de control) y, cuando hacen esto, el código de barras se me reduce en tamaño en el porcentaje en que la fuente aumente, se queda mucho mas pequeño y los lectores no reconocen el EAN.

¿Les ha pasado y han sabido como solucionarlo? Se me ha ocurrido tocar el ZOOM y el HEIGHT para proporcionar la salida, pero me obliga a hacerlo por cada usuario que maneja el programa.

Gracias y un saludo.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #2  
Antiguo 13-03-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Leen con el escaner de la pantalla?
Responder Con Cita
  #3  
Antiguo 14-03-2019
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Si...como leen el código de barras...desde la pantalla??. El caso es que ya impreso no importa si es chico o grande la fuente...lo importante es que las barras estén legibles en el papel....
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #4  
Antiguo 14-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Gracias por vuestro interés. Si configuro el tamaño del texto en pantalla está al 100%, el EAN128C que se imprime con la cadena "LGU0000036129ACO" aparece en una longitud de 58 mm. Si se pone el texto en pantalla aun tamaño de 175%, la longitud del EAN impreso es de 37 mm con la mitad de la altura. La cadena se imprime en una etiqueta de 65x25mm que luego se pega en un documento (un albarán de compra en este caso). Se escanea y tenemos un programa que localiza el EAN y es capaz de asociar el documento escaneado al registro 36.219 del fichero ALB_COMPRA. El problema es que al imprimirse el código de barras en apenas 3 cm, tendría que escanear con una resolución altísima para que el reconocedor lea el código de barras. Escaneando a 300 dpi no da calidad suficiente para reconocer, y con las pistolas laser de código de barras también le cuesta leerlo, aunque no es el objetivo usarlo para eso.

No puedo controlar el tamaño en fuente de cada usuario se pone en su terminal, he tirado la toalla, porque por más que lo comunico y configuro al 100%, a los dos días vuelve a estar cambiado al 175%.

Gracias de nuevo.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #5  
Antiguo 14-03-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero qué tiene que ver la pantalla con el papel?
En la pantalla no necesitas poner nada.
Responder Con Cita
  #6  
Antiguo 14-03-2019
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 229
Poder: 17
WHILENOTEOF Va camino a la fama
Hola, yo tampoco le encuentro mucha lógica a que la resolución de la pantalla afecte a lo que se imprima, por lo que es posible que FastReport haya introducido algo de la resolución de la pantalla (dpi) en el código de impresión. Yo recientemente tuve que ajustar algunas pantallas de un programa para que se vieran bien cuando el usuario ampliaba a 125% ó 150%, cada TForm de Delphi tiene una propiedad scaled que por defecto está a true, si esto es así, si el usuario trabaja a 125%, lo que hace Delphi es escalar los controles y tamaño de letras para adaptarlo a esa resolución, pero el resultado no era bueno. Lo que hago es poner la propiedad Scaled:= false (no quiero que Delphi escale el formulario) y chequeo si la propiedad PixelsPerInch es distinta de 96 (96 = 100%), si es así yo escalo las fuentes de los controles y lo que me interesa para que se vea bien esa pantalla. No todas las fuentes escalan igual y hay algunas que según el tamaño se desajustan de lo esperado.

Resumiendo el rollo, yo probaría a desactivar la propiedad scaled del formulario donde tengas los componentes de fast-report y/o del formulario de previsualización del informe, a ver si sale como esperas.
Responder Con Cita
  #7  
Antiguo 15-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Gracias WHILENOTEOF... tu apunte es realmente interesante y me va a servir para algunas cosas que me pasan. No obstante, no es el caso que ahora me ocupa, el FastReport está en un DataModule, y aunque le cambie la propiedad Scaled a False del Form que llama a la función definida en ese DataModule, sigue disminuyendo el código de barras.

No tengo ni idea de porqué cuando toco la resolución de la pantalla me comprime el EAN impreso, he llegado a la conclusión que el Windows "Falsea" de alguna manera el tamaño de la letra y el FastReport concluye que tiene que estrechar la impresión para que quepa, cuando realmente los dpi de la pantalla no deben afectar a los de impresión.

He notado que con el QuickReport también me pasa, cuando aumento el tamaño de la letra en las propiedades de Windows, se disminuye proporcionalmente el informe impreso en el folio. ¿?¿?¿?¿?¿?
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #8  
Antiguo 15-03-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para que no demos "palos de ciego", ni jueguemos a las adivinanzas, ¿por qué no pones el código que estás usando?
Responder Con Cita
  #9  
Antiguo 15-03-2019
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 229
Poder: 17
WHILENOTEOF Va camino a la fama
Cita:
Empezado por afxe Ver Mensaje
Gracias WHILENOTEOF... tu apunte es realmente interesante y me va a servir para algunas cosas que me pasan. No obstante, no es el caso que ahora me ocupa, el FastReport está en un DataModule, y aunque le cambie la propiedad Scaled a False del Form que llama a la función definida en ese DataModule, sigue disminuyendo el código de barras.

No tengo ni idea de porqué cuando toco la resolución de la pantalla me comprime el EAN impreso, he llegado a la conclusión que el Windows "Falsea" de alguna manera el tamaño de la letra y el FastReport concluye que tiene que estrechar la impresión para que quepa, cuando realmente los dpi de la pantalla no deben afectar a los de impresión.

He notado que con el QuickReport también me pasa, cuando aumento el tamaño de la letra en las propiedades de Windows, se disminuye proporcionalmente el informe impreso en el folio. ¿?¿?¿?¿?¿?
Axfe, una opción que podrías probar es asignarle a la propiedad Zoom del componente Barcode de Fastreport según la ampliación que le hayan puesto a la pantalla, que puedes deducir la propiedad PixelsPerInch que tenga el formulario :
- si vale 96 --> el zoom es 100%
- si vale 120 --> el zoom es 125 %
- ....
Responder Con Cita
  #10  
Antiguo 21-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Gracias por tu aportación.... pero a pesar de tener el tamaño de la fuente al máximo, el valor de la propiedad PixelsPerInch seguía siendo 96, no obstante, he cogido tu idea y activando un flag cambio el zoom y el height del componente. Pongo el fuente:

Código Delphi [-]
  if frxIdentificativa.FindComponent('BarCode1') <> nil then begin
    TfrxBarCodeView(frxIdentificativa.FindComponent('BarCode1')).Text := Format('%3.3s%1.1d%9.9d%3.3s', [vEmpresa, vModificador, vNumero, vTipo]);
    // if Application.MainForm.PixelsPerInch > 96 then begin (no ha funcionado)
    if l_ZoomActivo then begin  // Por la resolución del tipo de letra.
      TfrxBarCodeView(frxIdentificativa.FindComponent('BarCode1')).Zoom   := 1.5;
      TfrxBarCodeView(frxIdentificativa.FindComponent('BarCode1')).Height := 120;
    end;
  end;

  frxIdentificativa.PrintOptions.Printer    := G_IMPRESORA_IDENTIFIC;
  frxIdentificativa.PrintOptions.Copies     := 1;
  frxIdentificativa.PrintOptions.ShowDialog := False;
  frxIdentificativa.PrepareReport(True);
  frxIdentificativa.Print;
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #11  
Antiguo 21-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Sigo sin dar una explicación al por qué al aumentar el tamaño del fuente en pantalla provoca que se estreche las impresiones.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #12  
Antiguo 21-03-2019
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 229
Poder: 17
WHILENOTEOF Va camino a la fama
Cita:
Empezado por afxe Ver Mensaje
Sigo sin dar una explicación al por qué al aumentar el tamaño del fuente en pantalla provoca que se estreche las impresiones.

Continúo pensando que es posible que hayan metido los dpi de la pantalla en el código de la impresión, aunque imagino que en unos componentes tan usados como estos ya se hubiese reportado y solucionado. El check del dpi no lo tienes que hacer sobre PixelPerInch del form, sino de la pantalla, este es el código que utilizo para escalar una fuente originalmente con una altura de 8, cuando veo que el usuario tiene la pantalla con zoom:

Código Delphi [-]
 if (Screen.PixelsPerInch <> 96) then
  begin
   Opciones.Font8:= Round(8 * Screen.PixelsPerInch / 96);
  end;
Responder Con Cita
  #13  
Antiguo 26-03-2019
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Hola de nuevo. El valor de Screen.PixelsPerInch no varía cuando aumento el tamaño de fuente en pantalla (botón derecho sobre el escritorio->"Resolución de Pantalla"->"Aumentar o reducir el tamaño del texto y de otros elementos"->"Cambiar el tamaño de todos los elementos"->Poner a tope "Más Grande"), sigue siendo 96, pero he observado que sí varia la propiedad Screen.DesktopWidth, que disminuye según el tamaño que se seleccione, pero no me vale, porque también varía si toco la resolución de pantalla sin cambiar el tamaño los elementos y el cambio de resolución de pantalla no afecta a la impresión, sólo cuando cambio el tamaño.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #14  
Antiguo 01-04-2020
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Solucionado.

Por si a alguien le ocurriera:

Hay que modificar el método DrawBarCode en el fuente frxBarcod.pas de Fastreport (yo estoy con la versión 4), y al principio, sustituir:
Código Delphi [-]
  BarWidth := Width;

por

Código Delphi [-]
  tTemp := GetDC(0);  // definir en var tTemp : HDC
  try
    BarWidth := Round((Width * GetDeviceCaps(tTemp, VERTRES)) / GetDeviceCaps(tTemp, DESKTOPVERTRES));
  finally
    ReleaseDC(0, tTemp);
  end;

Con esto se soluciona que el código de barras se estreche cuando se cambia el tamaño de los elementos del escritorio al 125%, 150%, etc. en las propiedades de la pantalla.

También he solucionado el problema para Quickreport, que le pasa otro tanto de lo mismo, usando la misma función.

Saludos
__________________
Amar al mundo apasionadamente.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Códigos de barras con rave sgarrido Varios 3 13-09-2011 19:47:34
Reconocimiento de Códigos de Barras. afxe Gráficos 1 10-11-2009 10:22:54
Códigos de barras Carmelo Cash OOP 11 15-11-2007 10:58:00
Codigos de Barras jostrix PHP 5 21-10-2004 15:58:26
codigos de barras the darkness Varios 6 22-04-2004 19:02:29


La franja horaria es GMT +2. Ahora son las 12:28:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi