Page 1 of 1

TREPORT con imágenes

Posted: Sat Dec 15, 2018 9:03 am
by jnavas
Saludos cordiales,
Agradecidos por sus aportes para generar bitmaps de códigos QR,
Ahora necesito realizar un reporte con las imágenes Bitmaps generados desde los códigos QR

Estaré evaluando mediante el uso del method oReport:SayBitmap


Code: Select all | Expand



     ACTIVATE REPORT oReport;
              WHILE !A->(Eof());
              ON STARTGROUP oReport:NewLine();
              ON STARTPAGE  RepBitmap();
              ON CHANGE ONCHANGE()

FUNCTION ONCHANGE()
// Aqui Necesito Conocer la Coordenada del Reporte que está en Ejecución
oReport:SayBitmap(.3,.3, cFileBmp,.5,.5)

 

Re: TREPORT con imágenes

Posted: Sat Dec 15, 2018 10:51 am
by jnavas
Saludos
Logré generar reporte, no he podido colocar la Imagen en la 3ra Columna del reporte

Code: Select all | Expand



#include "DpxReport.ch"

PROCE MAIN(oGenRep)
     LOCAL cSql,oCursor,cMsg:="",oFont1,oFont2
     PRIVATE oReport,nLineas:=0

     IF oGenRep=NIL
       RETURN .F.
     ENDIF

     CursorWait()

     oCursor:=OpenTable(cSql,.T.)

     IF oCursor:RecCount()=0
        MensajeErr("No fué posible Encontrar Información","Consulta Vacia Reporte <REPORTE>")
        oCursor:End()
        Return .F.
     ENDIF

     oCursor:GoTop()

     DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10
     DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-10 BOLD

     REPORT oReport TITLE  "Código QR",;
            "Fecha: "+dtoc(Date())+" Hora: "+TIME();
            CAPTION "Código QR" ;
            FOOTER "Página: "+str(oReport:nPage,3)+" Registros: "+alltrim(str(nLineas,5)) CENTER ;
            FONT oFont1,oFont2;
            PREVIEW

   
     COLUMN TITLE "Código";
            DATA oCursor:INV_CODIGO;
            SIZE 20;
            LEFT

     COLUMN TITLE "Descripción";
            DATA oCursor:INV_DESCRI;
            SIZE 40;
            LEFT

   
     END REPORT

     oReport:bSkip:={||oCursor:DbSkip()}

     ACTIVATE REPORT oReport ;
              WHILE !oCursor:Eof();
              ON STARTGROUP oReport:NewLine();
              ON STARTPAGE  RepBitmap();
              ON CHANGE ONCHANGE()

     oFont1:End()
     oFont2:End()

RETURN NIL

/*
// En Cada Registro se puede Aplicar Fórmulas
// Es llamado por Skip()
*/

FUNCTION ONCHANGE()
   LOCAL cFile:="QRCODE\DPINV"+ALLTRIM(oCursor:INV_CODIGO)+".BMP"

   IF !FILE(cFile)
      QRCODE(oCursor:INV_CODIGO,cFile,.F.)
   ENDIF

   nLineas:=nLineas+1
   oReport:SayBitmap(nLineas,110, cFile,.4,.4)

   AEVAL(Array(5),{||oReport:Newline()})

RETURN .T.

/*
// Imprime Campos Memos
*/

FUNCTION PrintMemo(cMemo,nCol,lData,nIni)
     LOCAL nFor,aLines

     IF Empty(cMemo)
        RETURN ""
     ENDIF

     // Inicio del Línea
     DEFAULT nIni:=1

     cMemo :=STRTRAN(cMemo,CHR(10),"") // Convierte el Campo Memo en Arreglos
     aLines:=_VECTOR(cMemo,CHR(13))

     IF lData // Requiera la Primera Línea de Datos
        Return aLines[1]
     ENDIF

//   oReport:BackLine(1) // Retroceder una Línea
//   oReport:Newline()   // Adelanta una Línea
     FOR nFor := nIni TO LEN(aLines)
         oReport:StartLine()
         oReport:Say(nCol,aLines[nFor])
         oReport:EndLine()
     NEXT
     oReport:Newline()

RETURN ""

/*
// Inicio en Cada Página
*/

STATIC FUNCTION RepBitMap()

  DEFAULT oDp:cLogoBmp:="BITMAPS\LOGO.BMP"

  oReport:SayBitmap(.3,.3, oDp:cLogoBmp,.5,.5)

RETURN NIL

// EOF



 

Re: TREPORT con imágenes

Posted: Sat Dec 15, 2018 11:13 am
by cnavarro
Tienes dos posibilidades dependiendo de la version que utilices
1) Report imprime automáticamente imágenes en las columnas
viewtopic.php?f=3&t=21145&p=112918&hilit=report+bitmap#p112918

2) Calculas y colocas tú la imagen, aunque en este caso seguramente te será más fácil crear tú el report con TPrinter y no con TReport
viewtopic.php?f=6&t=29669&p=189486&hilit=REPORT+BITMAP#p167718

Re: TREPORT con imágenes

Posted: Tue Dec 18, 2018 8:00 am
by jnavas
Saludos,

Logré solucionarlos con las siguientes instrucciones

Code: Select all | Expand



ACTIVATE REPORT oReport ;
              WHILE !oCursor:Eof();
              ON STARTGROUP oReport:NewLine();
              ON STARTPAGE  RepBitmap();
              ON CHANGE ONCHANGE()


/*
// En Cada Registro se puede Aplicar Fórmulas
// Es llamado por Skip()
*/

FUNCTION ONCHANGE()

   AEVAL(Array(2),{||oReport:Newline()})

   nContar++

RETURN .T.

FUNCTION REPQRCODE()
   LOCAL cFile:=INVQRCODE(oCursor:INV_CODIGO)
   LOCAL nLin:=1.35
   LOCAL nStep:=(2.17-1.75)

   IF !FILE(cFile)
      QRCODE(oCursor:INV_CODIGO,cFile,.F.)
   ENDIF

   IF nContar=1
      nLin:=1.75
   ENDIF

   IF nContar>1
     nLin:=2.17+(nStep*(nContar-2))
   ENDIF

   oReport:SayBitmap(nLin,6.4, cFile,.3,.34)

RETURN ""