Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2006
esocrates esocrates is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 210
Poder: 21
esocrates Va por buen camino
Encontrar un Item en un ListBox

Un saludo a todos,
Necesito ayuda con este código:
Tengo en un Form un ListBox, un Botton y un Edit.
Quiero recorrer el ListBox y si se encuentra determinado Item que se escriba un mensaje en el Edit.
Supongamos que el Item es 'Pepe' y se encuentra en el ListBox
Intento esto y no pasa nada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:= 0 to Listbox1.Items.Count - 1 do
    if Listbox1.ItemIndex <> -1 then
      begin
  if ListBox1.Items.Text='Pepe' then

      begin
        Edit1.Text:= 'Encontrado';
      end;
    end;
end;
end;

Desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 28-04-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
if ListBox1.Items[i].Text='Pepe' then

no creo que
Código Delphi [-]
if Listbox1.ItemIndex <> -1 then
sea necesario... ya que lo estas filtrando desde el ciclo for; si no tiene elementos no se ejecuta el ciclo.
__________________

Responder Con Cita
  #3  
Antiguo 29-04-2006
esocrates esocrates is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 210
Poder: 21
esocrates Va por buen camino
Muchas gracias ContraVeneno;
Lo resolví de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:= 0 to Listbox1.Items.Count - 1 do

      begin

       if  ListBox1.Items[i] ='Pepe' then

          begin
            Edit1.Text:= 'Encontrado';
          end;
       end;
end;

Un saludo
Responder Con Cita
  #4  
Antiguo 29-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Y no sería más sencillo usar IndexOf?

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ListBox1.Items.IndexOf('Pepe') <> -1 then
  begin
    Edt1.Text := 'Encontrado';
  end;
end;

// Saludos
Responder Con Cita
  #5  
Antiguo 29-04-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
Hola, no necesitas poner esos begins despues del if, ya que solo son necesarios cuando debajo del if hay mas de una instrucción. Además en este caso es mejor utilizar un repeat o en todo caso un while en lugar de un bucle for, porque este último te va a recorrer todo el ListBox siempre, y si la cadena la encuentra, por ejemplo, en la segunda linea no necesita seguir recorriendolo.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  i := 0;
  repeat
    if ListBox1.Items.Strings[i] = 'Pepe' then
      Edit1.text := 'Encontrado';
      i := i + 1;
  until (i = ListBox1.Items.Count) or (edit1.text = 'Encontrado');
//Sale del repeat cuando encuentra la cadena o llegó al ultimo item
end;

Bytes...
Responder Con Cita
  #6  
Antiguo 29-04-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
Cita:
Empezado por roman
¿Y no sería más sencillo usar IndexOf?

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ListBox1.Items.IndexOf('Pepe') <> -1 then
  begin
    Edt1.Text := 'Encontrado';
  end;
end;

No conocía esa función, igual no creo que compile la linea Edt1.Text := 'Encontrado';
Responder Con Cita
  #7  
Antiguo 29-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ojo:

Antes de comenzar el repeat hay que verificar que el list box no esté vacío.

// Saludos
Responder Con Cita
  #8  
Antiguo 29-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Sotrono
no creo que compile la linea Edt1.Text := 'Encontrado';
Claro que sí. Yo a mis "edits" los llamo Edt1, Edt2, Edt3, etc.

// Saludos
Responder Con Cita
  #9  
Antiguo 29-04-2006
esocrates esocrates is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 210
Poder: 21
esocrates Va por buen camino
Muchas gracias roman y sotrono.
Cada una de las soluciones que me han dado me ha enseñado algo nuevo.
Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Deshabilitar un item de un radiogroup... Chente(rMan) OOP 7 03-01-2013 18:00:45
sobre listbox y acceso a un item en particular federiconqn21 Varios 9 01-03-2007 10:22:49
Item de TMeinmenu a la derecha ranaya Varios 2 29-10-2005 22:52:56
añadir item a listbox Cosgaya Varios 1 10-06-2005 01:33:32
ListBox detectar uando sale un item y cuando entra kakesoft OOP 6 01-05-2005 11:07:00


La franja horaria es GMT +2. Ahora son las 14:51:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi