Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/03/2011, 05:46
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Impresión de una celda multilinea

Es que la sub tiene algunos fallos, como incluir un textbox que no existe y luego restando k-val(k) en lugar de poner simplemente 0.
Tambien tienes que tener en cuenta que lo que espera la funcion es un textbox, de modo que si le mandas una celda de una grilla puede no servir.

De todas formas esta función hace lo contrario de lo que tu buscas porque lo que imprime es un textbox tal cual se muestra en la ventana, con tantas lineas como muestre el textbox.

Esta debería ser la sub correcta. Que me corrijan si me equivoco.

Código vb:
Ver original
  1. Private Sub ImprimirPorLinea(qControl As TextBox)
  2.     Dim i As Long, k As Long
  3.     Dim L1 As Long, L2 As Long
  4.     Const EM_GETLINECOUNT = &HBA
  5.     Const EM_LINEFROMCHAR = &HC9
  6.     Const EM_LINELENGTH = &HC1
  7.     Const EM_LINEINDEX = &HBB
  8.  
  9.     ' Obtenemos el Número de líneas del TextBox
  10.    k = SendMessage(qControl.hwnd, EM_GETLINECOUNT, 0, 0&)
  11.     Printer.Print ""
  12.     For i = 0 To k - 1
  13.         L1 = SendMessage(qControl.hwnd, EM_LINEINDEX, i, 0&) + 1
  14.         L2 = SendMessage(qControl.hwnd, EM_LINELENGTH, L1, 0&)
  15.         Printer.Print Mid$(qControl.Text, L1, L2)
  16.     Next
  17.     Printer.EndDoc
  18. End Sub
Se usaría así:
ImprimirPorLinea Text1


Lo que tu necesitarías sería quitar los saltos de línea. Para eso quizá te valga con reemplazar los saltos de línea por espacios:

Suponiendo que tienes el texto a imprimir en una variable llamada Texto, sería:

Printer.print Replace(Texto, vbcrlf, " ")

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!