Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/09/2009, 03:44
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Como saber cuando se paso por un salto de linea RichTextBox?

Es que el tercer parametro es la palabra a buscar, no la posicion.

Lo voy a hacer en una sub a ver si así lo entiendes y te sirve:
(Supongo que tendrás puesto el RichTextBox.HideSelection = False para que no se deje de ver lo selecionado cuando el texto pierde el foco)

La Sub se usaría así:
BuscaTexto "Linea 3", RichTextBox1
' el texto buscado / el textbox donde buscar


Private Sub BuscaTexto(ByVal TextoABuscar As String, TextBox As RichTextBox)
Dim PosicionTexto As Double

' El fallo que tiene esta sub es que si quieres seleccionar la primera palabra del texto, no lo hace.
' Por eso añado esto al comienzo por si acaso:
If TextBox.SelStart = 0 And Left$(TextBox.Text, Len(TextoABuscar)) = TextoABuscar Then
TextBox.SelLength = Len(TextoABuscar)
'seleccionamos el texto y salimos
Exit Sub
End If

' Buscamos a partir del cursor.
' En efecto, esta línea siempre encontraba el mismo texto
'PosicionTexto = InStr(TextBox.SelStart + 1, TextBox.Text, TextoABuscar)

' Ahora buscamos a partir del final de lo seleccionado
PosicionTexto = InStr(TextBox.SelStart + TextBox.SelLength + 1, TextBox.Text, TextoABuscar)
'Esto devuelve la posicion de la letra "L" de "Linea 3"

If PosicionTexto > 0 Then
TextBox.SelStart = PosicionTexto - 1
TextBox.SelLength = Len(TextoABuscar)
End If
'Seleccionamos el texto encontrado

End Sub

Al haber selecionado el texto, si volvemos a ejecutar la sub:

BuscaTexto "Linea 3", RichTextBox1

seleccionara el siguiente "Linea 3", y así hasta el final

Para comenzar una nueva búsqueda solo tendrás que asegurarte de poner:

RichTextBox1.Selstart = 0

Una cosa a tener en cuenta es que la búsqueda es sensible a mayúsculas/minúsculas, de modo que si buscas "Pepito" y existe "pepito", este se pasará por alto y se buscará el siguiente "Pepito".

Por cierto, había olvidado .SelText
El otro día queríamos extraer el texto que habíamos seleccionado y no me acordé que así te lo dá. Que mala cabeza.

Suerte con ello.

Última edición por pkj; 13/09/2009 a las 09:10