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#p1129182) 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 ""