Programación General > Visual Basic 6.0 e inferiores
Separar Textbox Linea Por Linea
Brroz:
Hola.
Prueba con la función así:
--- Código: Text --- Public Function ImprimirXLinea(qControl As TextBox) As String Const EM_GETLINECOUNT = &HBA Const EM_LINEINDEX = &HBB Const EM_LINELENGTH = &HC1 Dim lLinesCount As Long, lFirstChr As Long, lLineLen As Long lLinesCount = SendMessage(qControl.hwnd, EM_GETLINECOUNT, 0&, 0&) Dim sTextoI As String sTextoI = Replace(qControl.Text, vbCrLf, "") Dim lIdx As Long, iIni As Integer iIni = 1 For lIdx = 0 To lLinesCount - 1 lFirstChr = SendMessage(qControl.hwnd, EM_LINEINDEX, lIdx, 0&) + iIni lLineLen = SendMessage(qControl.hwnd, EM_LINELENGTH, lFirstChr, 0&) ImprimirXLinea = ImprimirXLinea & Left(sTextoI, lLineLen) & "\n" sTextoI = Mid(sTextoI, lLineLen + 1) iIni = 0 Next lIdx End Function
Chao.
darkasecas:
'chas gracias brroz funcionno perfecto ,me has salvado la vida!!
ebolo:
Hola de nuevo.
Brroz una cosilla he probado la función y, si no me he equivocado usándola, el resultado final es el mismo que con el Iif...........,¿no? o hay alguna diferencia que no haya visto, a parte de la "/".
Lo pregunto por aprender siempre cosas nuevas.
Saludos.
Makko:
Esto tb me sirvio a mi para aprender. Gracias!
Nos vemos gente...!
Saludos.
Brroz:
Verás ebolo...
En un principio yo tampoco me dí cuenta del detalle, pero el 'if' puede fallar porque en un textbox multiline, puede haber líneas que no acaben con retorno de carro y nueva línea: si escribiendo en el textbox llegas al final de la línea, automáticamente sigues escribiendo en la siguiente, y sin haber añadido un cr+lf. Osea, tienes una nueva línea que no podrías localizar ya que el texto no incluye en esa posición el correspondiente salto. De ahí que necesites enviar mensajes al control para obtener el número de líneas y donde empiezan.
Espero haberme explicado bien.
Chao.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa