PDA

Ver la Versión Completa : Insertar Barcode1D (Han-soft) en QReport


probles2
12-09-2014, 09:17:08
Hola a todos:
Estoy intentando insertar un componente TDBBarcode1D de Han-soft para mostrar el codigo de barras de unas etiquetas, pero no consigo que me aparezca. Anteriormente utilizaba el componente TQRBarcode que si me funcionaba pero quería cambiarlo por este otro componente que permite quitar los números del código de barras mostrado.

Para mostrar el TQRBarcode, al hacer rdsEtiquetas.PreviewReport('archivoEtiquetas.fme'), en el evento AfterReportLoaded del componente TReportDesignerDialog rdsEtiquetas sustituía el valor del campo Barras por la representación en código de barras del TQRBarcode, de la siguiente forma:

Barras := TQRDBText( Form.FindComponent( 'BARRAS'));
If not ( Barras = nil) Then
Begin
With TQRBarCode.Create( Barras.Owner) Do
Begin
Parent := Barras.Parent;
BarCodeType := EAN;
Left := Barras.Left;
Top := Barras.Top;
Width := Barras.Width;
Height := Barras.Height;
DataSet:= tAuxEtBarras;
DataField := 'Barras';
End;
Barras.Free;
End;

- Con el componente TDBBarcode1D intento hacer algo similar pero no consigo que me muestre el código de barras. Si alguien ha trabajado con este tipo de componentes, por favor, me vendría bien un poco de ayuda.
Gracias por vuestra atención...

Saludos:
Pablo.

ecfisa
12-09-2014, 09:29:51
Hola Pablo.

Cuando incluyas código en tus mensajes recuerda usar etiquetas para darle más legibilidad. El uso:

http://sia1.subirimagenes.net/img/2014/09/12/140912092124532033.jpg

Eso te va a rendundar en mas respuestas (ya las agregué a tu mensaje).

Saludos y gracias por tu colaboración :)

probles2
12-09-2014, 10:49:14
Muchas gracias ecfisa por tus indicaciones. La verdad es que es la primera vez que pongo código en un mensaje y no tenía ni idea de como hacerlo.

ecfisa
12-09-2014, 12:13:51
Hola Pablo.

Nunca usé el componente que mencionas, pero revisando el 1D Barcode VCL Components User Manual (http://www.han-soft.com/releases/barcode1d/manual.pdf) encontré que en la página 17 dice:

3.3 How to use the barcode components with QuickReport

Usage:
1. Put a TBarcode1D barcode component, such as the TBarcode1D_Code39, TBarcode1D_EAN13, and TBarcode1D_Code128 to your form.
Also, put a TDBBarcode1D component to the form and link the TBarcode1D component to the TDBBarcode1D component if the database support is required.
2. Put a TQRImage or TQRGzImage control to your report.
3. Set the Image property of the barcode component to the TQRImage or TQRGzImage control.

You can link single TQRImage or TQRGzImage control to multiple TBarcode1D components in order to display multiple barcode symbols in the TQRImage or TQRGzImage control (using the LeftMargin and TopMargin properties to specify the position for every barcode symbol).

Note:
If the barcode symbol cannot be read, please don't reduce/stretch width of the barcode symbol (set the Stretch property to false). You can change the barcode symbol width by changing its Module property value.

Also, please check whether the TQRImage or TQRGzImage control is large enough to accommodate entire
barcode symbol.


Luego, en la página 19 encontré este ejemplo para ReportBuilder que se me hace sugestivamente similar al uso que tendría con un TQRImage:

var
BarcodeWidth, BarcodeHeight, SymbolWidth, SymbolHeight: Integer;
begin
......
Barcode1D_Code391.Barcode := '1235678';
Barcode1D_Code391.Module := 2;
......
with ppReport1Image1.Picture.Bitmap do
begin
Barcode1D_Code391.DrawToSize(BarcodeWidth, BarcodeHeight, SymbolWidth, SymbolHeight, Canvas);
Width := BarcodeWidth;
Height := 100;
Barcode1D_Code391.DrawTo(Canvas, 0, 0);
end;

En principio, podrías intentar reemplazar el TppReport1Image1 por un TQRImage1 y ver si aplica...

Lamento no poder brindarte una ayuda comprobada, pero como te comenté antes no conozco el componente.

Saludos :)

probles2
12-09-2014, 16:55:16
Hola ecfisa:

Ya había leído las páginas del manual que mencionas, y había hecho algunas pruebas con el TQRImage dentro de un Report insertado en un formulario, y sí que funciona, pero no es la solución que busco, ya que eso me obligaría a definir todos los diseños de etiquetas que tengo en archivos externos (archivos .fme) dentro del programa de etiquetas, y son más de 30 diseños diferentes. Además, cada vez que hubiera que modificar alguna etiqueta habría que recompilar el programa, y ahora mismo somos varias personas las que podemos acceder al editor de informes para hacer cualquier modificación en las etiquetas sin necesidad de recompilar el programa.

Lo que necesito es reemplazar el campo 'Barras' de todas esas etiquetas por el componente Barcode1D cuando hago el PreviewReport de la etiqueta. De todas formas, muchas gracias por tu aporte, seguiré dandole vueltas...

Saludos:
Pablo.