Resulta que tengo una base de datos access, donde tengo almacenado muchos nombres, y para hacer la selección de los nombres, se me ocurrió poner un ComboBox, style csDropDown para que me permita escribir como si fuera un TEdit, y asi poder filtrarlos según con que letra empiecen, y que se me carguen estos filtrados como items. Por ejemplo, si escribo la letra "L", el ComboBox se me rellena con todos los nombres que empiecen con la letra "L", asi:
Código Delphi
[-]
procedure TMiagenda.ComboBox6Change(Sender: TObject);
var nombre:string;
i:integer;
begin
ComboBox6.Items.Clear;
nombre:=ComboBox6.Text;
if (nombre<>'')
then begin
ComboBox6.Items.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from amigos where nombre like '''+ComboBox6.Text+'%''');
ADOQuery1.ExecSQL;
ADOQuery1.Open;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
ComboBox6.Items.Add(ADOQuery1.FieldByName('nombre').AsString);
ADOQuery1.Next;
end;
end
else begin
ComboBox6.Items.Clear;
end;
end;
Pero me pasan algunas cosas que no se como solucionar:
- Cuando escribo algo, si es solo la primera letra, el ComboBox se rellena bien, con todos los nombres que empiezan por esa letra, pero cuando selecciono cualquiera de la lista, no me queda como ComboBox6.Text, por lo que me aparece vacío, y como unico item en la lista, y yo necesito ver la selección.
- Si yo escribo más de una letra, se invierte la escritura, asi:
* si escribo la letra "L" me aparecen todos los que empiezan por "L", pero supongamos que quiero los que empiezan con "LA", como ser Laura, Lautaro, etc. se me invierte la escritura, osea, escribo "L" seguido de eso la "A", pero me lo toma "AL" y asi suscesivamente, asumo que es porque utilizo el evento OnChange, entonces cada vez detecta el cambio.
Como podría hacerlo? se entiende lo que quiero hacer? Es un simple ComboBox que se rellene con los valores que filtro y que me permita seleccionarlos, la idea es no poner un TButton, sino hacerlo directamente.
Si alguien me puede dar una mano, le estare muy agradecido.
Saludos y Gracias