joseluisysturiz wrote:Srs. empiezo con reportes y pruebo con REPORT, lei y probe varios ejem. incluyendo REPORT de samples, lo que no he visto ni podido es hacer:
1. que la posicion del TITLE de COLUMN (CENTER) sea diferente a la posicion de la DATA (LEFT), algo asi.
2.en COLUMN colocar diferentes FONT y TAMAÑO, puse al final FONT oFont y me dio error, obvio que esta definido oFont.
3.colocar diferentes FONT para Header, Title y Footer
REPORT oRpt TITLE "LIBRO DE VENTA" LEFT;
FONT oFont[2] PREVIEW;
CAPTION "Diseñado por...";
FOOTER "Pág: " + Padl( oRpt:nPage , 4 ,'0' ) CENTER;
HEADER "Nombre o Razon Social"
4.necesito que despues de mostrar todos los datos de la DBF, colocar algunas lineas como resumenes de sumatorias, algunas de la misma data impresa, otras de variables del sistema.
5.por lo que vi, no puedo seleccionar diferentes impresoras a menos que use PrinterSetup(), para cambiar direcion de la hoja (HOR./VERT.)
Sus comentarios, recomendaciones y ejemplos sera de mucha ayuda como siempre..gracias,.....
Saludos José Luis.
1 - No me he preocupado por conocer esta parte. Siempre lo he hecho ajustando con espacios en el titu de columna.
2 -
EJEMPLO USO DE FONT oFont
COLUMN TITLE " CUENTA";
DATA (cFicTemp)->CUENTA;
FONT if(Empty((cfictemp)->NV),2,1) ;
SIZE 16;
GRID 2
GROUP ON MOVPRODT->DCMTO FOOTER "Total Documento" FONT 1
//Los oFont debe ser destruidos al finalizar
3 -
FONT EN CABECERA Y FOOTER
PrinterSetup(oPrn)
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10 OF oPRN
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-10 BOLD OF oPRN
DEFINE FONT oFont3 NAME "ARIAL" SIZE 0,-12 BOLD OF
...
...
IF oReport:lCreated
//Lineas Fonts Bold o No
oReport:oTitle:aFont[1] := {|| 3 }
oReport:oTitle:aFont[2] := {|| 3 } //oFont3
oReport:oTitle:aFont[3] := {|| 2 }
oReport:oTitle:aFont[4] := {|| 2 } //oFont2
oReport:oTitle:aFont[5] := {|| 1 } //oFont1
4 -
//EJEMPLO: Otros datos al final, despues de imprimir totales
oReport:bPostEnd :={|| PoneDatos(oReport,cAlias) }
ACTIVATE REPORT oReport
...
...
oFont1:End()
oFont2:End()
oFont3:End()
oPen1:End()
RETURN NIL
//----------------------------------------------------------
Function PoneDatos(oReport,cAlias)
local nBueno:=0,nMalo:=0
(cAlias)->(dbgotop())
While (cAlias)->(!eof()) //conocer valores totales por Buenos,Malos
nBueno += (cAlias)->Buenos * nPrecUcarga
nMalo += (cAlias)->Malos * nPrecUcarga
(cAlias)->(dbSkip())
Enddo
oReport:Say(1, "Valor Productos Buenos",,PAD_LEFT, )
oReport:Say(2, Transform(nBueno,"999,999.99") ,,PAD_RIGHT,)
oReport:NewLine()
nLineas+=1
oReport:Say(1, "Valor Productos Malos",,PAD_LEFT, )
oReport:Say(2, Transform(nMalo,"999,999.99") ,,PAD_RIGHT,)
oReport:NewLine()
nLineas+=1
RETURN NIL
5 - Siempre he usado PrinterSetup()
Saludos
Francisco.