• Domingo 22 de Diciembre de 2024, 13:29

Autor Tema:  Imprimir Textbox  (Leído 1035 veces)

mamex

  • Miembro activo
  • **
  • Mensajes: 77
  • Nacionalidad: mx
    • Ver Perfil
Imprimir Textbox
« en: Miércoles 20 de Diciembre de 2006, 06:39 »
0
Disculpen, me gustaría que me ayudaran a imprimir el text de un textBox, ya pude imprimirlo con el objeto Printer, pero no como lo deseo.

Planteo mi problema: tengo un textBox con la propiedad multiline, y quiero que aparezca en la impresión igual. O sea, renglón por renglón. Espero me ayuden. Gracias.

mamex

  • Miembro activo
  • **
  • Mensajes: 77
  • Nacionalidad: mx
    • Ver Perfil
Re: Imprimir Textbox
« Respuesta #1 en: Miércoles 20 de Diciembre de 2006, 06:49 »
0
Bueno, muchas gracias, pero ya lo encontré, jeje, pensé que no me entenderían, aqui les dejo el código para que lo vean.

Código: Text
  1.  
  2. ' Función del API de Windows de 32 bits de múltiple uso
  3. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  4.     (ByVal hWnd As Long, ByVal wMsg As Long, _
  5.     ByVal wParam As Long, ByVal lParam As Long) As Long
  6.  
  7.  
  8. Public Sub ImprimirPorLinea(qControl As TextBox, margenIzquierdo As Integer, margenSuperior As Integer)
  9.     ' Este procedimiento tomará cada línea de un textbox multiline  (23/Ene/00)
  10.     ' y lo imprimirá en la impresora predeterminada
  11.     '
  12.     ' El parámetro qControl, será el TextBox a usar, en este caso no es necesario
  13.     ' ya que sólo tenemos un TextBox, pero si se usaran varios...
  14.     ' sería un procedimiento de uso genérico...
  15.     '
  16.     Dim i As Long, k As Long
  17.     Dim L1 As Long, L2 As Long
  18.     ' Constantes para usar con SendMessage
  19.     Const EM_GETLINECOUNT = &HBA
  20.     Const EM_LINEFROMCHAR = &HC9
  21.     Const EM_LINELENGTH = &HC1
  22.     Const EM_LINEINDEX = &HBB   '--- Faltaba esta declaración       (21/Abr/00)
  23.  
  24.     ' Número de líneas del TextBox
  25.     k = SendMessage(qControl.hWnd, EM_GETLINECOUNT, 0, 0&)
  26.     Printer.ScaleLeft = margenIzquierdo * -1
  27.     Printer.ScaleTop = margenSuperior * -1
  28.    
  29.     Printer.Print ""
  30.     For i = 0 To k - 1
  31.         ' Primer carácter de la línea actual
  32.         L1 = SendMessage(qControl.hWnd, EM_LINEINDEX, i, 0&) + 1
  33.         ' Longitud de la línea actual
  34.         L2 = SendMessage(qControl.hWnd, EM_LINELENGTH, L1, 0&)
  35.         ' Imprimimos el trozo de texto que representa a una línea
  36.         Printer.Print Mid$(qControl.Text, L1, L2)
  37.     Next
  38.     ' Le indicamos que ya no hay más que imprimir
  39.     Printer.EndDoc
  40. End Sub
  41.  
  42.