Visual Basic 6 - Destacando palavras em um Texto no controle RichtText


No artigo - VB6 - Usando o controle Rich TextBox I - dei uma introdução geral ao controle Richtext Box e no artigo - VB - trabalhando com formatação em campos Memo de banco de dados - fiz a aplicação prática da teoria. Na verdade o controle RichtText Box possui muitos recursos que podemos explorar.

Neste artigo eu vou mostrar como podemos localizar e destacar , alterando a cor da palavra , palavras em texto carregado no controle RichText Box.

Inicie um novo projeto no VB do tipo standardEXE e no formulário padrão insira os controles: RichText Box , CommandButton , TextBox e Label , conforme figura abaixo:

Agora insira o código abaixo no evento Load do formulário. Ele apenas carrega um arquivo texto para exemplo.

Private Sub Form_Load()
    
'carrega um texto no controle
    RichTextBox1.LoadFile ("c:\teste\contrato2.txt ")
    lblrodape.Visible = False
End Sub

No evento Click do botão de comando inclua o código a seguir . Ele irá chamar a função destacandoPalavras com os argumentos necessários para encontrar a palavra informada na caixa de texto - Text1.text.

Private Sub Command1_Click()
  
'chama a função passando o controle RichtextBox , a palavra que desejamos encontrar e
  Dim valor As Integer
  valor = destacandoPalavras(RichTextBox1, Text1.Text, vbBlue)
  lblrodape.Visible = True
  lblrodape.Caption = " Foram localizadas " & valor & " ocorrências da palavra '" & Text1.Text & "' no texto."
End Sub

A função - destacandoPalavras - muda a cor da palavra encontrada e retorna o número de ocorrências da mesma.

Private Function destacandoPalavras(rtb As RichTextBox, procuraString As String, cor As Long) As Integer

Dim posicaoProcura As Long 'Posição do primeiro caractere a encontrar
Dim procuraTamanho As Long 'comprimento da string a encontrar
Dim inicioSelecaoOriginal As Long
Dim tamanhoSelecionadoOriginal As Long
Dim palavrasEncontradas As Integer 'Numero de vezes que a palavra foi encontrada

'Salva o ponto de inserção atual e o tamanho
inicioSelecaoOriginal = rtb.SelStart
tamanhoSelecionadoOriginal = rtb.SelLength

'armazena o tamanho da string a procurar
procuraTamanho = Len(procuraString)

'Tenta encontrar a primeira vez
posicaoProcura = rtb.Find(procuraString, 0, , rtfNoHighlight)

While posicaoProcura > 0
   palavrasEncontradas = palavrasEncontradas + 1

   rtb.SelStart = posicaoProcura
   rtb.SelLength = procuraTamanho
   rtb.SelColor = cor

   
'tenta encontrar a proxima
   posicaoProcura = rtb.Find(procuraString, _
   posicaoProcura + procuraTamanho, , rtfNoHighlight)
Wend

'Restaura o ponto de inserção ao tamanho e comprimento original
rtb.SelStart = inicioSelecaoOriginal
rtb.SelLength = tamanhoSelecionadoOriginal

'Retorna o numero de vezes que a palavra foi encontrada
destacandoPalavras = palavrasEncontradas

End Function

Executando o projeto e procurando no texto exemplo a palavra 'cidade' vemos o resultado abaixo.

l

Até a próxima dica VB...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti