SoloCodigo
Programación General => Visual FoxPro => Mensaje iniciado por: fab_stgo en Jueves 27 de Agosto de 2009, 20:55
-
Atentos Saludos.
Aqui le planteo el probl.
esta es la rutina original en la cual mano a imprimir en la matricial. el problema es que la hoja es de 33 lineas, me he quedado bloqueado, termina de imprimir si se me va de largo.
FUNC vm_05
PARA tito
SET CONS OFF
SET DEVI TO PRINT
IF tito#2
@ 0.6,34 SAY "__________________" FONT "Times New Roman",9 STYL "BT"
@ 0.8,34 SAY "_____________" FONT "Times New Roman",9 STYL "BT"
@ 2,44 SAY " S.A." FONT "Times New Roman",12 STYL "BT"
@ 3,34 SAY "Productora " FONT "Times New Roman",12 STYL "BT"
@ 3.4,34 SAY "____________" FONT "Times New Roman",9 STYL "BT"
@ 3.6,34 SAY "_____________" FONT "Times New Roman",9 STYL "BT"
@ 5,4 SAY "NOMBRE: " + m.nemple FONT "Times New Roman",8 STYL "BT"
@ 5,83 SAY "MES: "+ CMONTH(fecproc)+ " / " + ALLT(STR(YEAR(fecproc))) FONT "Times New Roman",9 STYL "BT"
@ 6,49 SAY "SOBRE DE PAGO" FONT "Times New Roman", 11 STYL "BTU"
@ 8,30 SAY "INGRESOS" FONT "Times New Roman",9 STYL "BT"
@ 8,70 SAY "DESCUENTOS" FONT "Times New Roman",9 STYL "BT"
@ 9,4 SAY "Sueldo" FONT "Times New Roman",9 STYL "T"
@ 9,43 SAY "$" FONT "Times New Roman",9 STYL "T"
ENDIF
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINT TO
SET PRINT OFF
ENDFUNC
espero me ayuden, en como modicficar para poder imprimir en este tipo de hojas,
gracias
-
Me supongo que lo que quieres hacer es imprimir tus recibos en los formularios troquelados que vienen con una
longitud de la mitad de 11" y con una impresora epson? si es asi pues:
1- Te recomiendo fuertemente que reemplaces tus @ SAY por ??? "TEXTO"+CHR(13)+CHR(10)
2- aca va el ejemplo de como yo lo hago
_cbig=CHR(18)+CHR(14)
_cmbi=CHR(15)+CHR(14)
_csma=CHR(18)+CHR(15)
_cnor=CHR(18)
_cbig=CHR(18)+CHR(14)
_eol =CHR(13)+CHR(10)
??? _eol
??? _cbig+[* LIQUIDACION DE SALARIOS (Art.xxx) *]+_eol+_eol
??? _cmbi+[Empleador ]+_ename+[ N. Patronal ]+SECCION.NPATRON+_eol
??? _cmbi+[Trabajador ]+STRTRAN(CODIGO," ","0")+"-"+CPCONVERT(1252,437,NOMBRE)+_cnor+_eol
??? _cnor+[Periodo ]+_Xper+[ L.]+STRTRAN(_ncompr," ","0")+_cnor+_eol+_eol
*... un largo etcetera intermedio
??? [FECHA DE PAGO: ]+DTOC(_fpago)
??? SPACE(54)+[...............................]+_eol
??? SPACE(80)+[ FIRMA ]+_eol+_eol+_eol+_eol+_eol+_eol
*//
*// FIN DEL RECIBO, SE SUPONE QUE SE HA IMPRESO Y/O AVANZADO 34 LINEAS con _eol(end-of-line)
*//
??? CHR(27)+- &&este es el comando de inicializacion de impresora epson matricial lx-300
_plineno=0 &&seteamos el contador de linea
_pcolno =0 &&seteamos el contador de columna
Pero yo activo la impresora una vez he imprimo todos los recibos y recien alli lo desactivo y a mi me funciona correctamente te recomiendo fuertemente que leas exaustivamente el manual de tu impresora alli hay informacion valiosa que la mayoria de los programadores ignoran.
B)
*******************************************************************************************************
*Estas tres lineas siguientes debes agregar a tu codigo para que simule un saldo de pagina
*y no usar EJECT, ojo luego de avanzar hasta la ultima linea de la hoja!!!!
*??? CHR(27)+- &&este es el comando de inicializacion de impresora epson matricial lx-300
*_plineno=0 &&seteamos el contador de linea
*_pcolno =0 &&seteamos el contador de columna
*******************************************************************************************************
3- Ahora la pregunta del millon porque te recomiendo fuertemente que reemplaces tus @ SAY por ??? pues corre
estas sentencias desde un prg en el fox y verificaras la potencia de manejar la impresora a tu antojo
_picl1= CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR(142)+CHR(207)+CHR( 79)+CHR( 15)+CHR(159)+;
CHR(223)+CHR( 95)+CHR(159)+CHR(223)+CHR(223)+CHR( 80)+CHR( 16)+CHR(208)+CHR(208)+CHR( 16)+;
CHR(208)+CHR(208)+CHR( 16)+CHR(208)+CHR(208)+CHR( 16)+CHR(210)+CHR(215)+CHR( 23)+CHR( 87)+;
CHR(210)+CHR(128)+CHR( 0)+CHR( 64)+CHR(192)+CHR(128)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)
_picl2= CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR(128)+CHR(128)+CHR(128)+;
CHR(128)+CHR(128)+CHR(136)+CHR(140)+CHR( 12)+CHR( 12)+CHR( 4)+CHR( 4)+CHR( 4)+CHR(132)+;
CHR(196)+CHR(196)+CHR(132)+CHR( 4)+CHR( 4)+CHR( 4)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+;
CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)
#define _sendtoprint
#ifdef _sendtoprint
SET CONSOLE OFF
_printer=GETPRINTER()
IF EMPTY( _printer )
MESSAGEBOX( [PRINT CANCEL!], 64, [WARNING!] )
RETURN .F.
ENDIF
#endif
#ifndef _sendtoprint
SET PRINTER TO FILE [SALIDA.TXT] ADDITIVE
SET PRINTER ON TO PROMPT
#else
SET PRINTER TO NAME (_printer)
#endif
SET DEVICE TO PRINTER
??? CHR( 18)+CHR( 15)
??? CHR( 27)+CHR( 89)+CHR( 40)+CHR( 0)+_picl1+" un saludo cordial desde:"+CHR(27)+CHR(74)+CHR(24)+CHR(13)
??? CHR( 27)+CHR( 89)+CHR( 40)+CHR( 0)+_picl2+" Encarnacion-PARAGUAY"+CHR(27)+CHR(74)+CHR(24)+CHR(13)
??? CHR( 27)+CHR( 74)+CHR( 24)+CHR( 13)
SET PDSETUP TO
SET PRINTER OFF
SET DEVICE TO SCREEN
SET CONSOLE ON
SET PRINTER TO 'LPT1'
RETURN .T.
B)
-
Muchas gracias por tu ayuda, voy a ponerla en practica.