SAYBITMAP
Publicado por Luis Ponce (119 intervenciones) el 13/09/2008 16:44:25
Hola Amigos del Foro, necesito hacer un catalogo de articulos a la venta que muestre su imagen en una de las columnas, como tambien su campo memo, de algun modo he logrado hacerlo pero no me convence utilizo en SayBitmap() con la TReport asi :
DEFINE FONT oFont1 NAME "Courier New" SIZE 0,-10
DEFINE FONT oFont2 NAME "Courier New" SIZE 0,-12 BOLD
DEFINE FONT oFont3 NAME "Arial" SIZE 0,-16 BOLD
DEFINE FONT oFont4 NAME "Arial" SIZE 0,-12 BOLD
REPORT oReporte TITLE "LISTA DE PRECIOS",cNombreLst,cNombreFam ;
HEADER "Fecha: " + DTOC( DATE() ),;
OemToAnsi( "P gina: " ) + STR( oReporte:nPage,3 );
RIGHT;
FOOTER "Intel Soft S.R.Ltda. de L.P.",;
"FiveWin, Pacific(c)Soft", "";
FONT oFont1, oFont2, oFont3, oFont4 ;
PREVIEW;
CAPTION "Lista de Precios"
DO CASE
CASE nOpcion=1
COLUMN TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD;
FONT 1
COLUMN TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50;
FONT 1
COLUMN TITLE "U/V" DATA OemToAnsi(RItems->UNDITM) SIZE 3*1.5;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
IF lImagen
COLUMN oColumna6 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=6
ENDIF
CASE nOpcion=2
COLUMN oColumna1 TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD*1.4;
FONT 1
COLUMN oColumna2 TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50;
FONT 1
COLUMN oColumna3 TITLE "U/V" DATA IIF(LEN(TRIM(RItems->CODITM))>4,OemToAnsi(RItems->UNDITM),"") SIZE 3*1.5 ;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN oColumna4 TITLE "Precio",aSimMon[nImpMfa] DATA TRANS(RItems->PRECIO,MA54) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN oColumna4 TITLE "Precio",aSimMon[nImpMfa] DATA TRANS(RItems->PRECIO,MA54) RIGHT SIZE 10;
FONT 1
ENDIF
FOR L:=1 TO LEN(aNomLista)
cCampo:="RItems->PRECIO"+STRZERO(L,2)
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(&cCampo),"",TRANS(&cCampo,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(&cCampo),"",TRANS(&cCampo,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
NEXT
IF lImagen
COLUMN oColumna7 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=7
ENDIF
CASE nOpcion=3
COLUMN TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD*1.4;
FONT 1
COLUMN TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50*1.4;
FONT 1
COLUMN TITLE "U/V" DATA IIF(LEN(TRIM(RItems->CODITM))>4,OemToAnsi(RItems->UNDITM),"") SIZE 3*1.5;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
IF lImagen
COLUMN oColumna6 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=6
ENDIF
ENDCASE
GROUP ON RItems->FAMITM ;
HEADER IIF(LEN(TRIM(RItems->FAMITM))=2,UPPER(QFamilia(TRIM(RItems->FAMITM))),UPPER(QGrupo(TRIM(RItems->FAMITM)))) ;
FOOTER "Total x Linea ("+ltrim(str(oReporte:aGroups[1]:nCounter))+") Item(s)" ;
FONT 4
END REPORT
oReporte:oDevice:lPrvModal:=.T.
oReporte:oTitle :aFont[1]:={|| 3}
oReporte:oTitle :aFont[2]:={|| 4}
oReporte:oTitle :aFont[3]:={|| 4}
ACTIVATE REPORT oReporte ;
ON CHANGE (oMeter:Set(Recno()),IIF(lFicha,SayFicha(RItems->NOTAS,oReporte),""), ;
IIF(!EMPTY(RItems->FOTITM),(PonImage(oReporte:nRow,nColumna+11,RItems->FOTITM,oReporte)),) ) ;
ON STARTPAGE IIF(lImpLogo,IIF(nLogo=1,PonLogo1(oReporte),PonLogo2(oReporte)),"");
WHILE !EOF()
oFont1:End()
oFont2:End()
oFont3:End()
oFont4:End()
RItems->(DbCloseArea())
Return nil
FUNCTION PonImage(nFila,nCol,cImagen,oReporte) // Por Linea
IF FILE(cImagen)
oReporte:StartLine()
oReporte:SayBitmap(nFila/60,nCol, cImagen, 3, 2, 2 )
oReporte:EndLine()
oReporte:Newline()
ENDIF
RETURN NIL
Pero no me convence, la posicion nFila/60 de la Columna no es la exacta, como averiguo en que fila y columna estoy.
Gracias
Att.
Luis Ponce
DEFINE FONT oFont1 NAME "Courier New" SIZE 0,-10
DEFINE FONT oFont2 NAME "Courier New" SIZE 0,-12 BOLD
DEFINE FONT oFont3 NAME "Arial" SIZE 0,-16 BOLD
DEFINE FONT oFont4 NAME "Arial" SIZE 0,-12 BOLD
REPORT oReporte TITLE "LISTA DE PRECIOS",cNombreLst,cNombreFam ;
HEADER "Fecha: " + DTOC( DATE() ),;
OemToAnsi( "P gina: " ) + STR( oReporte:nPage,3 );
RIGHT;
FOOTER "Intel Soft S.R.Ltda. de L.P.",;
"FiveWin, Pacific(c)Soft", "";
FONT oFont1, oFont2, oFont3, oFont4 ;
PREVIEW;
CAPTION "Lista de Precios"
DO CASE
CASE nOpcion=1
COLUMN TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD;
FONT 1
COLUMN TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50;
FONT 1
COLUMN TITLE "U/V" DATA OemToAnsi(RItems->UNDITM) SIZE 3*1.5;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
IF lImagen
COLUMN oColumna6 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=6
ENDIF
CASE nOpcion=2
COLUMN oColumna1 TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD*1.4;
FONT 1
COLUMN oColumna2 TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50;
FONT 1
COLUMN oColumna3 TITLE "U/V" DATA IIF(LEN(TRIM(RItems->CODITM))>4,OemToAnsi(RItems->UNDITM),"") SIZE 3*1.5 ;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN oColumna4 TITLE "Precio",aSimMon[nImpMfa] DATA TRANS(RItems->PRECIO,MA54) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN oColumna4 TITLE "Precio",aSimMon[nImpMfa] DATA TRANS(RItems->PRECIO,MA54) RIGHT SIZE 10;
FONT 1
ENDIF
FOR L:=1 TO LEN(aNomLista)
cCampo:="RItems->PRECIO"+STRZERO(L,2)
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(&cCampo),"",TRANS(&cCampo,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(&cCampo),"",TRANS(&cCampo,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
NEXT
IF lImagen
COLUMN oColumna7 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=7
ENDIF
CASE nOpcion=3
COLUMN TITLE OemToAnsi("C¢digo") DATA RItems->CODITM SIZE IMPNCD*1.4;
FONT 1
COLUMN TITLE OemToAnsi("Descripci¢n") DATA OemToAnsi(RItems->DESITM) SIZE 50*1.4;
FONT 1
COLUMN TITLE "U/V" DATA IIF(LEN(TRIM(RItems->CODITM))>4,OemToAnsi(RItems->UNDITM),"") SIZE 3*1.5;
FONT 1
COLUMN TITLE "Stock","Referencial" DATA RItems->STOCK PICTURE MA72C SIZE 10;
FONT 1
IF nImpMfa=1
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ELSE
COLUMN TITLE "Precio",aSimMon[nImpMfa] DATA IIF(EMPTY(RItems->PRECIO),"",TRANS(RItems->PRECIO,MA54)) RIGHT SIZE 10;
FONT 1
ENDIF
IF lImagen
COLUMN oColumna6 TITLE "Imagen" DATA "" RIGHT SIZE 15 GRID
nColumna:=6
ENDIF
ENDCASE
GROUP ON RItems->FAMITM ;
HEADER IIF(LEN(TRIM(RItems->FAMITM))=2,UPPER(QFamilia(TRIM(RItems->FAMITM))),UPPER(QGrupo(TRIM(RItems->FAMITM)))) ;
FOOTER "Total x Linea ("+ltrim(str(oReporte:aGroups[1]:nCounter))+") Item(s)" ;
FONT 4
END REPORT
oReporte:oDevice:lPrvModal:=.T.
oReporte:oTitle :aFont[1]:={|| 3}
oReporte:oTitle :aFont[2]:={|| 4}
oReporte:oTitle :aFont[3]:={|| 4}
ACTIVATE REPORT oReporte ;
ON CHANGE (oMeter:Set(Recno()),IIF(lFicha,SayFicha(RItems->NOTAS,oReporte),""), ;
IIF(!EMPTY(RItems->FOTITM),(PonImage(oReporte:nRow,nColumna+11,RItems->FOTITM,oReporte)),) ) ;
ON STARTPAGE IIF(lImpLogo,IIF(nLogo=1,PonLogo1(oReporte),PonLogo2(oReporte)),"");
WHILE !EOF()
oFont1:End()
oFont2:End()
oFont3:End()
oFont4:End()
RItems->(DbCloseArea())
Return nil
FUNCTION PonImage(nFila,nCol,cImagen,oReporte) // Por Linea
IF FILE(cImagen)
oReporte:StartLine()
oReporte:SayBitmap(nFila/60,nCol, cImagen, 3, 2, 2 )
oReporte:EndLine()
oReporte:Newline()
ENDIF
RETURN NIL
Pero no me convence, la posicion nFila/60 de la Columna no es la exacta, como averiguo en que fila y columna estoy.
Gracias
Att.
Luis Ponce
Valora esta pregunta
0