Pesquisa incremental em listbox
Como posso fazer uma pesquisa parcial em um listbox que é carregado de um arquivo texto???
Ex:
[color=red:ea84e62718]Dados no listbox:[/color:ea84e62718]
[color=green:ea84e62718]Antônio Vergão
Suzana Souza
Jairo Silva
José Souza[/color:ea84e62718]
[color=red:ea84e62718]se eu digitar[/color:ea84e62718] [color=darkblue:ea84e62718]S[/color:ea84e62718] [color=red:ea84e62718]então aparecem:[/color:ea84e62718]
[color=green:ea84e62718]Suzana Souza
Jairo Silva
José Sousor[/color:ea84e62718]
[color=red:ea84e62718]se eu digitar [/color:ea84e62718][color=darkblue:ea84e62718]Sou [/color:ea84e62718][color=red:ea84e62718]aparecem:[/color:ea84e62718]
[color=green:ea84e62718]Suzana Souza
José Sousor[/color:ea84e62718]
Ex:
[color=red:ea84e62718]Dados no listbox:[/color:ea84e62718]
[color=green:ea84e62718]Antônio Vergão
Suzana Souza
Jairo Silva
José Souza[/color:ea84e62718]
[color=red:ea84e62718]se eu digitar[/color:ea84e62718] [color=darkblue:ea84e62718]S[/color:ea84e62718] [color=red:ea84e62718]então aparecem:[/color:ea84e62718]
[color=green:ea84e62718]Suzana Souza
Jairo Silva
José Sousor[/color:ea84e62718]
[color=red:ea84e62718]se eu digitar [/color:ea84e62718][color=darkblue:ea84e62718]Sou [/color:ea84e62718][color=red:ea84e62718]aparecem:[/color:ea84e62718]
[color=green:ea84e62718]Suzana Souza
José Sousor[/color:ea84e62718]
Emir Neto
Curtidas 0
Respostas
Lucianols
18/10/2004
Eu faria assim, mas tem maneiras mais simples....
private
Itens: TStringList; //aqui guardar todos os itens da lista
procedure Filtrar(Sender: TListBox; Filtrar: String);
var
I: Integer
begin
if Filtrar=´´ then
Exit;
Sender.Items.Text := Itens.Text; //Faz a lista ser preenchida com todos os dados
while I < Sender.Items.Count do
begin
if Pos(Filtrar, Sender.Items.Strings[I]) = 0 then
Sender.Items.Delete(I)
else
Inc(I)
end;
end;
private
Itens: TStringList; //aqui guardar todos os itens da lista
procedure Filtrar(Sender: TListBox; Filtrar: String);
var
I: Integer
begin
if Filtrar=´´ then
Exit;
Sender.Items.Text := Itens.Text; //Faz a lista ser preenchida com todos os dados
while I < Sender.Items.Count do
begin
if Pos(Filtrar, Sender.Items.Strings[I]) = 0 then
Sender.Items.Delete(I)
else
Inc(I)
end;
end;
GOSTEI 0
Lucianols
18/10/2004
esqueci uma coisa
antes do while faça o I:=0;
antes do while faça o I:=0;
GOSTEI 0
Emir Neto
18/10/2004
Obrigado pela dica, mas meu problema é um pouco mais complexo, veja por que?
Tenho um arquivo texto (ao invés de usar banco de daods estou utilizando um arquivo de texto por limitações de acesso da máquina)
Este arquivo de texto salva os dados do listview, ou seja, se eu remover os que não tem a parte da palavra, quando for fazer novas pesquisar eles não estarão mais no arquivo de texto.
Será que terias uma função que funcionasse assim???
Tenho um arquivo texto (ao invés de usar banco de daods estou utilizando um arquivo de texto por limitações de acesso da máquina)
Este arquivo de texto salva os dados do listview, ou seja, se eu remover os que não tem a parte da palavra, quando for fazer novas pesquisar eles não estarão mais no arquivo de texto.
Será que terias uma função que funcionasse assim???
GOSTEI 0