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 05-09-2006
fluckde fluckde is offline
Registrado
 
Registrado: sep 2006
Posts: 1
Poder: 0
fluckde Va por buen camino
seleccionar items en listbox

Hola:
Estoy con un problema y quería ver si ayudan a solucionarlo.
En un listbox tengo un listado de palabras... lo que quiero hacer es
que a medida que escriba en un edit, se vaya seleccionando la línea que
más coincida (y se pinte la linea).

Me explico en un ejemplo:

Tengo en el listbox:
"aba
abaco
aca
doy
dormir"
(la lista podria seguir)

en el edit comienzo a escribir "a"
por lo que "aba" deviera seleccionarse
luego continuo escribiendo "ac"
por lo que "aca" debiera seleccionarse.

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 05-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Wink

Bien, prueba con esto en el evento OnChange de tu TEdit

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var
T, L: String;
n: integer;
begin
If ListBox1.Items.Count=0 then Exit; //Salimos si la lista no tiene texto
T:=AnsiUpperCase(Edit1.text);
for n:=0 to ListBox1.Items.Count-1 do
  begin
  L:=AnsiUpperCase(ListBox1.Items[n]);
  If Pos(T,L)=1 then  //Si el Item N empieza por el texto, lo selecciona y salimos
    begin
    ListBox1.ItemIndex:=n;
    Exit;
    end;
  end;
end;

Este código hace que no diferencie entre mayúsculas y minúsculas. Si quieres que busque un Item que no empiece por, sino que contenga el texto (es decir, que "po" seleccione "Tiempo") entonces cambio "If Pos(T,L)=10" por "If Pos(T,L)>0".

Espero que te sirva de ayuda.
Responder Con Cita
  #3  
Antiguo 05-09-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Otra forma:

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var
  I: Integer;

begin
  if ListBox1.Items.Count = 0 then
    Exit;
  for I := 0 to ListBox1.Items.Count - 1 do
    if AnsiSameText(Edit1.Text, Copy(ListBox1.Items[i], 1, Length(Edit1.Text))) then
    begin
      ListBox1.ItemIndex := I;
      Break
    end
end;

La función AnsiSameText compara dos cadenas sin tomar en cuenta mayúsculas y minúsculas. Ahora, este ejemplo solo compara lo que has escrito en Edit1 con el inicio de cada Item en ListBox1, tal como lo pides en tu mensaje.


Saludos...
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
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar david duarte SQL 7 05-04-2010 21:15:43
Listbox con items genericos ANG4L Varios 2 11-05-2006 03:54:37
seleccionar items de 2 listview arana Varios 0 11-10-2004 18:39:43
ListBox Items Hint (MUY URGENTE !!!!) jymy788 Varios 2 17-09-2004 09:41:58
Componente de dos ListBox con items intercambiables Tomás OOP 6 07-05-2004 18:42:39


La franja horaria es GMT +2. Ahora son las 00:12:30.


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