Página 1 de 1

Tema Ayuda TBarCode()

Publicado: Mié Feb 07, 2018 12:13 am
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()

Re: Tema Ayuda TBarCode()

Publicado: Mié Feb 07, 2018 10:10 am
por ignacio
Buenos días,

Corregido. Gracias.

Un saludo

Re: Tema Ayuda TBarCode()

Publicado: Mié Feb 07, 2018 10:34 am
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.

Re: Tema Ayuda TBarCode()

Publicado: Mié Feb 07, 2018 1:35 pm
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()

Re: Tema Ayuda TBarCode()

Publicado: Mié Feb 07, 2018 2:35 pm
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.