PDA

Ver la Versión Completa : Combobox


cmfab
03-12-2010, 20:23:13
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 Notevi
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 Notevi
03-12-2010, 21:42:13
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:

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. :)