Programación General > Visual Basic 6.0 e inferiores
Separar Textbox Linea Por Linea
darkasecas:
hola
miren tengo esta funcin que la uso para separar un texbox multilinea y guardar cada linea por separado que baje de una pagina(no recuerdo cual)
Public Function ImprimirXLinea(qControl As TextBox) As String
' Este procedimiento tomará cada línea de un textbox multiline (23/Ene/00)
' y lo imprimirá en la impresora predeterminada
'
' El parámetro qControl, será el TextBox a usar, en este caso no es necesario
' ya que sólo tenemos un TextBox, pero si se usaran varios...
' sería un procedimiento de uso genérico...
'
Dim i As Long, k As Long
Dim L1 As Long, L2 As Long
' Constantes para usar con SendMessage
Const EM_GETLINECOUNT = &HBA
Const EM_LINEFROMCHAR = &HC9
Const EM_LINELENGTH = &HC1
' Número de líneas del TextBox
k = SendMessage(qControl.hWnd, EM_GETLINECOUNT, 0, 0&)
' Debug.Print ""
Dim xTexto As String
xTexto = emtpy
For i = 0 To k - 1
' Primer carácter de la línea actual
L1 = L1 + L2 + SendMessage(qControl.hWnd, EM_LINEINDEX, i, 0&) + IIf(i > 0, 0, 1)
' Longitud de la línea actual
L2 = SendMessage(qControl.hWnd, EM_LINELENGTH, L1, 0&)
' Imprimimos el trozo de texto que representa a una línea
xTexto = xTexto & Mid$(qControl.Text, L1, L2) & "\n"
Next i
ImprimirXLinea = xTexto
' Le indicamos que ya no hay más que imprimir
End Function
ahora, el problema es que si en el textbox le doy un enter para saltar renglon, al separarlo, hasta antes de donde le d enter sale bien, pero la linea siguiente me la corta y la deja de la longitud de la linea anterior(en la que le di enter)
y los demas caracteres de esa linea me los pone en la siguientre
bueno espero haberme explicado y ojala alguien pueda ayudarme
gracias!
Widark:
Hola darkasecas!
No te entendi muy bien pero si te sirve de algo este parametro te informa cuando hay salto (enter) vbCrLf
darkasecas:
ok a ver si puedo explicarlo mejor con un ejemplo
supongamos que en el textox escribo esto:
blah blah blah(enter)
bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh
la funcion me lo separa asi:
blah blah blah\n
bleh bleh bleh\n
bleh bleh bleh bleh bleh bleh bleh bleh
\n <--es el caracter que uso pa que en la bd separe las lineas
ebolo:
Hola, lo que puedes intentar es poner:
ImprimirXLinea = Replace(qControl ,vbcrlf,"/n")
Esto lo que hace es sustituir todos los enter(vbvrlf) del textbox por el separador de líneas "/n".
De esta forma te evitas leer todas las líneas una a una. Claro siempre deben estar separadas la líneas por enter.
Si en la última línea le dan a enter, te pondrá tambien el separador, para eso podrías poner algo así:
ImprimirXLinea = s = IIf(Right$(qControl, 2) = vbCrLf, Replace(Left$(qControl, Len(qControl) - 2), vbCrLf, "/n"), Replace(qControl, vbCrLf, "/n"))
Hay que probarlo.
PD.: esto me suena a etiquetadoras.
Saludos y suerte.
darkasecas:
sip la cosa es qu no necesariamente la linea se termina con un enter, a veces(casi siempre de hecho) se delimita la linea por el tamaño del textbox
Navegación
[#] Página Siguiente
Ir a la versión completa