GARANTIR DESCONTO

Fórum como perquisar uma string dentro de um ListBox #297716

29/09/2005

0

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 !!!!


Fabiano Góes

Fabiano Góes

Responder

Posts

29/09/2005

Michael

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.

 ListBox1.ItemIndex := ListBox1.Items.IndexOf(´Minha string´)


[]´s


Responder

Gostei + 0

29/09/2005

Bruno Belchior

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...


Responder

Gostei + 0

29/09/2005

Michael

Correto Bruno. Esqueci de mencionar isso.


Responder

Gostei + 0

29/09/2005

Fabiano Góes

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:
      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.


Responder

Gostei + 0

29/09/2005

Steve_narancic

tente o seguinte

 ListBox1.ItemIndex := Listobox1.Perform(LB_SELECTSTRING, 0, LongInt(PChar(edit1.text)));



Responder

Gostei + 0

29/09/2005

Fabiano Góes

Bruno então acho que é isso que está acontecendo,

pois na verdade estou pesquisando uma subString( desculpe michael )

tem como solucionar isso ???


Responder

Gostei + 0

29/09/2005

Fabiano Góes

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 ;


Responder

Gostei + 0

29/09/2005

Steve_narancic

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.


Responder

Gostei + 0

29/09/2005

Fabiano Góes

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 .....


Responder

Gostei + 0

29/09/2005

Michael

Olá colega!

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


Responder

Gostei + 0

29/09/2005

Fabiano Góes

Valeu Michael sua função está funcionando perfeitamente e me resolveu um grande problema.

um grande abraço !!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar