Во многих приложениях есть функция поиска и
выделения ключевых слов в текстовом окошке. В Visual
Basic элемент управления RichTextBox позволяет
использовать эту возможность.
Создайте новый проект. Form1 создастся
поумолчанию.
Поместите на Form1 кнопку и RichTextBox. Установите
свойство Text у RichTextBox в "This is an example of finding text in a rich
text box."
Добавьте следующий код в секцию General Declarations
формы Form1:
Option Explicit
Private Sub Command1_Click()
HighlightWords RichTextBox1, "text", vbRed
End Sub
Private Function HighlightWords(rtb As RichTextBox, _
sFindString As String, _
lColor As Long) _
As Integer
Dim lFoundPos As Long 'Позиция первого найденного
'символа
Dim lFindLength As Long 'Длина искомой строки
Dim lOriginalSelStart As Long
Dim lOriginalSelLength As Long
Dim iMatchCount As Integer 'Количество найденных
'Сохраняем текущее местоположение и длину
lOriginalSelStart = rtb.SelStart
lOriginalSelLength = rtb.SelLength
'Сохраняем длину строки, которую будем искать
lFindLength = Len(sFindString)
'Пытаемся найти первое совпадение
lFoundPos = rtb.Find(sFindString, 0, , rtfNoHighlight)
While lFoundPos > 0
iMatchCount = iMatchCount + 1
rtb.SelStart = lFoundPos
'Как только Вы измените SelStart, то свойство SelLength
'установится в 0
rtb.SelLength = lFindLength
rtb.SelColor = lColor
'Пытаемся найти следующее совпадение
lFoundPos = rtb.Find(sFindString, _
lFoundPos + lFindLength, , rtfNoHighlight)
Wend
'Восстанавливаем первоначальное местоположение
'и длину
rtb.SelStart = lOriginalSelStart
rtb.SelLength = lOriginalSelLength
'Возвращаем количество совпадений
HighlightWords = iMatchCount
End Function
Выберите Start в меню Run, или нажмите клавишу F5 для
запуска проекта. После нажатия кнопки Вы увидите,
что оба слова "text" будут выледены красным
цветом.