Visual Basic - Saber la línea, columna DE 1 TEXTO en 1 TEXTBOX

Life is soft - evento anual de software empresarial
 
Vista:

Saber la línea, columna DE 1 TEXTO en 1 TEXTBOX

Publicado por diego (1 intervención) el 29/08/2000 00:00:00
Necesito hacer como un editor que a la vez que voy escribiendo me diga la posición columna,fila del último caracter introducido. O, si posiciono el caracter con las teclas del cursor que estas posiciones columna,fila vayan cambiando.

Muchas Gracias. Por favor, es urgente!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Saber la línea, columna DE 1 TEXTO en 1 TEXTBOX

Publicado por Javier Pérez (170 intervenciones) el 30/08/2000 00:00:00
Bueno, no es demasiado complicado, aunque tampoco es evidente. Para empezar te diré que puedo explicarte como hacerlo pero utilizando no un TextBox, sino un RichTextBox; no creo que esto suponga ningún problema.

Abre un nuevo proyecto y añade un control RichTextBox y uno StatusBar (de los controles comunes de Windows). Luego copia las siguientes funciones en la sección de código del formulario (también puedes ponerlas en un módulo, aunque tendrás que declararlas como Public entonces):

Private Function numLinea(rt As richtextlib.RichTextBox) As Long

´ Obtenemos el número de línea del cursor de forma directa,
´ mediante GetLineFromChar a partir de la posición actual de selección
´ únicamente tenemos que sumar 1 por numerarse desde 0
numLinea = rt.GetLineFromChar(rt.SelStart) + 1

End Function


Private Function numColumna(rt As richtextlib.RichTextBox) As Long

Dim l As Long, c As Long, c0 As Long
Dim fin As Boolean

´ Obtenemos la posición actual de selección y su correspondiente línea
c0 = rt.SelStart
l = rt.GetLineFromChar(c0)

´ Retrocedemos hasta cambiar de línea (o llegar al inicio del texto)
fin = False
c = c0
While Not fin
If c < 0 Then
fin = True
ElseIf rt.GetLineFromChar(c) <> l Then
fin = True
Else
c = c - 1
End If
Wend

´ El número de columna viene dado entonces por la diferencia entre
´ la posici
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar