como perquisar uma string dentro de um ListBox
E ai galera beleza ?
Gostaria de saber como pesquisar uma string dentro de um ListBox , entao selecionar a linha que sta essa string
Tipo : Listbox.itemIndex := ´a linha que esta a string´
se tiver alguma alma bondosa por perto pra me dar essa dica eu agradeço !!!!
um abraço a todos !!!!
Gostaria de saber como pesquisar uma string dentro de um ListBox , entao selecionar a linha que sta essa string
Tipo : Listbox.itemIndex := ´a linha que esta a string´
se tiver alguma alma bondosa por perto pra me dar essa dica eu agradeço !!!!
um abraço a todos !!!!
Fabiano Góes
Curtidas 0
Respostas
Michael
29/09/2005
Olá!
A classe [b:5d8e98fe56]TStrings[/b:5d8e98fe56], responsável pelo armazenamento dos dados em diversos componentes da VCL (ComboBox, ListBox, Memo, etc), provê o método [b:5d8e98fe56]IndexOf[/b:5d8e98fe56], que retorna o índice da string informada dentro da lista de dados, ou -1 se nada for encontrado.
[]´s
A classe [b:5d8e98fe56]TStrings[/b:5d8e98fe56], responsável pelo armazenamento dos dados em diversos componentes da VCL (ComboBox, ListBox, Memo, etc), provê o método [b:5d8e98fe56]IndexOf[/b:5d8e98fe56], que retorna o índice da string informada dentro da lista de dados, ou -1 se nada for encontrado.
ListBox1.ItemIndex := ListBox1.Items.IndexOf(´Minha string´)
[]´s
GOSTEI 0
Bruno Belchior
29/09/2005
atenção que esse código do Michael só retornará a string se no ListBox estiver obrigatóriamente igual a string passa no IndexOf... caso ela seja uma substring da mesma ela não a encontrará, consequentemente retornando -1...
GOSTEI 0
Michael
29/09/2005
Correto Bruno. Esqueci de mencionar isso.
GOSTEI 0
Fabiano Góes
29/09/2005
Michael obrigado pela atenção ,
não é querendo ser chato não mais não está funcionando,
olha quando o form e aberto o lisxtbox recebe um arquivo texto, e o foco vai para a primeira linha (listbox.ItemIndex := 0)
ai quando tento fazer apesquisa:
´obs: estou pesquisando uma string que estou vendo ela no lisxtbox´
então o listboxbox.itemindex fica igual a -1
mais eu sei que a string existe porque estou vendo ela no listbox.
não é querendo ser chato não mais não está funcionando,
olha quando o form e aberto o lisxtbox recebe um arquivo texto, e o foco vai para a primeira linha (listbox.ItemIndex := 0)
ai quando tento fazer apesquisa:
ListBox1.ItemIndex := ListBox1.Items.IndexOf(edit1.text);
´obs: estou pesquisando uma string que estou vendo ela no lisxtbox´
então o listboxbox.itemindex fica igual a -1
mais eu sei que a string existe porque estou vendo ela no listbox.
GOSTEI 0
Steve_narancic
29/09/2005
tente o seguinte
ListBox1.ItemIndex := Listobox1.Perform(LB_SELECTSTRING, 0, LongInt(PChar(edit1.text)));
GOSTEI 0
Fabiano Góes
29/09/2005
Bruno então acho que é isso que está acontecendo,
pois na verdade estou pesquisando uma subString( desculpe michael )
tem como solucionar isso ???
pois na verdade estou pesquisando uma subString( desculpe michael )
tem como solucionar isso ???
GOSTEI 0
Fabiano Góes
29/09/2005
Pessoal valeu ai pela dica,
Valeu Michael , Bruno, steve_narancic.
Está funcionando beleza, mais tem um porem :
e sem tiver mais de uma string(pesquisada) iguam ???? :?:
tem como fazer um pesquisa daquele ponto pra frente ??
Tipo (F3) Procure Novamente ;
Valeu Michael , Bruno, steve_narancic.
Está funcionando beleza, mais tem um porem :
e sem tiver mais de uma string(pesquisada) iguam ???? :?:
tem como fazer um pesquisa daquele ponto pra frente ??
Tipo (F3) Procure Novamente ;
GOSTEI 0
Steve_narancic
29/09/2005
grava o itemindex em uma variavel e quando pressionar o F3, faz a procura novamente e se o itemindex for menor que o valor da variavel manda fazer a procura novamente.
GOSTEI 0
Fabiano Góes
29/09/2005
steve_narancic , desculpe eu estar sendo chato, mais estou tentando e não estou conseguindo.
será que você poderia me passar um código de exemplo ?
Por favor .....
será que você poderia me passar um código de exemplo ?
Por favor .....
GOSTEI 0
Michael
29/09/2005
Olá colega!
Vc pode criar uma função para isso então. Veja:
Criei esta função agora, portanto, não sei se vai funcionar. Mas teoricamente deve ocorrer tudo bem.
Se vc chamá-la com apenas dois parâmetros, ela vai pesquisar desde o início da lista. Para simular um F3, vc deve informar no 3º parâmetro a posição atual da lista.
[]´s
Vc pode criar uma função para isso então. Veja:
function IndexOfEx(StringList : TStringList; const Text : string; StartIndex : integer = -1) : Integer; var I : Integer; begin Result := -1; for I := StartIndex + 1 to StringList.Count - 1 do if Pos(Text, StringList[I]) > 0 then begin Result := I; break; end; end;
Criei esta função agora, portanto, não sei se vai funcionar. Mas teoricamente deve ocorrer tudo bem.
Se vc chamá-la com apenas dois parâmetros, ela vai pesquisar desde o início da lista. Para simular um F3, vc deve informar no 3º parâmetro a posição atual da lista.
[]´s
GOSTEI 0
Fabiano Góes
29/09/2005
Valeu Michael sua função está funcionando perfeitamente e me resolveu um grande problema.
um grande abraço !!!!
um grande abraço !!!!
GOSTEI 0