Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mata Hary

Botão Localizar e Localizar próxima

Recommended Posts

Estou usando o código abaixo (no VISUAL BASIC 6):

 

Private Sub Command10_Click()

Dim pesquisa, Posição

pesquisa = InputBox("Localizar")

Posição = InStr(TextBox1.Text, pesquisa)

If Posição Then

TextBox1.SelStart = Posição - 1

TextBox1.SelLength = Len(pesquisa)

Else

MsgBox "Texto não encontrado !"

End If

TextBox1.SetFocus

End Sub

 

PROBLEMA:

Ele localiza somente a primeira palavra encontrada.

Se faço a busca novamente, faz a mesma coisa, ou seja, fica na primeira palavra encontrada,não procura a próxima palavra.

Gostaria de acrescentar o LOCALIZAR PRÓXIMA (igual a busca do Bloco de Notas do Windows).

Se pudesse localizar e marcar todas as palavras iguais do texto com uma tarja amarela (como faz o Internet Explorer 8), seria melhor ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hary, eu não tenho essa função em VB, maaaas eu possuo ela em JAVA, vou colocar aqui e veja se você consegue tirar algo dela para te ajudar:

 

Declare
Dim posini as integer = 0

nas globais

 

 

Eis aqui:

 

String t1t = t1.getText();
               int res= ta1.getText().indexOf(t1t,posini);  //procura uma palavra indexOf(palavraqueprocura,desdequeposição) e retorna o index onde achou

               if(res<0){
              	JOptionPane.showMessageDialog(null, "Não encontrado ou este é o fim das ocorrências");
              	posini=0;
               }
               else{
                   ta1.requestFocus();
                   ta1.select(res, res+t1t.length());
                   posini = res+t1t.length();
               }

 

Vou dar nomes aos componentes para você não se perder, mas se você ja sabe JAVA então você ja conheçe hehehe:

 

  • As variaveis
    String t1t = t1.getText()

    e

    int res= ta1.getText().indexOf(t1t,posini)

    equivalem a

    Dim t1t as String = textbox.Text

    e

    Dim res as Integer = Texprocurado.Text

    e como não lembro se o VB possui a função IndexOf eu não vou coloca-la aqui ^^

  • t1 = caixa de texto onde vou digitar a pesquisa
  • ta1 é a textArea que ele vai procurar
  • a função
    t1.getText()

    é a mesma coisa que

    textbox1.Text

  • no VB não existe
    RequestFocus()

    você pode usar apenas o comando select

Ele deve pintar a palavra que você procurou, ou então a letra e ao clicar de novo ele localiza a próxima, ele não mostra o index de onde achou, ele faz igual a pesquisa de texto do Chrome mesmo.

 

O unico problema que você vai ter ai é que para buscar palavras inteiras você deve inserir um espaço antes e depois do texto digitado, mas isso é simplesmente uma concatenação

Dim frase as String = " " & Textodigitado.Text & " "

 

Bom, espero ter ajudado ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.