PDA

Ver la versión completa : Contar lineas en un textbox multiline VB6



olper
17-12-2003, 18:35
Podria alguien decirme como puedo contar las lineas de un textbox multiline sin tener que utilizar la API de windows

gracias

NeoGenessis
23-12-2003, 16:22
Cuando dices cortar significa usar diversas variables para contener el texto o bien que en el textbox no aparezca la barra de desplazamiento y salte de linea?

-a la segunda no te respondo por lo evidente que es.

-a la primera te dire que tienes diversas opciones:
la primera es seleccionar el texto y ir asignando el texto selecionado a variables (muy lioso)
la otra mas simple es leer todo en una variables y luego usar un bucle para leer. Lo del bucle puedes hacerlo de diversas maneras:

*la primera es haciendo un corte por longitud fija
*la segunda es leyendo letra a letra y cortar en saltos de linea (VbCrLf), tabuladores,....

existen otras posibilidades, pero como no se que es lo que quieres exactamente..... Feliz navidad. :0=

krego
25-12-2003, 23:27
Hola,

Supongo que lo que quiere es contar las líneas que hay escritas en un textbox multiline (supongo, eh? )

En ese caso usa mid para ir viendo caracter a caracter el texto y si el caracter leído es un vbCrLf incrementas en uno el contador que tengas.

Un Saludo!

olper
27-12-2003, 01:52
gracias por las respuesta pero lo de vbCrLf no me vale, ya ke cuando escribes en el textbox y llegas al final salta de linea automaticamente sin insertar o presionas tu el retorno de carro por lo que no puedo detectar el cambio de linea

Se puedo hacer con la API de windows pero yo quiero si utilizarla

olper

krego
28-12-2003, 01:59
tienes razón olper, de todas maneras le daré algunas vueltas más : ) . Una pregunta, como lo puedes hacer con la API?

Gracias y Un Saludo!

-- al día siguiente...

Encontré para hacerlo con la API pero no tiene much gracia la verdad...

'Módulo
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'fin de módulo

Private Sub txtText_Change()
Dim nLineas As Long
nLineas = SendMessageLong(txtText.hwnd, &HBA, 0&, 0& )
print nLineas;
End Sub

Ahora a ver la manera de hacerlo sin la API xD

Un saludo!

The_chacal
07-01-2004, 00:09
Sin api supongo que serías así, perdonad los falos pero es que estoy escribiendo a pelo ya que no estoy en mi casa...

Private sub boton_click()
for x = 1 to len(text1)
s = mid(text1, x, 1)
if s = vbcrlf then
z = z + 1
end if
doEvents
next x
msgbox "Hay: " & z & " líneas", vbinformation, "Pos eso..."
End sub

Espero que te sirva, y que funcione, xD

Saludos.

NeoGenessis
16-01-2004, 13:44
lei un poco mal, no? los saltos de linea de k hablas no lo son. Prueba a grabar el texto y lo veras. solo con saber la cantidad de letras por lineas y contar el total de letras hecho. eso no te salvara de buscar VBCRLF.

unholy
16-01-2004, 15:34
Esa forma d ehacerlo seria demasiado lento, ademas, el TextBox salta la linea de forma automatica ...

La forma mas sim'ple que se me ocurre es que cuentes el numero de caracterres que entran en una linea de tu TextBox y lo dividas por el numero de caracteres totales sepranado posteriormente las cadenas correspodnientes.


No se si sera la forma mas elegante de hacerlo, pero sin tocar la API es lo unico que se me ocurre, y esta claro que la otra forma de hacerlo lo unico que va a conseguir es que tu programa sea lentisimo en cuanto tenga que analizar un texto un poco mas largo de lo normal