Numa listview não é nada fácil (aliás bastante dificil e demorado mesmo).
Uma coisa é procurar uma palavra ou filtrar de acordo com uma palavra. Mas para isso tens de explicar melhor o que queres e como queres.
E é em que versão de VB ?
fmorais90
InStr é só para pesquisar texto numa string e o listview já tem algumas funções para isso tipo Me.ListView1.FindItemWithText("TextoProcurar") ... caso seja VB.NET !!!
Private Sub txtPesquisa_Change()
Listar_Clientes
If txtPesquisa.Text <> "" Then
x = 1
y = lstClientes.ListItems.Count
While (x <= y)
If ((optNome.Value = True) And ((InStr(UCase(lstClientes.ListItems.Item(x)), UCase(txtPesquisa.Text)) > 0))) Then GoTo Fim
If ((optNIF.Value = True) And ((InStr(lstClientes.ListItems.Item(x).ListSubItems.Item(1), Val(txtPesquisa.Text)) > 0))) Then GoTo Fim
lstClientes.ListItems.Remove (x)
x = x - 1
y = y - 1
Fim:
x = x + 1
Wend
End If
End Sub
>> Certo... mas por acaso fiz há pouco tempo um projecto em VB6 e usei o InStr...
Funciona perfeitamente...
Sim, mas com o teu código o que fazes é remover os items da lista. Imagina na pesquisa da palavra "exemplo". Quando carregar em "e" apagas todos os item que não tenham a palavra "e". Depois carregas em "x" e apagar todos os que não tenham a palavra "ex".
Agora o problema: E se apagares o x (porque te enganaste a escrever) ? Tens de carregar todos os items e voltar a "filtrar".
O que eu quero dizer é que a listview não se podem fazer filtros simples, no entanto pode servir dependendo do fim a que se que atingir.
Pessoalmente utilizo uma textbox e um botão de pesquisa.
Provavelmente até percebi mal, mas se apagas os itens da lista como é que os colocas lá ?
Tudo bem que está no textchange event mas .... os apagas tens de voltar a coloca-los para poderes filtrar novamente.
Mas vou testar o teu código.
Estou a utilizar o Visual Basic 2005 Express Edition.
fmorais90: É uma coisa desse género. Vou testar esse código. Só não percebi o que é o optNome e o optNif.