Impresión en V. Basic

Te molesto para hacerte una pregunta respecto a la impresión en vb, mi problema es que la impresora no me toma el seteo que hago por código de la fuente, el tamaño etc., no logro que la impresora imprima en la letra que establezco, seteo la impresión al inicio del procedimiento de impresión y me toma solo la primera linea, luego imprime con otra letra (que es mucho más compacta y dibujada con lo cual tarda mucho en imprimir cada documento, ahh te cuento que la impresora es una matriz de puntos epson), probé seteando la letra linea por linea de impresión y de esa forma me toma el tamaño pero no el tipo de letra que sigue siendo un tipo muy lento y dibujado...
Desde ya te agradezco si tenés alguna solución para este tema y te pregunto si por ejemplo imprimiendo a través de lpt1 como si fuese DOS puedo mejorar la rapidez en la impresión (ya que esto es fundamental, más que las formas, pues es un comprobante para clientes de un negocio), si es así explicame en lo fundamental como se procede para imprimir de esta forma (leí el tema en una de tus respuestas a otro consultante)...
Respuesta
1
Con respecto al problema que presenta tu EPSON al no reconocer el tipo y tamaño de letra, no se que decirte. Debería funcionarte así como lo describes, no creo que sea un problema de VB, más bien un problema de configuración o driver de la impresora, pero se que me vas a decir que con el resto de los programas te funciona bien . Pero con la impresión tipo DOS si te puedo ayudar porque yo tuve la misma necesidad que tu, mi programa tiene que entregar unos recibos a los clientes y se hacen por duplicado(con copia) así que necesariamente tengo que utilizar impresora de matriz de puntos y dejame decirte que no es más rapido... es MUCHÍSIMO más rapido, esto es porque la impresión se hace con el juego de caracteres nativo de la impresora, es decir en modo texto, cuando imprimes desde Windows la impresora lo hace en modo gráfico y demora un mundo. El problema que se presenta es para ubicar el lugar exacto donde quieres imprimir, esto requiere de paciencia y muchos ensayos. Cuando me inicie en el mundo de la programación con DBASE, FOX, CLIPPER ... (por favor no saques la cuenta del tiempo que hace) y querías imprimir "HOLA" en la linea 5, intentar 27 la instrucción seria:
10,27 Say "HOLA"... ¿sencillo no? . Para imprimir directo al LPT1 desde VB lo mismo tendrías que hacer:
Open "LPT1" For output as #1
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, Spc(26) ; "HOLA"
HAsta allí no seria tan difícil, el problema es que si quieres escribir en la misma linea dos cosas debes calcular cuanto te va a ocupar lo que vas a escribir primero para ubicar donde vas a escribir lo demás ... un ejemplo para explicar mejor, supone que (volvemos a DBASE) quieres imprimir un nombre tomado de una base de datos en la intentar 0 de la primera linea, el tamaño de esta campo es de 10 caracteres, por tanto en el peor de los casos va a llegar a la linea 10, luego vas a escribir en la intentar 15 en cargo, por ejemplo "VENDEDOR"
Seria algo así:
0,0 say Nombre
0,15 say "VENDEDOR"
Para hacer esto desde VB debes considerar que el campo nombre aun cuando es de 10 caracteres puede tener un nombre de 4 caracteres por ejemplo, lo cual complica las cosas para imprimir esta linea en las posiciones que queremos, lo que hacemos es imprimir el nombre y luego imprimir un espacio que sera igual a la diferencia entre el máximo que puede ocupar el campo nombre(10 caracteres) y el tamaño real del campo nombre ... nuevamente el ejemplo:
Print #1, Rstvendedores!Nombre & spc(10-len(rstvendedores!nombre)) & spc(5) & "VENDEDOR"
Acá imprimimos el nombre que no sabemos cuan largo es, luego imprimimos un espacio que es igual a lo que nos falta para alcanzar los 10 caracteres (10-len(rstvendedores! Nombre)), luego un espacio en blanco de 5 y llegamos al lugar 15 donde imprimimos "VENDEDOR" Esta es la parte complicada, que se complica aun más cuando tienes que trabajar con montos numéricos formateados, pero lo que vas a obtener en velocidad vale la pena el esfuerzo.
Espero que te sirva esta explicación (un poquito enredada) sino cualquier duda dejame saber
Primero muchas gracias por tu comentario y tiempo, y además te comento que no te preocupes por los cálculos de tiempo que pueda hacer respecto de Dbase, Clipper, etc, ya que mis inicios en la computación se remontan al Basic, la Sinclair (similar a la Comodore64), el grabador y el casete, cobol etc. Lo que si te digo es que poco después abandoné la informática para dedicarme a lo mio (soy Contador Publico), pero desde hace un tiempito atrás retome por una cuestión de gusto y conveniencia... bueno ok, basta de cháchara (palabra jobata si la hay, aunque tampoco lo soy tanto...) y te agradezco mucho que me hayas refrescado el tema y dedicado tu tiempo.
En otra oportunidad te vuelvo a molestar, gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas