FoxPro/Visual FoxPro - impresion por codigo

   
Vista:

impresion por codigo

Publicado por alberto (399 intervenciones) el 22/09/2008 07:27:34
alguien me puede dar un ej de impresion por codigo de un proceso ya que no puedo solucionar el salto de pagina antes de imprimir en una lx 300
Me interesa saber como setean la impresora y la longuitud de páginas, gracias y se lo agradecere mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:impresion por codigo

Publicado por Fredy Ayala (145 intervenciones) el 22/09/2008 23:57:34
Este ejemplo es de un reporte q envia directo a la impresora, arma un txt y luego pasa directo al puerto

IF thisform.opcincoopcion1.Value = 3 THEN
SQLEXEC(cnCon, "execute VerPrinterSalida ?thisform.txtNumero.value", "cPrinterSalida")
thisform.mostrar_error
IF cPrinterSalida.Printer > 0 THEN
=messagebox("Documento ya fue impreso",16,thisform.caption)
ELSE
IF FILE("SalidaForm.TXT") THEN
delete file SalidaForm.TXT
ENDIF

vCantCopia = 0

FOR vCantCopia = 1 TO thisform.spCopias.Value
WAIT windows "Presione una tecla para imprimir la copia " + ALLTRIM(STR(vCantCopia))
LCFILE = "SalidaForm.TXT"
COPY TO (LCFILE) TYPE DELIMITED WITH TAB
SET TEXTMERGE ON NOSHOW
SET TEXTMERGE TO (LCFILE)
SELE cSalidaForm
GO TOP
Cadena = ""
vTotales = 0
vTotalCant = 0
vLinea = 0
vPagina = 1

<<PADR('Pag. ', 6, " ")>><<PADR(vPagina, 5, " ")>><<' - '>><<PADR('Copia ', 7, " ")>><<PADR(vCantCopia, 5, " ")>>
Cadena = PADR('Fecha: ', 10, " ") + PADR(DTOC(Fecha), 30, " ") + ' ' + PADR('Sucursal: ', 12, " ") + PADR(DesSucursal, 15, " ")
<<Cadena>>
Cadena = PADR('Numero: ', 10, " ") + PADR(NroSalida, 30, " ") + ' ' + PADR('Tipo: ', 12, " ") + PADR(DesTipoAjuste, 15, " ")
<<Cadena>>
Cadena = PADR('Cliente: ', 10, " ") + PADR(RazonSocial, 30, " ") + ' ' + PADR('Deposito: ', 12, " ") + PADR(DesDeposito, 15, " ")
<<Cadena>>
Cadena = PADR('Observ.: ', 10, " ") + PADR(ObsAjuste, 30, " ") + ' ' + PADR('Moneda: ', 12, " ") + PADR(DesMoneda, 15, " ")
<<Cadena>>


<<PADR('Codigo', 15, " ")>><<' '>><<PADR('Descripcion', 50, " ")>><<' '>><<PADL('Cantidad', 10, " ")>><<' '>><<PADL('Precio', 10, " ")>><<' '>><<PADL('SubTotal', 10, " ")>>
<<PADR('------', 15, " ")>><<' '>><<PADR('-----------', 50, " ")>><<' '>><<PADL('--------', 10, " ")>><<' '>><<PADL('------', 10, " ")>><<' '>><<PADL('--------', 10, " ")>>
vLinea = 10
SCAN
vCantidad = formatea_numero(Cantidad)
vPrecioSal = formatea_numero(PrecioSal)
vSubTotal = formatea_numero(Cantidad * PrecioSal)
Cadena = PADR(CodProducto, 15, " ") + ' ' + PADR(DesProducto, 50, " ") + ' ' + PADL(vCantidad, 10, " ") + ' ' + PADL(vPrecioSal, 10, " ") + ' ' + PADL(vSubTotal, 10, " ")
<<Cadena>>
vTotales = vTotales + (ROUND(PrecioSal * Cantidad, 2))
vTotalCant = vTotalCant + Cantidad
vLinea = vLinea + 1
IF vLinea = thisform.spLinea.Value THEN
vPagina = vPagina + 1
<<PADR('Pag. ', 6, " ")>><<PADR(vPagina, 5, " ")>><<' - '>><<PADR('Copia ', 7, " ")>><<PADR(vCantCopia, 5, " ")>>
<<PADR('Codigo', 15, " ")>><<' '>><<PADR('Descripcion', 50, " ")>><<' '>><<PADL('Cantidad', 10, " ")>><<' '>><<PADL('Precio', 10, " ")>><<' '>><<PADL('SubTotal', 10, " ")>>
<<PADR('------', 15, " ")>><<' '>><<PADR('-----------', 50, " ")>><<' '>><<PADL('--------', 10, " ")>><<' '>><<PADL('------', 10, " ")>><<' '>><<PADL('--------', 10, " ")>>
vLinea = 3
ENDIF
ENDSCAN
IF (vLinea + 5) > thisform.spLinea.Value THEN
FOR i = 1 TO (thisform.spLinea.Value - vLinea)

