Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   busqueda avanzada en un stringgrid (https://www.clubdelphi.com/foros/showthread.php?t=79312)

JoseSagas 25-06-2012 15:33:11

busqueda en una lista
 
fijense que tengo una lista de nombres en un stringgrid como puedo hacer que al ir escribiendo en un edit me vaya quitando los nombres que no concuerdan con lo que se esta escribiendo en el edit... por ejemplo: tengo la lista:
1 manuel tobar
2 jose ramirez
3 manuel auceda
4 manolo
5 oscar mauricio

y escribo en el edit: manuel
entonces en el stringgrid ya unicamente me salen los 2 manuel
o si escribo en el edit: ma
me salen todos los que comienzan con "ma" incluyendo oscar mauricio aunque este en el 2do nombre...

y que se vaya haciendo mientras uno escribe... osea mientras uno va escribiendo van disminuyendo las opciones
alguien sabe y podria ayudarme con esto? gracias

JoseSagas 25-06-2012 15:48:43

fijense que enserio necesito saber eso lo antes posible ya que tengo que entregar un programa que utilize este metodo de busqueda pero ya estube probando y no logro hacer que funcione, gracias

JoseSagas 25-06-2012 15:53:39

busqueda avanzada en un stringgrid
 
fijense que tengo una lista de nombres en un stringgrid como puedo hacer que al ir escribiendo en un edit me vaya quitando los nombres que no concuerdan con lo que se esta escribiendo en el edit... por ejemplo: tengo la lista:
1 manuel tobar
2 jose ramirez
3 manuel auceda
4 manolo
5 oscar mauricio

y escribo en el edit: manuel
entonces en el stringgrid ya unicamente me salen los 2 manuel
o si escribo en el edit: ma
me salen todos los que comienzan con "ma" incluyendo oscar mauricio aunque este en el 2do nombre...

y que se vaya haciendo mientras uno escribe... osea mientras uno va escribiendo van disminuyendo las opciones
alguien sabe y podria ayudarme con esto? gracias

les agradeceria mucho que el que sepa como hacerlo me conteste ya que necesito hacerlo para un programa que tengo que entregar gracias

Casimiro Notevi 25-06-2012 16:13:29

Te recuerdo nuestra guía de estilo.

Además, se supone que los que estamos aqui leemos los mensajes, no hace falta que lo pongas, y lo de urgente, si leyeras la guía de estilo, verías que no está permitido.
Además estaría bien que pusieras lo que estás haciendo para que te ayudemos con tu código, ¿quieres el código completo?, si ni siquieras has dicho qué base de datos estás usando, ni qué componentes, ni... nada de nada.
Por si fuese poco, ese es un tema que ha sido tratado decenas de veces, no tienes más que hacer una búsqueda y encontrarás muchas referencias al mismo, si hubieses puesto un título descriptivo, claro, pero como tampoco lo has hecho... entonces no aparecen, porque lo normal es que al final de la página aparezcan los títulos similares del tema que se trate. En este caso aparecerá todos los que hayan puesto "urgente", "ayuda", etc.

Modifico el título.

Casimiro Notevi 25-06-2012 16:14:43

Combino este mensaje con el otro. No dupliques preguntas de lo mismo.

JoseSagas 25-06-2012 17:58:27

ya logre hacerlo :D asi que si alguno de los que ha leido esto, o que lo va a leer quiere saber como se hace con mucho gusto se lo digo ;)

ecfisa 25-06-2012 18:24:54

Cita:

Empezado por JoseSagas (Mensaje 435976)
ya logre hacerlo :D asi que si alguno de los que ha leido esto, o que lo va a leer quiere saber como se hace con mucho gusto se lo digo ;)

Hola José.

Estaríamos muy agradecidos si nos comentaras la solución que le diste.

Saludos. :)

Casimiro Notevi 25-06-2012 18:25:39

Según nuestra guía de estilo, deberías explicarlo para que otros usuarios puedan ver la forma en que lo has resuelto, para eso sirven los foros, no para que otro usuario llegue aquí y tenga que enviarte un mensaje para preguntarte, que puede ser mañana, dentro de un mes o después de años ;)

JoseSagas 25-06-2012 20:02:18

Código Delphi [-]
var //global
 fil2: integer;
 ori: array[1..1000] of string;

//fil2 = stringgrid2.rowcount

procedure TForm4.LabeledEdit64Change(Sender: TObject);
var
 nom: string;
 i,j,tam,cont,fil,cont2: integer;
 enc: array[1..1000] of string;
begin
 nom:= labelededit64.Text;
 tam:= length(nom);
 cont:= 0;
 cont2:= 1;
if nom='' then
  begin
   stringgrid2.RowCount:= fil2;
    for i := 1 to fil2 do
      begin
        stringgrid2.Cells[0,i]:= ori[i];
      end;
  end else
  begin
   i:=1;
     while i<>fil2 do
       begin
         if pos(uppercase(nom),uppercase(ori[i]))<>0 then
          begin
            enc[cont2]:= ori[i];
            cont2:= cont2+1;
            inc(i);
          end else
           inc(i);
       end;
     for I := 1 to fil2 do
      begin
        stringgrid2.Cells[0,i]:= '';
      end;
     stringgrid2.RowCount:= cont2;
     for I := 1 to cont2 do
       begin
        stringgrid2.Cells[0,i]:= enc[i];
       end;
   end;
end;

esta es la soli¿ucion que le di... utilize POS para ver si el string que esta buscando esta dentro de alguno de los strings que tiene el stringgrid2 en cada una de las celdas del mismo, luego cuando encuentro que SI esta entonces los guardo en la variable ENC que es un vector y siempre lo va buscando en el venctor ORI que es el origininal osea lo que tenia el stringgrid2 antes de comenzar la busqueda... de esta forma nunca faltara ningun dato, espero que les funcione si lo llegan a probar ;) suerte


La franja horaria es GMT +2. Ahora son las 04:35:39.

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