In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Tema Ayuda TBarCode()

Foro de Xailer profesional en español
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

Tema Ayuda TBarCode()

Mensaje por XeviCOMAS »

La ayuda que hace referencia a la Clase TBarCode, ...

******************************
TBarcode:GetImage

Recupera el código de barras como un objeto TImage. Es importante establecer la propiedad nBkGndMode en su objeto contenedor en modo blSTRETCH para que el pintado se producza correctamente.



Tipo
Estándar

Parámetros
<nFlags>

Modificador para calcular el tipo de de código de barras.

Revisar hbzebra.ch

Valor Retorno
<TImage>

*******************************

Este método no existe, en su lugar (segun el Sample de Xailer), se utiliza GetPicture()
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Tema Ayuda TBarCode()

Mensaje por ignacio »

Buenos días,

Corregido. Gracias.

Un saludo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Tema Ayuda TBarCode()

Mensaje por XeviCOMAS »

Y... puestos.

Estoy intentando guardar el codigo de barras en una imagen... ¿Como lo hago???

En el Sample, intento esto, pero no me surge efecto.
creando una TImage, la imagen del codigo de barras es de 1 píxel de alto, solamente.
Guardandola directamente, pues eso también...

Código: Seleccionar todo

   WITH OBJECT ::oBarCode1
      :nType := ::aTypes[ nItem, 1 ]
      :cText := ::aTypes[ nItem, 3 ]
      oPic := :GetPicture()
      IF oPic != NIL
         ::oBevel1:oBkgnd := oPic
::oImage1:oPicture := oPic
oPic:Save( "D:\Prova.Jpg", 1, 100 ) )
      ELSE
         ::oBevel1:oBkgnd := nil
         MsgInfo( :GetErrorDescription() )
      ENDIF
   END WITH
Lo que pretendo es guardar la imagen que se visualiza en el TBevel... ¿Como???

Gracias.
Un Saludo,
Xevi.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Tema Ayuda TBarCode()

Mensaje por ignacio »

Buenos días,

El código no es del todo correcto. Tendría que ser asi:

Código: Seleccionar todo

WITH OBJECT ::oBarCode1
 oPic := :GetPicture()
 oPic:Save( "D:\Prova.Jpg", 1, 100 ) )
END WITH
Pero el bitmap que se graba tiene tan sólo un bit de alto, para corregirlo y que sea exactamente igual a lo que se ve (suponiendo que se está mostrando en ::oBevel1), se podría hacer asi:

Código: Seleccionar todo

LOCAL hBitmap
LOCAL aRect
LOCAL oPict
   
aRect := GetClientRect( ::oBevel1:Handle )
   
hBitmap := XA_CaptureBitmap( ::oBevel1:Handle, aRect )
   
oPict := TPicture():CreateIndirect( 1, hBitmap )   
   
oPict:Save( "c:\temp\test.jpg", 1 )
oPict:End()
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Tema Ayuda TBarCode()

Mensaje por XeviCOMAS »

PERFECTO!!!

Gracias, Ignacio.



Viéndolo lo dejo así...

Código: Seleccionar todo

METHOD Button1Click( oSender ) CLASS TForm1

   LOCAL oPic
   LOCAL nItem

   nItem := ::oListbox1:nIndex

   WITH OBJECT ::oBarCode1
      :nType := ::aTypes[ nItem, 1 ]
      :cText := ::aTypes[ nItem, 3 ]
      oPic := :GetPicture()
      IF oPic != NIL
         ::oBevel1:oBkgnd := oPic

         ProcessMessages()
         WITH OBJECT TPicture():CreateIndirect( 1, XA_CaptureBitmap( ::oBevel1:Handle, GetClientRect( ::oBevel1:Handle ) ) )   
         :Save( "D:\Prova.Jpg", 1, 100 )
         :End()
         END
      ELSE
         ::oBevel1:oBkgnd := nil
         MsgInfo( :GetErrorDescription() )
      ENDIF
   END WITH

RETURN Nil
Además, aprovecho para utilizar XA_CaptureBitmap() en mis aplicaciones en lugar de la clase TCaptureBitmap() de J.Lalín y así ir eliminando productos de terceros que se depende de ellos para futuras actualizaciones de Xailer.
Un Saludo,
Xevi.
Responder