PROCEDURE ModEpson
PARAMETERS tcClave, tcPrinterName , tnLargo, tlNoEject
* Valores posibles de tcClave
* --------------------------------------
* "ON" Inicia impresión
* "OFF" Cierra Impresión
* "10" Caracteres a 10 cpi
* "12" Caracteres a 12 cpi
* "10+" 10 cpi comprimidos
* "12+" 12 cpi comprimidos
* "STD" Draft
* "QUA" Quality
* "DBLS" Double Strike ON
* "/DBLS" Double Strike OFF
* ------------------------------------------
LOCAL lcLargoPag,;
lcDataProc,;
lcDraft ,;
lcIncomp ,;
lcOffComp,;
lcIndoce, ;
lcOffDoce, ;
lcDefaultMode,;
lPrintBlank,;
lcDblStrikeOn ,;
lcDblStrikeOff,;
lcQuality ,;
lcDblWidth
* Revisión de parámetros
tnLargo=EVL(tnLargo,72)
tcClave=UPPER(ALLTRIM(EVL(tcClave,"ON")))
* Modo Epson (LX 310, FX 870, FX 880, FX 890 )
lcLargoPag=CHR(27)+CHR(67)+CHR(tnLargo) && Cantidad de líneas de una hoja (72 para 12" )
lcDataProc=CHR(27)+CHR(24) && modo de proceso
lcDraft = chr(27)+chr(120)+chr(0) && Impresión estándar
lcIncomp= chr(27)+chr(15) && comprime caracteres [se aplica sobre 10 / 12 cpi ]
lcOffComp=chr(18) && quita caracteres comprimidos
lcInDoce = Chr(27)+chr(77) && 12 cpi
lcOffDoce = Chr(27)+chr(80) && 10 cpi
lcDefaultMode = COMUN =CHR(27)+CHR(33)+CHR(0)
lcQuality =CHR(27)+CHR(120)+CHR(1)
lcDblWidth =CHR(27)+CHR(33)+CHR(32)
lcDblStrikeOn =CHR(27)+CHR(71)
lcDblStrikeOff =CHR(27)+CHR(72)
lPrintBlank = .t.
DO CASE
CASE tcClave == "ON"
IF EMPTY(tcNamePrinter)
tcNamePrinter = GETPRINTER()
ENDIF
IF EMPTY(tcNamePrinter)
RETURN .F.
ENDIF
SET PRINTER TO NAME (tcPrinterName)
??? lcDataProc + lcLargoPag + lcDraft + lcOffComp
SET DEVICE TO PRINTER
CASE TcClave == "OFF"
* Cierra la impresora de TExto
lPrintBlank = .f.
@ prow(),0 say " "
??? lcOffComp + lcOffDoce + lcDraft + lcDefaultMode
SET PRINTER OFF
IF NOT tlNoEject
EJECT
ENDIF
SET DEVICE TO SCREEN
SET PRINTER TO
CASE tcClave == "10"
??? lcOffComp
??? lcOffdoce
CASE tcClave == "12"
??? lcOffComp
??? lcIndoce
CASE tcClave == "10+"
??? lcOffComp
??? lcOffdoce
??? lcIncomp
CASE tcClave == "12+"
??? lcOffComp
??? lcIndoce
??? lcInComp
CASE tcClave == "STD"
??? lcDraft
CASE tcClave == "QUA"
??? lcQuality
CASE tcClave == "DBLS"
??? lcDblStrikeOn
CASE tcClave == "/DBLS"
??? lcDblStrikeOff
OTHERWISE
ENDCASE
IF NOT lPrintBlank
@ PROW(),0 SAY " "
ENDIF
RETURN
ENDPROC
*********************************
PROCEDURE ImprimeAlgo
LPARAMETERS ta_Body_Array
**********************************
EXTERNAL ARRAY ta_Body_Array
LOCAL lin
lin=0
IF NOT Modepson() && abre la impresora en 72 lineas por página (12"")
&& Me by: Modepson("ON",72,"NombreImpresora")
RETURN
ENDIF
Modepson("12") && Setea a 12 cpi
Modepson("DBLS") && Setea a doble golpe
lin = lin +1
@ lin,1 say "Titulo del Informe"
Modepson("10+") && Setea a 10 cpi comprimidos
lin = lin + 1
@ lin,1 say "SubTitulo del informe"
Modepson("/DBLS") && quita doble golpe
Modepson("12") && Setea a 12 cpi
FOR i=1 TO ALEN(ta_Body_Array)
IF VARTYPE(ta_Body_Array[i])="C"
lin = lin + 1
@ lin,1 say ta_Body_Array[i]
ENDIF
NEXT
Modepson("OFF") && cierra la impresora
ENDPROC