by jll-fwh » Tue Mar 02, 2010 2:41 pm
Hola Juan:
Aqui tienes un ejemplo funcional para imprimir con TPrinter:
*******************************************************************************
* Archivo: Proc5014.PRG
* Descripcion: Listado de Pollitos Criados a Mano.
* Fecha: 15-02-2010
* Release: 1.0
* Autor: Jose Javier LLoris Roig
*******************************************************************************
#Include "FiveWin.CH"
STATIC cFileBMP
/*------------------------------------------------------------------------------*/
Function ListaPollitos( cModoImp, cDesde, cHasta, cPDF )
/*------------------------------------------------------------------------------*/
LOCAL oPrn, oFontC, oFontD, oFontT, oPen
LOCAL nRow := 0, nTReg := 0, nConta := 0
DEFAULT cPDF := ""
If cModoImp == "P"
PRINT oPrn NAME "Impresión de Pollitos" PREVIEW
Else
PRINT oPrn NAME "Impresión de Pollitos"
End
If Empty( oPrn:hDC )
Return NIL
End
If !Empty( cPDF )
oPrn:cDocument := AllTrim( cPDF )
End
DEFINE FONT oFontC NAME "Tahoma" SIZE 0, -8 BOLD OF oPrn
DEFINE FONT oFontD NAME "Tahoma" SIZE 0, -7 OF oPrn
DEFINE FONT oFontT NAME "Tahoma" SIZE 0, -7 BOLD OF oPrn
DEFINE PEN oPen WIDTH 5 OF oPrn
PAGE
nRow := 1
nConta := 1
Cabeceras( oPrn, @nRow, oFontD, oFontC, oPen )
While ! CriaMano->( Eof() )
If CriaMano->CodAve >= cDesde .AND. CriaMano->CodAve <= cHasta
Detalle( oPrn, @nRow, oFontD, oPen )
nTReg++
nConta++
End
CriaMano->( DbSkip() )
SysRefresh()
If nConta >= 50 .AND. ! CriaMano->( Eof() )
oPrn:EndPage()
oPrn:StartPage()
nRow := 1
nConta := 0
Cabeceras( oPrn, @nRow, oFontD, oFontT, oPen )
End
End
Totales( oPrn, nRow, oFontT, oPen, nTReg )
ENDPAGE
ENDPRINT
oFontC:End()
oFontD:End()
oFontT:End()
oPen:End()
Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function Cabeceras( oPrn, nRow, oFontD, oFontC, oPen )
/*------------------------------------------------------------------------------*/
LOCAL oImageM, oImageH
LOCAL aMacho := Array( 4 )
LOCAL aHembra := Array( 4 )
LOCAL cFileM := ""
LOCAL cFileH := ""
LOCAL nRowImage := 0
/* Impresion de la Cabecera del listado */
oPrn:CmSay( nRow+=1, 3, "Procedimiento: PROC5014.PRG", oFontD )
oPrn:CmSay( nRow, 9, "LISTADO DE POLLITOS", oFontC )
oPrn:CmSay( nRow, 15, "Pagina: " + AllTrim( Str( oPrn:nPage ) ), oFontD )
oPrn:CmSay( nRow, 17, "Fecha: " + dToc( Date() ), oFontD )
oPrn:CmSay( nRow+=0.3, 3, Replicate( "-", 182 ), oFontD )
nRow+=1
oPrn:CmSay( nRow, 3, "Código" , oFontC )
oPrn:CmSay( nRow, 12, "Volumen" , oFontC )
oPrn:CmSay( nRow, 13.7, "Peso" , oFontC )
nRow+=0.3
oPrn:CmSay( nRow, 3, "Ave" , oFontC )
oPrn:CmSay( nRow, 4.5, "Identificación", oFontC )
oPrn:CmSay( nRow, 9.5, "Estado" , oFontC )
oPrn:CmSay( nRow, 12, "Ingerido" , oFontC )
oPrn:CmSay( nRow, 13.7, "Actual" , oFontC )
oPrn:CmSay( nRow, 15, "Ubicación" , oFontC )
nRow+=0.5
LinePrint( oPrn, nRow, 3, nRow, 19, oPen )
Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function Detalle( oPrn, nRow, oFontC, oPen )
/*------------------------------------------------------------------------------*/
nRow+=0.2
oPrn:CmSay( nRow, 3, CriaMano->CodAve, oFontC )
If MiDosBuscar( "Aves", 1, CriaMano->CodAve )
oPrn:CmSay( nRow, 4.5, Aves->Identi, oFontC )
End
oPrn:CmSay( nRow, 9.5, CriaMano->Estado, oFontC )
oPrn:CmSay( nRow, 11.8, TransForm( CriaMano->VolTot, "999,999.99 ml" ), oFontC )
oPrn:CmSay( nRow, 13.7, TransForm( CriaMano->PesAct, "999.99 gr" ) , oFontC )
If MiDosBuscar( "Ubicacio", 1, CriaMano->CodUbi )
oPrn:CmSay( nRow, 15, Ubicacio->DenUbi, oFontC )
End
nRow+=0.2
Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function Totales( oPrn, nRow, oFont, oPen, nTReg )
/*------------------------------------------------------------------------------*/
LinePrint( oPrn, nRow+=0.2, 3, nRow, 19, oPen )
oPrn:CmSay( nRow+=0.2, 3, "Total Registros Seleccionados:", oFont )
oPrn:CmSay( nRow, 7, TransForm( nTReg, "9,999" ), oFont )
Return NIL
Un saludo
JLL