Esto es un extracto de una impresion, que utilizo, con el simbolo de "<<---" esta lo que preguntas.
STATIC FUNCTION InformCierre( oBrw, oGraph )
LOCAL oRpt, Fon1, Fon2, oPrn, Fon3, Fon4, aPos, aSiz, oDbf, k
SET 3DLOOK OFF
PRINTER oPrn 聽PREVIEW
IF EMPTY( oPrn:hDC )
聽 聽 RETURN NIL
ENDIF
aPos:=oPrn:Cmtr2Pix(1.50,11.5)
aSiz:=oPrn:Cmtr2Pix(12.5, 4.5)
oPrn:SetPage( 2 ) 聽 // 1=Papel Letter 8 1/2 x 11 in / 9=A4 210 x 297 mm
DEFINE FONT 聽Fon1 NAME "Consolas" 聽 聽SIZE 0,-10
DEFINE FONT 聽Fon2 NAME "Consolas" 聽 聽SIZE 0,-12 聽BOLD
DEFINE FONT 聽Fon3 NAME "Consolas" 聽 聽SIZE 0,-10 聽BOLD
DEFINE FONT 聽Fon4 NAME "Consolas" 聽 聽SIZE 0,-8
SELECT PA25 聽 聽 聽 聽 聽 聽 ; 聽 DBGOTOP()
REPORT oRpt TITLE 聽" "," ","INFORME PROCESO DE PACKING N掳 "+PA18->NPRO+" - "+DTOC(PA18->FECH),"EMPRESA 聽 : "+ALLTRIM(PA18->LOTE),"PRODUCTOR : "+ALLTRIM(PA18->CCSG)+"-"+ALLTRIM(PA18->NOMB),"ESPECIE 聽 : "+PA18->ESPE+"-"+ALLTRIM(PA18->NOME),"VARIEDAD 聽: "+PA18->VARI+"-"+ALLTRIM(PA18->ETIQ)," "," "," "," "," "," "," "," "," "," "," " LEFT ;
聽 聽 HEADER oGraph:Print(oPrn,aPos[1],aPos[2],aSiz[1],aSiz[2]), 聽SPACE(16)+oApp:cEmpresa, SPACE(16)+ALLTRIM(oApp:cDireccion)+" / "+ALLTRIM(oApp:cCiudad)+" / "+ ALLTRIM(oApp:cTelefono) 聽 ;
聽 聽 FOOTER ALLTRIM(oApp:cSigEmp)+" "+oApp:cRut+" P谩gina Nro : "+STR(oRpt:nPage,3,0)+" ( Fecha :"+DTOC(ServerDate())+" Hora : "+SUBSTR(ServerTime(),1,5)+" )",__MAIN+" "+__VERSION+oApp:cVersion+" Proc.: ["+MAINPRO+" ver."+VERSIONPRO+"]" CENTER ;
聽 聽 FONT 聽Fon1, Fon2, Fon3, Fon4 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 TO DEVICE oPrn 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 CAPTION "CierreProceso"
聽 聽 COLUMN TITLE "Lotes" 聽 聽 聽 聽 聽,"Procesados" 聽 聽 聽DATA "Lote : "+PA25->LOTE 聽 聽 聽 聽 聽 聽 聽 聽FONT 1 SIZE 20 CENTER GRID
聽 聽 COLUMN TITLE " " 聽 聽 聽 聽 聽 聽 聽,"Recepci贸n" 聽 聽 聽 DATA PA25->FECH 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽FONT 1 SIZE 12 CENTER
聽 聽 COLUMN TITLE "Total" 聽 聽 聽 聽 聽,"Bins" 聽 聽 聽 聽 聽 聽DATA PA25->ESTA PICTURE "@E 9,999.99" 聽 聽FONT 1 SIZE 12 TOTAL 聽GRID
聽 聽 COLUMN TITLE "Total" 聽 聽 聽 聽 聽,"Totems" 聽 聽 聽 聽 聽DATA PA25->MINU PICTURE "@E 9,999.99" 聽 聽FONT 1 SIZE 12 TOTAL 聽GRID
聽 聽 COLUMN TITLE "Kilos" 聽 聽 聽 聽 聽,"Vaciados" 聽 聽 聽 聽DATA PA25->TUN1 PICTURE "@E 99,999.99" 聽 FONT 1 SIZE 12 TOTAL 聽GRID
聽 聽 COLUMN TITLE " " 聽 聽 聽 聽 聽 聽 聽,"% PT&I" 聽 聽 聽 聽 聽DATA PA25->TUN3 PICTURE "@E 999.99" 聽 聽 聽FONT 1 SIZE 10 GRID
聽 聽 COLUMN TITLE " " 聽 聽 聽 聽 聽 聽 聽," " 聽 聽 聽 聽 聽 聽 聽 DATA PA25->ID 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽FONT 1 SIZE 聽1 GRID
聽 聽 COLUMN TITLE " " 聽 聽 聽 聽 聽 聽 聽,"Observaciones" 聽 DATA PA25->ID 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽FONT 1 SIZE 40 GRID
END REPORT
IF oRpt:lCreated
聽 聽 聽 聽oRpt:lJoin 聽 聽 聽 聽 聽 聽 聽:= .T.
聽 聽 聽 聽oRpt:lAutoland 聽 聽 聽 聽 聽:= .T.
聽 聽 聽 聽oRpt:lColTitleShadow 聽 聽:= .T.
聽 聽 聽 聽oRpt:nColTitleClrShadow := _CLRREPTX3
聽 聽 聽 聽oRpt:bInit 聽 聽:= {|| PA25->(dbGotop()) } 聽 聽 聽 聽 聽<<--- 聽 :bInit 聽con un valor se puede usar el boton para exportar a excel
聽 聽 聽 聽oRpt:SetPenColor( CLR_BLUE )
聽 聽 聽 聽oRpt:cGrandTotal 聽 聽 聽 聽:= "Integridad de Datos"
聽 聽 聽 聽oRpt:Stabilize()
ENDIF
ACTIVATE REPORT oRpt ON STARTPAGE 聽CabezeraProceso( oRpt )
STATIC FUNCTION CabezeraProceso( oRpt )
LOCAL cText := "", nLine, nStep, nTot, n, oBr
DEFINE BRUSH oBr COLOR nRGB(255,179,128)
oRpt:SayBitmap(0.30, 0.30,".\SYSTEM\RE000.Bmp") 聽 聽 <<---- 聽 聽imagen
nLine := 聽ROUND(( oRpt:oDevice:nVertRes() / 11 ),0)
nStep := 聽ROUND(( nLine / 6.90 ), 0)
nTot 聽:= {0,0,0,0,0,0}
n 聽 聽 := 聽Int( oRpt:oPenHorz:nWidth * 5 )
SetbkMode( oRpt:oDevice:hDCOut, 聽1 )
nTot[1] := ( oApp:aPorcen[2] / oApp:nSumas ) * 100
nTot[2] := ( oApp:aPorcen[5] / oApp:nSumas ) * 100
nTot[3] := 聽 oApp:nSumas - ( oApp:aPorcen[2] + oApp:aPorcen[5] )
nTot[4] := 聽 oApp:aPorcen[1] + oApp:aPorcen[4]
nTot[5] := ( nTot[3] / oApp:nSumas ) * 100
nTot[6] := nTot[1] + nTot[2] + nTot[5]
nLine 聽 += ( nStep * 5 )
oRpt:oDevice:FillRect( { nLine + n, oRpt:aCols[1] - 10, nLine 聽+ ( oRpt:nStdLineHeight * oRpt:nMaxTitle ) + n * 3 , oRpt:aCols[4] + oRpt:aColumns[4]:nWidth + 100}, oBr )
nLine 聽 += nStep
oRpt:oDevice:Line( nLine-60 , 470, nLine-60 , 3000 )
聽 聽 聽oRpt:Say( 聽3, "RESULTADO DE PROCESO", 2, RPT_CENTER, nLine ) ; 聽 nLine += nStep
聽 聽 聽oRpt:Say( 聽2, "Envases" 聽 , 3, RPT_CENTER , nLine )
聽 聽 聽oRpt:Say( 聽3, "Kilos" 聽 聽 , 3, RPT_CENTER , nLine )
聽 聽 聽oRpt:Say( 聽4, "%" 聽 聽 聽 聽 , 3, RPT_RIGHT 聽, nLine ) 聽 聽 聽 聽 聽; 聽 nLine += nStep
oRpt:oDevice:Line( nLine+20 , 470, nLine+20 , 3000 )
nLine += ( nStep / 2 )
聽 聽 聽oRpt:Say( 聽1, "Exportable", 1, RPT_LEFT 聽 , nLine ) 聽 聽 聽 聽 聽; 聽 oRpt:Say( 2,TRANSFORM(oApp:aPorcen[1],"@E 99,999"), 1, RPT_RIGHT, nLine) ; oRpt:Say( 3,TRANSFORM(oApp:aPorcen[2],"@E 99,999.99"), 1, RPT_RIGHT, nLine) ; oRpt:Say( 4,TRANSFORM(nTot[1],"@E 999.99"), 1, RPT_RIGHT, nLine) ; nLine += nStep
聽 聽 聽oRpt:Say( 聽1, "Comercial" , 1, RPT_LEFT 聽 , nLine ) 聽 聽 聽 聽 聽; 聽 oRpt:Say( 2,TRANSFORM(oApp:aPorcen[4],"@E 99,999"), 1, RPT_RIGHT, nLine) ; oRpt:Say( 3,TRANSFORM(oApp:aPorcen[5],"@E 99,999.99"), 1, RPT_RIGHT, nLine) ; oRpt:Say( 4,TRANSFORM(nTot[2],"@E 999.99"), 1, RPT_RIGHT, nLine) ; nLine += nStep
聽 聽 聽oRpt:Say( 聽1, "Mermas" 聽 聽, 1, RPT_LEFT 聽 , nLine ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ; oRpt:Say( 3,TRANSFORM(nTot[3] 聽 聽 聽 聽,"@E 99,999.99"), 1, RPT_RIGHT, nLine) ; oRpt:Say( 4,TRANSFORM(nTot[5],"@E 999.99"), 1, RPT_RIGHT, nLine) ; nLine += nStep
nLine += ( nStep / 2 )
oRpt:oDevice:Line( nLine 聽 聽 聽 , 470, nLine 聽 聽, 聽3000 )
oRpt:oDevice:Line( nLine+100 聽 , 470, nLine+100, 聽3000 )
oRpt:Say( 聽1, "Totales" 聽 聽 聽 聽, 3, RPT_LEFT 聽 , nLine ) 聽 聽 聽 聽 聽; 聽 oRpt:Say( 2,TRANSFORM(nTot[4] 聽 聽 聽 聽,"@E 99,999"), 3, RPT_RIGHT, nLine) ; oRpt:Say( 3,TRANSFORM(oApp:nSumas 聽 聽,"@E 99,999.99"), 3, RPT_RIGHT, nLine) ; oRpt:Say( 4,TRANSFORM(nTot[6],"@E 999.00"), 3, RPT_RIGHT, nLine) ; nLine += nStep
oRpt:Say( 聽6, "KILOS VACIADOS" , 2, RPT_LEFT 聽 , nLine )
oBr:End()
RETURN .T.