¿Cómo imprimir un label y un textbox multilínea?

Cuando mando imprimir un formulario, se imprime el texto de un textbox que es mutilínea en una sola línea.
Por ejemplo, en el textbox tengo el siguiente texto:
Ciento cuarenta mil pesos
00/100 M.N
Pero al imprimir junta las dos líneas en una sola:
"ciento cuarenta mil pesos 00/100 m.n"
Lo mismo ocurre con un label de varias líneas de texto.
Quisiera saber si pudieran ayudarme para que la impresión salga tal cual aparece en el formulario.

1 respuesta

Respuesta
1
Efectivamente eso es así. Tiene que calcular la longitud total del texto y hacer una rutina para escribir tantas líneas como sea necesario.
Además debe utilizar una fuente que ocupe un espacio igual para cada carácter por ejemplo Courrier New.
Suerte !
Hola, buen día y gracias por su respuesta.
Soy completamente novato en esto de visual basic y quisiera saber su pudiera ayudarme con algún ejemplo para entender mejor esa rutina y poder aplicarla a mi código. Ya encontré cómo obtener la longitud de la cadena pero no entiendo muy bien cómo iniciar la rutina.
Gracias por todo.
Podríamos hacer algo así:
Dim Largo as Integer
Dim Linea as String
Dim I as Integer
Dim J as Integer
Dim Y as Integer
Private Sub Imprimir()
J = 80 'caracteres x linea
Largo = Len(Texto1)
I = 1
Y = 2000
While i < Largo
Linea = Mid(Texto1,I,J)
Printer.CurrentX = 1000
Printer.CurrentY = Y
Printer.Print Linea
I = I + J
Y = Y + 240
Wend
End Sub
Este podría ser el ejemplo, me imagino que querrás imprimir con el objeto Printer.
Si tienes dudas vuelves a escribir.
Suerte !
Sr. Experto.
Muchas gracias por su paciencia y por su ayuda
¿Existe alguna función para que no corte las palabras al imprimir?. Entiendo que le estoy indicando que imprima hasta cierto número de caracteres pero quisiera saber si existe alguna manera de que imprima hasta un espacio antes de esa palabra que está cortando.
Gracias
No hay una función que me busque el blanco más a la derecha de una cadena pero podemos buscarlo manualmente.
Dim Largo as Integer
Dim Linea as String
Dim Blo80 as string
Dim I as Integer
Dim J as Integer
Dim K as Integer
dim L as Integer
Dim Y as Integer
Private Sub Imprimir()
J = 80 'caracteres x linea
Largo = Len(Texto1)
I = 1
Y = 2000
While i < Largo
Blo80 = Mid(Texto1,I,J)
For K = 80 to 1 Step -1
if mid(Texto1,K,1) = " " then
L=K
K=1
endif
Next K
Linea = Mid(Texto1,I,L)
Printer.CurrentX = 1000
Printer.CurrentY = Y
Printer.Print Linea
I = I + L
Y = Y + 240
Wend
End Sub
Creo que así te puede funcionar !
Sr. Fraco agradezco enormemente que me haya dedicado mucho de su valioso tiempo para entender cuestiones que no comprendía. Ahora ya comrpendo la manera de usar algunas funciones que no había manejado y que ahora gracias a usted ya sé para qué sirven. Sus ejemplos fueron de gran ayuda ya que no maneja demasiado código y los entendí muy bien.
Muchas gracias por todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas