Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ComboBox Dinamico (https://www.clubdelphi.com/foros/showthread.php?t=55483)

sionks 17-04-2008 22:18:02

ComboBox Dinamico
 
Buenas, Estoy un poco atorado con respecto a un problema que se me ha presentado al estar realizando un sistema, la pequeña dificultad es la siguientes:

Estoy Agregando un Combobox, El caul contendra en si los resultados que contenga una consulta tipo busqueda de una tabla, es decir mientras yo voy insertando caracteres en el Combobox, automaticamente los items del combo se vayan actualizando, mostrando solo los que coincidan con dicha busqueda, por la aprte de la busqueda no tengo problema, el detalle es como hacer para que los items, se vayan actualizando.

Aqui les pongo la forma en la que realizo mis busqueda: espero me pueda auxiliar:

Código Delphi [-]

procedure TFMain.CBClienteKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var i:Integer;
    palabras: TStringList;
    consulta: String;
begin
 
  //CBCliente es el ComboBox
 //Clientes es la Consulta con la Tabla
  if CBCliente.Text = '' then
  begin
    CBCliente.Clear;
    consulta:='Select Nombre from Clientes';
    Clientes.close;
    Clientes.sql.clear;
    Clientes.sql.add(consulta);
    Clientes.open;
  end
  else begin
    palabras := TStringList.Create;
    palabras.CommaText := CBCliente.Text;
    Clientes.close;
    Clientes.sql.clear;
    for i:=0 to palabras.Count-1 do
      begin
      consulta:=consulta+'and Nombre like "%'+palabras.Strings[i]+'%"';
      end;
    Delete(consulta,1,3);
    consulta:='Select Nombre from Clientes where'+consulta;
    Clientes.SQL.Add(consulta);
    Clientes.Open;
  end;//else

//AQUI TENDRIA QUE IR LA ACTUALIZACION DE LOS ITEMS

end;

Caro 18-04-2008 02:58:50

Hola sionks, cada vez que se haga la consulta tienes que llenar nuevamente el combo con el nuevo resultado de dicha consulta.

Código Delphi [-]
procedure TFMain.CBClienteKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var i:Integer;
    palabras: TStringList;
    consulta: String;
begin     //CBCliente es el ComboBox
 //Clientes es la Consulta con la Tabla
  if CBCliente.Text = '' then   begin     CBCliente.Clear;     consulta:='Select Nombre from Clientes';
    Clientes.close;
    Clientes.sql.clear;
    Clientes.sql.add(consulta);
    Clientes.open;
  end   else begin     palabras := TStringList.Create;     palabras.CommaText := CBCliente.Text;     Clientes.close;     Clientes.sql.clear;     for i:=0 to palabras.Count-1 do       begin       consulta:=consulta+'and Nombre like "%'+palabras.Strings[i]+'%"';
      end;
    Delete(consulta,1,3);
    consulta:='Select Nombre from Clientes where'+consulta;
    Clientes.SQL.Add(consulta);
    Clientes.Open;
  end;//else

 //AQUI TENDRIA QUE IR LA ACTUALIZACION DE LOS ITEMS    

  CBCliente.Items.Clear;//limpiamos 
  Clientes.First;
  While not Clientes.Eof do
   begin
    CBCliente.Items.Add(Clientes.FieldByName('CAMPO').AsString);   
    Clientes.Next;
   end;

end;

sionks 18-04-2008 06:03:32

Gracias
 
Gracias Amigo, pero lamentablemente, la solucion que me has dado no es nada funcional, debido a que se pierde la cadena de la cual estas haciendo la busqueda, pero igual te agradezco tu interes en ayudarme


La franja horaria es GMT +2. Ahora son las 19:41:17.

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