Foros Club Delphi

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

cmfab 03-12-2010 20:23:13

Combobox
 
Hola a todos, por mas que he buscado decidí preguntar porque no encuentro la respuesta.

Tengo una tabla por ejemplo con un solo campo: "Descripciones". necesito que el usuario escriba las descripciones en un combobox y a medida que va existiendo coincidencia se vaya filtrando una lista con las descripciones encontradas. al final si no existe ninguna coincidencia (la lista está vacía) de lo que ha escrito entonces agregar la descripcion al final de la tabla.

Es posible que existan ejemplos concretos de esta operación pero no los logré encontrar.

Muchas Gracias a todos

Caral 03-12-2010 20:33:25

Hola
Escribir en un Combobox ?.
Saludos

Casimiro Noteví 03-12-2010 20:42:22

La propiedad "Style" debe ser: csDropDownList

cmfab 03-12-2010 21:05:09

Gracias. lo de escribir en un combobox sabia que podia hacer. lo que me trae mas problemas es la otra parte. que componente usar para mostrar "x" cantidad de coincidencias con los registros de la tabla, cuyas descripciones coincidan con la escrita en el combobox

Caral 03-12-2010 21:06:09

Hola
Ningun componente, el mismo combobox sirve.
Saludos

cmfab 03-12-2010 21:14:02

Gracias nuevamente. mira a ver si se entiende mejor

Cargo los items del combobox desde una tabla. pero necesito que el combobox muestre ese contenido, osea esté expnadido y a medidad que el usuario escriba se vaya filtrando. es lo que no logro hacer

Casimiro Noteví 03-12-2010 21:42:13

Cita:

Empezado por cmfab (Mensaje 383983)
Gracias nuevamente. mira a ver si se entiende mejor

Cargo los items del combobox desde una tabla. pero necesito que el combobox muestre ese contenido, osea esté expnadido y a medidad que el usuario escriba se vaya filtrando. es lo que no logro hacer


¿Y si no caben en la pantalla?, un combobox no está pensado para eso.

ecfisa 04-12-2010 01:42:25

Hola.

Se me ocurre que podrías simplificar con un Edit y un DBgrid.

.-En el DBGrid->Options pone a False dgIndicator y dgRowLines.
.-Poné el Edit sobre el título del DBGrid de forma que lo cubra totalmente.
.-Cambia el color del DBGrid para diferenciar.

Luego poné por ejemplo, algo como esto en el evento OnChange del Edit:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Text:= 'SELECT * FROM PRUEBA WHERE CAMPO LIKE '+
     QuotedStr(Edit1.Text+'%');
  Query1.Open;
  if Query1.isEmpty and
   (MessageDlg('¿ Agrega '+Edit1.Text+' ?',mtConfirmation,[mbYes,mbNo],0)=mrYes)then
  begin
    Query1.Close;
    Query1.SQL.Text:='INSERT INTO PRUEBA(CAMPO) VALUES(:CAMPO)';
    Query1.Params.ParamByName('CAMPO').AsString:= Edit1.Text;
    Query1.ExecSQL;
    Query1.Close;
    Query1.SQL.Text:= 'SELECT CAMPO FROM PRUEBA ORDER BY CAMPO';
    Query1.Open;
  end
end;

Da el aspecto de un ComboBox desplegado y realiza la función que creo que buscas.

Un saludo. :)


La franja horaria es GMT +2. Ahora son las 23:55:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi