imprimir en formato de texto
Publicado por hevilla Mauriio (3 intervenciones) el 21/02/2001 00:54:05
como se puede hacer desde vfox que imprima directamente en formato texto y no utilice los driver de windows
Valora esta pregunta


0
lnCol = 5
lcFontName = "Lucida Console"
lnFontSize = 8
lcFontStyle = "N"
lcFieldSeparator = Repli(CHR(32),2)
lcFileName = ""
lcPrinterName = GetPrinter()
SET CONSOLE OFF
if empty(m.lcFileName)
SET PRINTER TO NAME (m.lcPrinterName) && WhoImpre es la impresora de Windows
else
SET PRINTER TO &lcFileName
endif
Set Printer ON
? "Titulo del Informe" AT lnCol FONT m.lcFontName, m.lnFontSize+1 STYLE m.lcFontStyle
? repli(chr(151),80) AT lnCol FONT m.lcFontName, m.lnFontSize+1 STYLE m.lcFontStyle
?? ""
SELECT (lcCursor)
SCAN
lcString = ""
FOR i = 1 to FCOUNT(m.lcCursor)
lcField = FIELD(i)
lxValue = EVALUATE(m.lcCursor+"."+lcField)
lcType = VARTYPE(m.lxValue)
lnLength = FSIZE(m.lcField , m.lcCursor)
DO CASE
CASE m.lcType = "C"
lcString = m.lcString ;
+ m.lxValue
CASE m.lcType = "N"
lcString = m.lcString ;
+ transform(m.lxValue,"999,999.99")
OTHERWISE
lcString = m.lcString ;
+ transform(m.lxValue)
ENDCASE
lcSTring = m.lcString ;
+ lcField_Separator
NEXT
? m.lcString AT lnCol FONT m.lcFontName, m.lnFontSize STYLE m.lcFontStyle
ENDSCAN
SET CONSOLE ON
Set Printer Off
SEt printer to
* Note
El comando EJECT se debe utilizar para cambiar de hoja
Generalmente se utiliza un contador de líneas para decidir el momento del EJECT
El encabezado de hoja (y la numeración de página) deben estar en rutinas separadas para llamarlas dentro del proceso las veces que se necesite (cada hoja que empieza, cada EJECT o final de archivo, etc)
Comando ?
? | ?? Expression1 [PICTURE cFormatCodes] | [FUNCTION cFormatCodes] |
[VnWidth] [AT nColumn]
[FONT cFontName [, nFontSize [, nFontCharSet]] [STYLE cFontStyle | Expression2]]
[, Expression3] ...
Wprn = GETPRINTER()
If Empty(Wprn)
MessageBox('Impresion Cancelada!!!',16,'JJ-System')
Return
EndIf
SET PRINTER To Name "&Wprn"
SET DEVICE TO printer
SET PRINTER FONT 'Courier New',12
If WMatricial ="S"
??? CHR(18)
EndIf
SET CONSOLE OFF
ContP = 1
DO ENCABEZADO
Wait Window "Procesando la Pagina "+Alltrim(Str(ContP)) NoWait
DO WHILE !EOF()
@Prow()+1,01 Say Alltrim(SubStr(Cuenta,1,12))
@Prow()+0,15+len(Alltrim(SubStr(Cuenta,1,6))) Say Alltrim(SubStr(detalle,1,30))
@Prow()+0,77 Say Alltrim(SubStr(Status,1,1))
=inkey()
If LastKey() = 27
Que = MessageBox('Esta seguro que quieres detener el reporte',4+32,'JJ-System')
If Que = 6
@Prow()+1,1 Say "Reporte interumpido por el Usuario"
keyboard chr(13)
=inkey()
Exit
EndIf
EndIf
If Prow()=> 50
@Prow()+1,0 Say Replicate("-",80)
@Prow()+1,1 Say "Continua en la siguiente Pagina"
@Prow()+1,1 Say " "
Eject
ContP = ContP + 1
Wait Window "Procesando la Pagina "+Alltrim(Str(ContP)) NoWait
DO ENCABEZADO
EndIf
SKIP
ENDDO
@Prow()+1,0 Say Replicate("-",80)
@Prow()+3,1 Say Replicate("-",40)
@Prow()+1,1 Say "Realizado por:"
@Prow()+1,1 Say Wusuario
@Prow()+1,0 Say " "
If WMatricial="S"
Eject
EndIf
SET PRINTER TO
SET PRINTER OFF
SET DEVICE TO SCREEN
SET CONSOLE ON