BUSCA NO RICHTEXTBOX
Olá,
Estou usando o codigo "RichTextBox1.Find Text1" para fazer busca por uma palavra em um richtextbox. O codigo funciona, mas para na primeria palavra que encontra, ou seja, se existirem mais palavras iguais no texto ele não mostra. Como faço para que a pesquisa pela palavra continue(como no WORD), sem ficar parada na primeira palavra? Obrigado.
Estou usando o codigo "RichTextBox1.Find Text1" para fazer busca por uma palavra em um richtextbox. O codigo funciona, mas para na primeria palavra que encontra, ou seja, se existirem mais palavras iguais no texto ele não mostra. Como faço para que a pesquisa pela palavra continue(como no WORD), sem ficar parada na primeira palavra? Obrigado.
Luiz98
Boa Tarde
Se você estiver usando o InStr para efetuar buscas em Strings longas a rotina abaixo deve resolver.
O Problema é que você não está adiantando o Ponteiro da pesquisa.
Até Breve
[s92]
** Em tempo, existe um Editor de Texto estilo WORDPAD aqui no VBMania que usa o RichTextBox, seria bom você baixar, assim poderia utilizar a lógica deste aplicativo para o RichTextBox
Boa Tarde
Se você estiver usando o InStr para efetuar buscas em Strings longas a rotina abaixo deve resolver.
Private Sub cmdProcura_Click()
Dim i As Integer, iPos As Integer
If Len(txtRTF.Text) = 0 Then Exit Sub
For i = 1 To Len(RichTextBox1.Text)
iPos = InStr(i, RichTextBox1.Text, txtRTF.Text, vbTextCompare)
iPos = InStr(i, RichTextBox1.Text, txtRTF.Text, vbTextCompare)
If iPos = 0 Then Exit For
i = iPos + 1
Next
Next
End Sub
O Problema é que você não está adiantando o Ponteiro da pesquisa.
Até Breve
[s92]
** Em tempo, existe um Editor de Texto estilo WORDPAD aqui no VBMania que usa o RichTextBox, seria bom você baixar, assim poderia utilizar a lógica deste aplicativo para o RichTextBox
Private Sub Command1_Click()
RichTextBox1.Find Text1
End Sub
Felipe
Irá cair no mesmo erro que o Luiz relatou, indicará só a 1Âê ocorrência
Tem que alterar o Ponteiro
[s50]
Irá cair no mesmo erro que o Luiz relatou, indicará só a 1Âê ocorrência
Tem que alterar o Ponteiro
[s50]
Opa, desculpe aew
Acho q nao prestei muita atenção na pergunta
Acho q nao prestei muita atenção na pergunta
LUIZ98, Estou fazendo um editor de PHP/HTML ai ja passei por isso antes, ai navegando na net encontrei num site um jeito diferente, onde as palavras vão sendo pintadas, veja:
Tirado do Link: http://www.macoratti.net/vb_rtb2.htm [txt-backcolor=#00ff00]Site do Macoratii[/txt-backcolor]
No código abaixo o Text1.text é a palavra a ser procurada no RichTextBox.
Sic.
Tirado do Link: http://www.macoratti.net/vb_rtb2.htm [txt-backcolor=#00ff00]Site do Macoratii[/txt-backcolor]
No código abaixo o Text1.text é a palavra a ser procurada no RichTextBox.
Sic.
Private Sub Form_Load()
'carrega um texto no controle
RichTextBox1.LoadFile ("c: este\contrato2.txt ")
lblrodape.Visible = False
End Sub
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
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
Tópico encerrado , respostas não são mais permitidas