Estoy intentando visualizar un listado desde la clase Tprinter, y me ocurren dos cosas.
1.- En la impresión de una factura/albarán no me sale el preview, imprimir, imprime, pero no veo el preview.
2.- En el listado que estoy haciendo, me sale el preview, eso sí, todo junto como si las lineas de separación no existieran, y eso que pongo un msginfo que me vaya diciendo que valor tiene la variable nLin que es la que uso para imprimir las líneas.
En la cabecera del listado, cuando sale de ella, esa variable tiene un valor de 7, despues va aumentando a medida que las líneas del listado se van "imprimiendo" , y vuelve a 1 en la cabecera, al salir vale 7 y asi sucesivamente por cada página.
Mis preguntas son, ¿Por qué no veo la factura y SÍ el listado?, y, ¿Por qué el listado me sale como un borrón, si supuestamente las lineas van aumentando de valor?.
Este es el código del listado
- Code: Select all Expand view RUN
*-------------------------------------------------------------------------------
Function HazRepor(cAlias,aTextos,cNombre)
*-------------------------------------------------------------------------------
LOCAL oFont1, oFont2, oPen1, oPen2
Local oPrn,nPag := 1,aSuma[2]
Local nSele := SELECT()
Local nSw
Private nLin := 1
nSw := PrinterSetup()
If nSw == 0
MsgInfo("Impresión Cancelada")
Return nil
EndIf
PRINT oPrn NAME "Listado de facturas" PREVIEW
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-8 Of oPrn
DEFINE FONT oFont2 NAME "ARIAL" BOLD SIZE 0,-8 OF oPrn
DEFINE PEN oPen1 WIDTH 1
aSuma[1] := 0
aSuma[2] := 0
dbSelectArea(cAlias)
(cAlias)->(dbGotop())
PAGE
ImprCabRepor(oPrn,oFont1,aTextos,nPag,cNombre)
nClie := (cAlias)->Cliente
While (cAlias)->(!Eof())
ImprLinRepor(oPrn,oFont1,cAlias)
aSuma[1] += (cAlias)->total
aSuma[2] += (cAlias)->total
If (cAlias)->cliente <> nClie
SumaGrupo(oPrn,oFont2,aSuma)
aSuma[1] := 0
nClie := (cAlias)->cliente
EndIf
nLin ++
If nLin > 55
ImprPieRepor(oPrn,oFont2,aSuma,0)
ENDPAGE
nPag ++
PAGE
ImprCabRepor(oPrn,oFont1,aTextos,nPag,cNombre)
EndIf
(cAlias)->(dbSkip())
EndDo
ImprPieRepor(oPrn,oFont2,aSuma,1)
ENDPAGE
ENDPRINT
oFont1:End()
oFont2:End()
oPrn:End()
Sysrefresh()
RETURN NIL
*-------------------------------------------------------------------------------
FUNCTION SumaGrupo(oPrn,oFont2,aSuma)
*-------------------------------------------------------------------------------
Local cTexto := "Total Cliente..."
nLin ++
oPrn:Say(nLin ,30,cTexto,oFont2)
oPrn:Say(nLin ,68,Transform(aSuma[1],"999,999.99"),oFont2)
Return nil
*-------------------------------------------------------------------------------
FUNCTION ImprPieRepor(oPrn,oFont2,aSuma,nSw)
*-------------------------------------------------------------------------------
Local cTexto
If(nSw == 1, cTexto := "Suma total...",cTexto := "Suma y Sigue...")
nLin ++
oPrn:Say(nLin ,30,cTexto,oFont2)
oPrn:Say(nLin ,68,Transform(aSuma[2],"999,999.99"),oFont2)
Return nil
*-------------------------------------------------------------------------------
FUNCTION ImprLinRepor(oPrn,oFont1,cAlias)
*-------------------------------------------------------------------------------
oPrn:Say(nLin , 2,(cAlias)->numero,oFont1)
oPrn:Say(nLin ,10,Dtoc((cAlias)->fecha),oFont1)
oPrn:Say(nLin ,20,(cAlias)->cliente,oFont1)
oPrn:Say(nLin ,30,(cAlias)->nombre,oFont1)
oPrn:Say(nLin ,68,Transform((cAlias)->total,"999,999.99"),oFont1)
Return nil
*-------------------------------------------------------------------------------
FUNCTION ImprCabRepor(oPrn,oFont1,aTextos,nPag,cNombre)
*-------------------------------------------------------------------------------
Local dFecha := Dtoc(date())
Local cText1 := aTextos[1]
Local cText2 := aTextos[2]+" "+cNombre
Local cText3 := aDatEmp[2]
Local cPagina := "Pag.:"+Str(nPag,3)
nLin := 1
oPrn:Say(nLin , 2,cText1,oFont1,,,,2)
oPrn:Say(nLin+1, 2,cText2,oFont1,,,,2)
oPrn:Say(nLin+2, 2,dFecha,oFont1,,,,0)
oPrn:Say(nLin+2,20,cText3,oFont1,,,,0)
oPrn:Say(nLin+2,70,cPagina,oFont1,,,,0)
oPrn:Say(nLin+3, 2,Replicate("-",80),oFont1,,,,0)
oPrn:Say(nLin+4, 2,"FACTURA",oFont1,,,,0)
oPrn:Say(nLin ,10,"FECHA",oFont1,,,,0)
oPrn:Say(nLin ,20,"CLIENTE",oFont1,,,,0)
oPrn:Say(nLin ,30,"NOMBRE",oFont1,,,,0)
oPrn:Say(nLin ,68,"IMPORTE",oFont1,,,,0)
oPrn:Say(nLin+5, 2,Replicate("-",80),oFont1,,,,0)
nLin := 7
Return nil
Gracias a todos y ver si alguien me tira un cable,