Imprimir imagenes en las columnas del reporte

Post Reply
RSalazarU
Posts: 177
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia
Contact:

Imprimir imagenes en las columnas del reporte

Post by RSalazarU »

Hola amigos del foro:

Un cliente me ha pedido imprimir PROFORMAS con imagenes de los productos.

Alguien tendra un ejemplo de como imprimir imagenes en las columnas del reporte, con la clase TReport o TPrinter.


De antemano, gracias por la respuesta.


Rolando
Cochabamba, Bolivia.
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Imprimir imagenes en las columnas del reporte

Post by Marcelo Via Giglio »

Rolando,

del report.ch

Code: Select all

#xcommand COLUMN [ <oRptCol> ] ;
                [ TITLE <bTitle, ...> ] ;
                [ AT <nCol> ] ;
                [ DATA <bData, ...> ] ;
                [ SIZE <nSize> ] ;
                [ <pict: PICT, PICTURE> <cPicture, ...> ] ;
                [ FONT <uFont> ] ;
                [ [ <lCum: CUMULATIVE> ] <total: TOTAL> [ FOR <bTotalExpr> ]  ] ;
                [ <ColFmt:LEFT,CENTER,CENTERED,RIGHT> ] ;
                [ <lShadow:SHADOW> ] ;
                [ <lGrid:GRID> [ <nPen> ] ] ;
                [ <memo: MEMO, MULTILINE> ] ;
                [<img:IMAGE> [ IMGDATA <bimg> ] [HEIGHT <h> [<imgpix:PIXEL>] ]
La clase ya dispone de esa posibilidad, no se si hay un ejemplo

saludos y suerte

Marcelo Vía
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir imagenes en las columnas del reporte

Post by karinha »

Para poner un BITMAP, puedes ponerlo en el evento STARPAGE , ENDPAGE,
de esta manera verás los bitmaps en todas las paginas.

Code: Select all

oReport:SayBitmap( nRow, nCol, cBitmap, nWidth, nHeight, nScale )
oReport:SayBitMap(2.5,.70,"C:\GESTION\FOTOS\IMPRESO.BMP",2.1,1.0,1)
 
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir imagenes en las columnas del reporte

Post by karinha »

Code: Select all

FUNCTION ImpLetras(aSelec2,nOpArm,lMeter)

   LOCAL oPrn
   LOCAL nRowStep, nColStep
   LOCAL nRow := 0, nCol := 0

   lMeter := IF(lMeter=NIL, .T., lMeter )

   printersetup()

   SET INDEX TO INITECAN

   IF lMeter
      oMeter:nTotal:=LEN(aSelec2)
   ENDIF

   // PrnSetSize( 2100, 1200 ) To adjust a different printer paper size!

   PRINT oPrn NAME AtzNameSys PREVIEW

   DEFINE FONT oFontTit NAME "ARIAL"          SIZE 0, -12 BOLD OF oPrn
   DEFINE FONT oFontDat NAME "LUCIDA CONSOLE" SIZE 0, -13 OF oPrn

   FOR iConc=1 TO LEN(aSelec2) // Loop de todos _ seleccionados

      SELECT BASEREAL
      SEEK aSelec2[iConc,1]

      aBMP := {}

      aBMP = DAMENOTAS( LETRA, .T., nOpArm ) // Busca una serie de imagenes relacionadas al campo memo

      nRow := 0
      nCol := 0

      nRowStep = oPrn:nVertRes() / 60
      nColStep = oPrn:nHorzRes() / 96 // 96

      PAGE // Inicio de Pagina

         mLetra := LETRA //Campo memo
         nRow+=(nRowStep*2)

         * Impresion Titulo Principal
         cTit1 := "SISTEMA PRINCIPAL" // Encabezado
         oPrn:Say(nRow, nColStep* ( 48-( LEN( ALLTRIM(cTit1) ) /2 )), cTit1, oFontTit)

         nRow+=(nRowStep*2)

         * Impresion Subtitulo
         cCanto := C_ITEM+") "+ALLTRIM(NOMBRE) // Subencabezado
         oPrn:Say(nRow, 150, OemToAnsi(cCanto), oFontTit)
         nRow+=(nRowStep*1)
         * Impresion Subtitulo

         IF !EMPTY(AUTOR)
            cAutor := "("+ALLTRIM(AUTOR)+")" // Subencabezado
            oPrn:Say(nRow, 150, OemToAnsi(cAutor), oFontTit)
            nRow+=(nRowStep*1)
         ENDIF

         nRow+=(nRowStep*1)

         * Impresion de CAMPO MEMO
         mLetra := LETRA

         FOR iLinea=1 TO MLCOUNT(mLetra)

            * Linea=ALLTRIM(MEMOLINE(mLetra,,iLinea))
            Linea=MEMOLINE(mLetra,,iLinea)
            oPrn:Say(nRow, 150, OemToAnsi(Linea), oFontDat)
            nRow+=nRowStep

         NEXT

         * Impresion
         IF LEN(aBMP)>0

            nRow := 0
            nCol := 0
            nRowStep = oPrn:nVertRes() / 50
            nColStep = oPrn:nHorzRes() / 96
            nRow+=nRowStep


            // Mediadas de imagen

            IF nOpArm=1 // Guitarra
               n1 := IF( lLasser, 300, 250 ) // 250 Altura de imagen ¡
               n2 := IF( lLasser, 250, 200 ) // 200 Largo de imagen ->
            ELSE
               n1 := IF( lLasser, 400, 300 ) // 250 Altura de imagen ¡
               n2 := IF( lLasser, 450, 350 )// 200 Largo de imagen ->
            ENDIF

            // Ubicacion de imagen
            // Dos columnas
            nLugar1 := IF( lLasser, 3500, 1750 )
            nLugar2 := IF( lLasser, 4200, 2200 )
            // Una comumna
            nLugar3 := IF( lLasser, 3500, 1950 )

            IF LEN(aBMP)>6

               FOR i := 1 TO 6
                  nRow+=(nRowStep*5) // 250
                  oPrn:SayBitmap( nRow, nLugar1, aBMP[i], n2, n1, 2 )
               NEXT

               nRow := 0
               nCol := 0

               nRowStep = oPrn:nVertRes() / 50 // We want 20 rows
               nColStep = oPrn:nHorzRes() / 96 // We want 15 cols
               nRow+=nRowStep

               FOR i := 7 TO LEN(aBMP)
                  nRow+=(nRowStep*5)
                  oPrn:SayBitmap( nRow, nLugar2, aBMP[i], n2, n1, 2 ) //
               NEXT

            ELSE

               FOR i := 1 TO LEN(aBMP)
                  nRow+=(nRowStep*5)
                  oPrn:SayBitmap( nRow, nLugar3, aBMP[i], n2, n1, 2 )
               NEXT
            ENDIF
         ENDIF

      ENDPAGE

      IF lMeter
         oMeter:Set( nAvanza++ )
         SYSREFRESH()
         ENDIF
      NEXT

   ENDPRINT

   oFontTit:End()
   oFontDat:End()

   IF lMeter
      oMeter:SET(0)
      oMeter:REFRESH()
   ENDIF

RETURN nil
 
João Santos - São Paulo - Brasil
RSalazarU
Posts: 177
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia
Contact:

Re: Imprimir imagenes en las columnas del reporte

Post by RSalazarU »

karinha:

Gracias por el ejemplo, es lo que estaba BUSCANDO!!!

Lo estoy probando.
Post Reply