Trucos Buscar y destacar palabras en un RichTextBox

KB de Microsoft. Article ID: Q154884

En muchas aplicaciones existe una función para buscar y destacar palabras en un texto. Podemos obtener esta funcionalidad mediante el control RichTextBox, como muestra el siguiente ejemplo.

Private Function HighlightWords(rtb As RichTextBox, _
                               sFindString As String, _
                               lColor As Long) _
                               As Integer
     Dim lFoundPos As Long 'Posicion del primer carácter que coincide
     Dim lFindLength As Long 'Longitud del string a buscar
     Dim lOriginalSelStart As Long
     Dim lOriginalSelLength As Long
     Dim iMatchCount As Integer 'Número de veces que se encontró
     'Guardamos la posición del punto de inserción y la longitud del text seleccionado
     lOriginalSelStart = rtb.SelStart
     lOriginalSelLength = rtb.SelLength
     'Guardamos la longitud del texto a buscar
     lFindLength = Len(sFindString)
     'Buscamos la primera ocurrencia
     lFoundPos = rtb.Find(sFindString, 0, , rtfNoHighlight)
     While lFoundPos > 0
       iMatchCount = iMatchCount + 1
       rtb.SelStart = lFoundPos
       'La propiedad SelLength se pone a 0 al cambiar SelStart
       rtb.SelLength = lFindLength
       rtb.SelColor = lColor
       'Buscamos la siguiente ocurrencia
       lFoundPos = rtb.Find(sFindString, _
         lFoundPos + lFindLength, , rtfNoHighlight)
     Wend
     'Reponemos la posición y longitud del punto de insercción
     rtb.SelStart = lOriginalSelStart
     rtb.SelLength = lOriginalSelLength
     'Devolvemos el número de ocurrencias encontradas
     HighlightWords = iMatchCount
End Function

Y para buscar un texto y señalarlo, por ejemplo en rojo, simplemente :

     HighlightWords RichTextBox1, "TextoBuscado", vbRed



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com