Viernes 8 de Noviembre de 2024, 20:42
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Separar Textbox Linea Por Linea
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Separar Textbox Linea Por Linea (Leído 12414 veces)
darkasecas
Miembro activo
Mensajes: 32
Separar Textbox Linea Por Linea
«
en:
Miércoles 23 de Febrero de 2005, 18:14 »
0
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!
Tweet
Widark
Miembro MUY activo
Mensajes: 246
Re: Separar Textbox Linea Por Linea
«
Respuesta #1 en:
Miércoles 23 de Febrero de 2005, 18:42 »
0
Hola darkasecas!
No te entendi muy bien pero si te sirve de algo este parametro te informa cuando hay salto (enter) vbCrLf
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
darkasecas
Miembro activo
Mensajes: 32
Re: Separar Textbox Linea Por Linea
«
Respuesta #2 en:
Miércoles 23 de Febrero de 2005, 18:50 »
0
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
Miembro MUY activo
Mensajes: 188
Re: Separar Textbox Linea Por Linea
«
Respuesta #3 en:
Miércoles 23 de Febrero de 2005, 20:10 »
0
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
Miembro activo
Mensajes: 32
Re: Separar Textbox Linea Por Linea
«
Respuesta #4 en:
Miércoles 23 de Febrero de 2005, 20:23 »
0
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
ebolo
Miembro MUY activo
Mensajes: 188
Re: Separar Textbox Linea Por Linea
«
Respuesta #5 en:
Miércoles 23 de Febrero de 2005, 20:43 »
0
por eso he puesto el IIF(...), que controla si hay enter o no.
Y si siempre tiene que acabar con "/n" pues le pones:
ImprimirXLinea = IIf(Right$(qControl, 2) = vbCrLf, Replace(Left$(qControl, Len(qControl) - 2), vbCrLf, "/n"), Replace(qControl, vbCrLf, "/n")) & "/n"
Si no tiene nada que reemplzar le pondrá el separador al final haya entero no (se supone) - hay que probarlo.
Saludos.
darkasecas
Miembro activo
Mensajes: 32
Re: Separar Textbox Linea Por Linea
«
Respuesta #6 en:
Miércoles 23 de Febrero de 2005, 21:05 »
0
una ultima duda, ese codigo que me das, lo uso en vez de la funcion, o lo pego en alguna parte de la funcion
ebolo
Miembro MUY activo
Mensajes: 188
Re: Separar Textbox Linea Por Linea
«
Respuesta #7 en:
Jueves 24 de Febrero de 2005, 10:42 »
0
Según está hecho deberías pegarlo dentro de la función, pero inhabilitando todo lo que tiene la función, o renombras esa y creas de nuevo la función con sólo esa línea y a ver que te hace.
Saludos.
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Separar Textbox Linea Por Linea
«
Respuesta #8 en:
Jueves 24 de Febrero de 2005, 16:29 »
0
Hola.
Igual no se os ocurrió usar como alternativa la función
Split
.
Haz una prueba pasando el texto del textbox a esta función para ver cómo funciona:
Código: Text
Private Sub Dividir(Byval Texto As String)
Dim var1 As Variant
var1 = Split(Texto, vbCrLf)
Dim i1 As Integer
For i1 = 0 To Ubound(var1)
MsgBox var1(i1)
Next i1
End Sub
...Desdee luego que la solución de ebolo es más directa en cuanto ya prepara el texto para ser grabado en la bd (sustituyendo cr + lf por '/n'), pero bueno, por tener en cuenta posibilidades...
Chao.
darkasecas
Miembro activo
Mensajes: 32
Re: Separar Textbox Linea Por Linea
«
Respuesta #9 en:
Jueves 24 de Febrero de 2005, 16:48 »
0
pues no me funcionan esos, tal vez no me estoy explicando bien, pondre otro ejemplo
esto es lo que escribo en el textbox
blah blah blah(enter)
bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh <---hasta aqui llega porque se
blih blih blih blih blih blih acaba el espacio del textbox
pero no le doy enter ni nada
(el codigo qeu em dieron
funcionaria si lo hiciera pero
la idea es qe no tenga que
hacerlo)
me lo deberia separar asi:
blah blah blah\n
bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh\n
blih blih blih blih blih blih\n
pero lo separa asi:
blah blah blah\n
bleh bleh bleh\n
bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh blih blih bl\n
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Separar Textbox Linea Por Linea
«
Respuesta #10 en:
Jueves 24 de Febrero de 2005, 17:21 »
0
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
Miembro activo
Mensajes: 32
Re: Separar Textbox Linea Por Linea
«
Respuesta #11 en:
Jueves 24 de Febrero de 2005, 18:44 »
0
'chas gracias brroz funcionno perfecto ,me has salvado la vida!!
ebolo
Miembro MUY activo
Mensajes: 188
Re: Separar Textbox Linea Por Linea
«
Respuesta #12 en:
Jueves 24 de Febrero de 2005, 22:54 »
0
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
Miembro MUY activo
Mensajes: 117
Re: Separar Textbox Linea Por Linea
«
Respuesta #13 en:
Viernes 25 de Febrero de 2005, 05:21 »
0
Esto tb me sirvio a mi para aprender. Gracias!
Nos vemos gente...!
Saludos.
Saludos.
Makko.
My life is a simple thing that would interest no one. It is a known fact that I was born and that is all that is necessary.
Brroz
Miembro de PLATA
Mensajes: 1058
Re: Separar Textbox Linea Por Linea
«
Respuesta #14 en:
Viernes 25 de Febrero de 2005, 13:16 »
0
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.
ebolo
Miembro MUY activo
Mensajes: 188
Re: Separar Textbox Linea Por Linea
«
Respuesta #15 en:
Viernes 25 de Febrero de 2005, 20:48 »
0
Entendido.
Graciasssssssssss.
Como siempre te debo una:
&
.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Separar Textbox Linea Por Linea