NEXT
ENDIF
Cadena = PADR(" ", 15, " ") + ' ' + PADR(" ", 50, " ") + ' ' + PADL("----------", 10, " ") + ' ' + PADL(" ", 10, " ") + ' ' + PADL("----------", 10, " ")
<<Cadena>>
vTotales = formatea_numero(vTotales)
vTotalCant = formatea_numero(vTotalCant)
Cadena = PADR(" ", 15, " ") + ' ' + PADL("TOTALES ", 50, " ") + ' ' + PADL(vTotalCant, 10, " ") + ' ' + PADL(" ", 10, " ") + ' ' + PADL(vTotales, 10, " ")
<<Cadena>>

Cadena = SPACE(50) + PADR('______________________________', 30, " ")
<<Cadena>>
GO TOP
Cadena = SPACE(50) + PADR(RazonSocial, 30, " ")
<<Cadena>>

vLinea = vLinea + 5
IF thisform.spLinea.Value > vLinea then
FOR i = 1 TO (thisform.spLinea.Value - vLinea)

NEXT
ENDIF

SET TEXTMERGE TO
SET TEXTMERGE OFF

*RUN TYPE "SalidaForm.TXT" >PRN
NEXT
*SQLEXEC(cnCon, "execute PrinterSalida ?thisform.vNumero")
ENDIF
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:impresion por codigo

Publicado por Fredy Ayala (145 intervenciones) el 22/09/2008 23:58:11
Este ejemplo es de un reporte q envia directo a la impresora, arma un txt y luego pasa directo al puerto

IF thisform.opcincoopcion1.Value = 3 THEN
SQLEXEC(cnCon, "execute VerPrinterSalida ?thisform.txtNumero.value", "cPrinterSalida")
thisform.mostrar_error
IF cPrinterSalida.Printer > 0 THEN
=messagebox("Documento ya fue impreso",16,thisform.caption)
ELSE
IF FILE("SalidaForm.TXT") THEN
delete file SalidaForm.TXT
ENDIF

vCantCopia = 0

FOR vCantCopia = 1 TO thisform.spCopias.Value
WAIT windows "Presione una tecla para imprimir la copia " + ALLTRIM(STR(vCantCopia))
LCFILE = "SalidaForm.TXT"
COPY TO (LCFILE) TYPE DELIMITED WITH TAB
SET TEXTMERGE ON NOSHOW
SET TEXTMERGE TO (LCFILE)
SELE cSalidaForm
GO TOP
Cadena = ""
vTotales = 0
vTotalCant = 0
vLinea = 0
vPagina = 1

<<PADR('Pag. ', 6, " ")>><<PADR(vPagina, 5, " ")>><<' - '>><<PADR('Copia ', 7, " ")>><<PADR(vCantCopia, 5, " ")>>
Cadena = PADR('Fecha: ', 10, " ") + PADR(DTOC(Fecha), 30, " ") + ' ' + PADR('Sucursal: ', 12, " ") + PADR(DesSucursal, 15, " ")
<<Cadena>>
Cadena = PADR('Numero: ', 10, " ") + PADR(NroSalida, 30, " ") + ' ' + PADR('Tipo: ', 12, " ") + PADR(DesTipoAjuste, 15, " ")
<<Cadena>>
Cadena = PADR('Cliente: ', 10, " ") + PADR(RazonSocial, 30, " ") + ' ' + PADR('Deposito: ', 12, " ") + PADR(DesDeposito, 15, " ")
<<Cadena>>
Cadena = PADR('Observ.: ', 10, " ") + PADR(ObsAjuste, 30, " ") + ' ' + PADR('Moneda: ', 12, " ") + PADR(DesMoneda, 15, " ")
<<Cadena>>


