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 29-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Question Autocompletado en un Edit

estoy haciendo que mientras escribo en un edit en la lista se muestre el elemento que coincida con lo escrito en el edit, ejem:
http://www.geocities.com/david_uh/problema/lista.JPG
el codigo de busqueda es esta funcion que da -1 si no encuentra lo que busca asi de esta manera la lista se deselecciona

Código Delphi [-]
function buscar (Var lista: TListBox ; cad: String; i,s: Integer): Integer;
var a: Integer;
begin
    a := LENGTH(cad);
    if CompareText(copy(lista.Items[i],1,a),cad) = 0 then
        Result := i
    else
    if CompareText(copy(lista.Items[s],1,a),cad) = 0 then
        Result := s
        else
            if (i=s) or (i=s-1) then
                Result := -1
            else
                if CompareText(copy(lista.Items[(i+s) div 2],1,a),cad)>0  then
                    Result := buscar(lista,cad,i,(i+s) div 2)
                else
                    Result := buscar(lista,cad,(i+s) div 2,s);

end;

pero la hacer la busquda encuentra la primera palabra ejem
Jose
y me aparacen todos lo que su nombre empieza con jose bien hasta ahi
pero en la lista existe digamos jose amanqui al dijitar la 'a' ya no encuentra nada

Estare agradecido por cualquier aporte
Responder Con Cita
  #2  
Antiguo 29-06-2007
reevil reevil is offline
Miembro
 
Registrado: abr 2006
Posts: 179
Poder: 19
reevil Va por buen camino
no seria mas facil utilizar un combobox?
ese componente ya tiene esa opcion, solo tienes que poner en true la propiedad auocomplete
Responder Con Cita
  #3  
Antiguo 29-06-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
gracias reevil me diste la idea!!!!:

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var
  i : integer;
begin
  listbox1.itemIndex := -1;
  for i:= 1 to length(edit1.text) do
     SendMessage(listbox1.Handle, WM_CHAR, integer(edit1.text[i]), 0);
  if  (listbox1.itemIndex>=0) and (pos(lowercase(edit1.text), lowercase(listbox1.items[listbox1.itemIndex]))<>1) then
     listbox1.itemIndex := -1;
end;
por cierto coincido con reevil, más sencillo usar un combo, la propiedad style tiene el valor de cssimple que puede dar la sensación de ser un edit.

saludos
__________________
self.free;

Última edición por droguerman fecha: 29-06-2007 a las 17:02:38.
Responder Con Cita
  #4  
Antiguo 29-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Bien "seria más fácil" pero el hecho no es ese sino el PORQUE no funciona el algoritmo como debiera esa era mi inquietud

gracias
Responder Con Cita
  #5  
Antiguo 29-06-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
Cita:
Empezado por david_uh
Bien "seria más fácil" pero el hecho no es ese sino el PORQUE no funciona el algoritmo como debiera esa era mi inquietud

gracias
no lo he probado pero debe ser cosa del compareText, porque no intentas comparar las mismas cadenas pero quitando los espacios en blanco con el stringReplace
__________________
self.free;
Responder Con Cita
  #6  
Antiguo 29-06-2007
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
si bien gracias, el algoritmo esta bien lo que sucedia es que al momento de comparar jose con josé daba que josé es mayo lo cual distorsionaba la búsqueda binaria, además lo que tambien distorsiona la búsqueda es el espacio en blanco demas, por ejemplo
"jose lopez" es menor que "jose lopez", -entre jose y lopez existen dos espacios en blanco - lo cual tambien distorsiona la búsqueda.

Muchas gracias por sus aportes
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
Ayuda para la ayuda maxvera Varios 4 12-05-2007 20:13:44
Instalar Ayuda (.HLP) en la Ayuda de Delphi? MasterXP Varios 6 12-04-2006 06:57:49
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 00:15:18
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59
Ayuda Con Instalacion De Archivos De Ayuda Legolas Varios 1 01-12-2003 14:48:03


La franja horaria es GMT +2. Ahora son las 17:12:44.


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