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 31-10-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Buscar en tlistbox con tedit

Muchos en este foros han utilizado pienso yo el Trucomanía y lo que quiero hacer pienso que sea sencillo. Me gustaría saber si alguien tiene una idea de como hacer lo mismo que hace el trucomanía en la ficha LISTADO de su explorador de trucos. O sea tengo un edit y un listbox con varias items en mi form y me gustaría hacer un sistema de búsqueda tal que a medida que vaya insertando caracteres en el edit se vayan que dando los items del listbox que coinciden con lo que está escrito en el edit, y si el edit no tiene nada escrito que se muestren todas las items del listox. Espero me ayuden.

graciassssss saludos a todos ......
Responder Con Cita
  #2  
Antiguo 01-11-2005
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
El explorador de trucos de trucomanía realmente usa un dbgrid así que posiblemente lo que haga sea lanzar un Locate del DataSet que use en el evento OnChange del Edit; algo como:

Código Delphi [-]
procedure Edit1Change(Sender: TObject);
begin
  Table1.Locate('titulo_truco', Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;

Desconozco qué base de datos o cuáles componentes use para mantener la base de trucos. Pero aún si no usas propiamente una base de datos, puedes hacer uso de un ClientDataSet en el que almacenes los elementos que guardarías en el ListBox y en lugar de éste usar un DBGrid.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hace tiempo elaboré un componente que hace algo similar pero con un Edit y un ComboBox, no es exactamente lo que buscas pero tal vez puedas obtener algunas ideas del código.

AutoCompleteEdit

Instala el componente, agrega una instancia en un Form y modifica la propiedad SearchList para agregar las cadenas, después lo que escribes en el Edit se buscará en esta lista al estilo AutoCompletar.

Por otra parte, me parece mejor idea implementarlo con un DBGrid porque mi código utiliza búsqueda binaria y no es la forma óptima de hacerlo.

Un saludo.

Última edición por Héctor Randolph fecha: 07-11-2005 a las 16:30:52. Razón: Actualizar enlace
Responder Con Cita
  #4  
Antiguo 01-11-2005
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 HECTOR RANDOLPH
no es exactamente lo que buscas pero tal vez puedas obtener algunas ideas del código.
Y ¡vaya que se obtienen algunas ideas!

Tu componente me ha parecido magnífica. Gracias por compartirla.

// Saludos
Responder Con Cita
  #5  
Antiguo 01-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Hector te diré que eso no es lo que busco pero bueno muchas gracias y te digo lo mismo que Roman tu componente está buenísimo me servirá para otras muchas cosas de importancia que tengo que hacer
Responder Con Cita
  #6  
Antiguo 01-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Roman la idea que me diste no la he puesto en práctica todavía, o sea en estos momentos lo haré y te diré el resultado ok saludo a ti y a Hector en especial y en general a todos los que visitan esta importántísima página en INTERNET
Responder Con Cita
  #7  
Antiguo 02-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Segun lo que entendí, quieres hacerlo mas o menos como lo hace la busqueda de Winamp (Jump). Que a medida que se digita, vaya filtrandose.
Usando la misma idea de roman sobre un DBGrid.Teniendo la propiedad Filtered del dataset habilitado
Código Delphi [-]
table1.filter:='campo='QuoteStr(edit1.text+'%');
Si esto no funciona hazlo con Query y sentencias SQL
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #8  
Antiguo 02-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Socios les diré que no he podido probar a completo lo que me expone Roman, pero Vtdeledon que no se nada de nada de sql ni de insertar una consulta en delphi. A ver si me explico y es si está dentro de tus posibilidades podrías explicármelo un poquito mejor, o sea, por pasos.

Graciasss de antemano

Última edición por kakesoft fecha: 05-11-2005 a las 23:48:37.
Responder Con Cita
  #9  
Antiguo 02-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
¿Qué manejador de base de datos usas?

Así será más fácil responder.
Responder Con Cita
  #10  
Antiguo 03-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Hector te diré que utilizo las Ado, para insertar en el form tablas de una base de datos hecha en Access.
Responder Con Cita
  #11  
Antiguo 04-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por kakesoft
Socios les diré que no he podido probar a completo lo que me expone Roman,
Ya lo probaste???
Cita:
Empezado por kakesoft
pero Vtdeledon que no se nada de nada de sql
Consigue algunos manuales basicos en google,
Cita:
Empezado por kakesoft
ni de insertar una consulta en delphi.
Con AdoQuery, en su propiedad SQL asignas la sentencia.
Cita:
Empezado por kakesoft
Haber si me explico
Se dice A ver. Siento haberte corregido, pero se ve extraño esa palabra así
Cita:
Empezado por kakesoft
y es si está dentro de tus posibilidades podrías explicármelo un poquito mejor, o sea, por pasos.
Creo que con lo dicho puedes hacerlo.
Código Delphi [-]
//Asignas en la propiedad SQL del Adoquery
{ Select campoamostrar from tabla
  where campo=:titulo
}
procedure Edit1Change(Sender: TObject);
begin
  with AdoQuery1 do begin
    Close;
    ParamByName('titulo').AsString:=Edit1.text;
    Open;
  end;
end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #12  
Antiguo 04-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola vtdeleon

Yo diría que aún falta algo más por resolver, la idea es que
se filtren los registros que contienene como prefijo al texto que está escrito en el TEdit.

En el código que publicaste sólo se incluyen los registros que coinciden por completo con el texto.

Falta añadir un LIKE o algo asi.

Un saludo.
Responder Con Cita
  #13  
Antiguo 04-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por HECTOR RANDOLPH
Yo diría que aún falta algo más por resolver, la idea es que
se filtren los registros que contienene como prefijo al texto que está escrito en el TEdit.

En el código que publicaste sólo se incluyen los registros que coinciden por completo con el texto.

Falta añadir un LIKE o algo asi.
Tienes toda la razon, se me escapo eso. Tambien puede usar containing*


*No estoy seguro si en toda BD se puede hacer
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #14  
Antiguo 04-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola kakesoft prueba con esto

Código SQL [-]
SELECT * FROM nombre_tabla WHERE nombre_campo LIKE texto*

En donde texto es la palabra que deseas filtrar seguida de una asterisco.

Regularmente se utilizaría la cláusula LIKE asi

Código SQL [-]
SELECT * FROM tabla WHERE campo LIKE texto%

Pero en Access me parece que funciona con asterisco (*) y no con porcentaje (%).

Con esta sentencia y la solución de vtdeleon creo que queda resuelto.

Ahora mismo recordé que hace ya algún tiempo surgió una pregunta parecida a esta en este hilo, pero en este caso se trataba de interbase.

Un saludo.
Responder Con Cita
  #15  
Antiguo 05-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Socios disculpen pero es que no me sale nada ya que en el evento onchange de edit me da un error y ese error está en Undeclared Identifier ParamByName
Responder Con Cita
  #16  
Antiguo 06-11-2005
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
Con ADO creo que sería algo así:

Código Delphi [-]
AdoQuery.Parameters.ParamByName('titulo').Value := Edit1.Text;

// Saludos
Responder Con Cita
  #17  
Antiguo 06-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Asegurate que ParamByName tenga su referencia del Dataset.
Código Delphi [-]
query.ParamByName(.....
//o tal vez
with query do begin
  ...
  ...
  ...
  ParamByName(...
  ... 
  ...
end;
Un poco de tu codigo no caeria mal
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #18  
Antiguo 08-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Socios disculpen las molestias pero malas noticias, como no se trabajar con sql no se que tipo de errores me puede estar dando la sentencia que me aconsejan poner en la propiedad Sql del adoquery, pero esto no me ha resultado o mejor dicho no me sale lo que quiero, ustedes podrían enviarme un ejemplito por correo?, se los agradecería mucho, graciasss
Responder Con Cita
  #19  
Antiguo 08-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Me he tomado la molestia de esto( sin ofender)
Archivos Adjuntos
Tipo de Archivo: zip EJEMPLO.zip (3,9 KB, 43 visitas)
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #20  
Antiguo 08-11-2005
Avatar de kakesoft
kakesoft kakesoft is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cuba
Posts: 99
Poder: 20
kakesoft Va por buen camino
Socio exactamente lo que tienes hecho en ese ejemplito es lo que quiero lograr pero con los componentes ado, intenté utilizando tu mismo ejemplo y no pude, disculpa nuevamente, pero... me podrías explicar con esos controles cómo se hace, ya que trabajo con esos y no con otros, o sea me es muy difícil trabajar con las bases de datos hechas en database desktop, las punto dbf, entre otras, prefiero las mdb de access, por lo que quisiera filtrar los valores de un campo de una tabla en un dbgrid segun se inserten los caracteres en el edit, pero siempre acuérdense utilizando los ADO, me gustaría mucho tener un ejemplito con eso, no te molestes vdeleon, pienso que los integrantes de este foros tan bueno son para ayudarse, ok, lo mismo haría yo contigo si lo tuviera que hacer, no pienses que soy bruto con este problema, simplemente un inexperto, por ahora

saludossss graciassss a todos
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


La franja horaria es GMT +2. Ahora son las 21:12:23.


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