<<PADR('Codigo', 15, " ")>><<' '>><<PADR('Descripcion', 50, " ")>><<' '>><<PADL('Cantidad', 10, " ")>><<' '>><<PADL('Precio', 10, " ")>><<' '>><<PADL('SubTotal', 10, " ")>>
<<PADR('------', 15, " ")>><<' '>><<PADR('-----------', 50, " ")>><<' '>><<PADL('--------', 10, " ")>><<' '>><<PADL('------', 10, " ")>><<' '>><<PADL('--------', 10, " ")>>
vLinea = 10
SCAN
vCantidad = formatea_numero(Cantidad)
vPrecioSal = formatea_numero(PrecioSal)
vSubTotal = formatea_numero(Cantidad * PrecioSal)
Cadena = PADR(CodProducto, 15, " ") + ' ' + PADR(DesProducto, 50, " ") + ' ' + PADL(vCantidad, 10, " ") + ' ' + PADL(vPrecioSal, 10, " ") + ' ' + PADL(vSubTotal, 10, " ")
<<Cadena>>
vTotales = vTotales + (ROUND(PrecioSal * Cantidad, 2))
vTotalCant = vTotalCant + Cantidad
vLinea = vLinea + 1
IF vLinea = thisform.spLinea.Value THEN
vPagina = vPagina + 1
<<PADR('Pag. ', 6, " ")>><<PADR(vPagina, 5, " ")>><<' - '>><<PADR('Copia ', 7, " ")>><<PADR(vCantCopia, 5, " ")>>
<<PADR('Codigo', 15, " ")>><<' '>><<PADR('Descripcion', 50, " ")>><<' '>><<PADL('Cantidad', 10, " ")>><<' '>><<PADL('Precio', 10, " ")>><<' '>><<PADL('SubTotal', 10, " ")>>
<<PADR('------', 15, " ")>><<' '>><<PADR('-----------', 50, " ")>><<' '>><<PADL('--------', 10, " ")>><<' '>><<PADL('------', 10, " ")>><<' '>><<PADL('--------', 10, " ")>>
vLinea = 3
ENDIF
ENDSCAN
IF (vLinea + 5) > thisform.spLinea.Value THEN
FOR i = 1 TO (thisform.spLinea.Value - vLinea)

NEXT
ENDIF
Cadena = PADR(" ", 15, " ") + ' ' + PADR(" ", 50, " ") + ' ' + PADL("----------", 10, " ") + ' ' + PADL(" ", 10, " ") + ' ' + PADL("----------", 10, " ")
<<Cadena>>
vTotales = formatea_numero(vTotales)
vTotalCant = formatea_numero(vTotalCant)
Cadena = PADR(" ", 15, " ") + ' ' + PADL("TOTALES ", 50, " ") + ' ' + PADL(vTotalCant, 10, " ") + ' ' + PADL(" ", 10, " ") + ' ' + PADL(vTotales, 10, " ")
<<Cadena>>

Cadena = SPACE(50) + PADR('______________________________', 30, " ")
<<Cadena>>
GO TOP
Cadena = SPACE(50) + PADR(RazonSocial, 30, " ")
<<Cadena>>

vLinea = vLinea + 5
IF thisform.spLinea.Value > vLinea then
FOR i = 1 TO (thisform.spLinea.Value - vLinea)

NEXT
ENDIF

SET TEXTMERGE TO
SET TEXTMERGE OFF

*RUN TYPE "SalidaForm.TXT" >PRN
NEXT
*SQLEXEC(cnCon, "execute PrinterSalida ?thisform.vNumero")
ENDIF
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:impresion por codigo

Publicado por alberto (399 intervenciones) el 23/09/2008 03:30:26
GRACIAS FREDY VOY A PROBARLO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:impresion por codigo

Publicado por santiago (376 intervenciones) el 25/09/2008 18:08:20
Disculpen pero si no me equivoco la impresion por codigo no es exactamente el dirigirlo a travez de un txt sino directo a la impresora.

de ser asi, arrancas con:

@prow(),pcol() say "primera linea..."
@prow()+1,pcol() say "segunda linea..."
@prow()+1,pcol() say "tercera linea..."

*** etc ***

@prow()+1,pcol() say "Ultima linea..."

*** puede ser la 65, en caso de ser hoja tamaño A4 ***
*** puede ser la 60, en caso de ser hoja tamaño US LETTER ***

eject

*** para el salto de pagina ***

*** puedes usar codigos de tipos de letra ***

@prow()+1,pcol() say CHR(18) && para caracter normal
@prow()+1,pcol() say CHR(15) && para caracter comprimido
@prow()+1,pcol() say CHR(27) && para caracter grande

*** tambien hay para subrayado, elite, etc, pero ahorita no me acuerdo ***
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar