Programación General > Visual Basic 6.0 e inferiores

 Separar Textbox Linea Por Linea

(1/4) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa