Clipper/FiveWin - SAYBITMAP

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder