Buenas
Alguna vez he necesitado autocompletar un TEdit en base al texto de una tabla y la recomendación fue usar otro componente como dblookupcombobox, lo cual me vino bárbaro. Pero, en estos días realicé una aplicación en el cual logré hacer un tedit que se autocompleta y quería poner un ejemplo a disposición del foro por si les interesa. Aclaro que no soy programador experto, este código es simple y totalmente mejorable.
Componentes a usar:
-un TQuery apuntando a la base de datos
-un TEdit (en el cual se realizará la búsqueda)
Procedimiento:-
En el evento OnChange del TEdit (Filtra la consulta con el texto que se escriba en el edit)
Código Delphi
[-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
with query1 do
begin
Close;
with sql do
begin
clear;
add('Select * from base.db where campo like ' + quotedstr(edit1.Text + '%')+ 'order by campo');
end;
Open;
end;
end;
En el evento OnKeyUp del Edit:
Código Delphi
[-]
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
texto , campo : string;
begin
texto:=edit1.text;
contador:=contador+1;
campo:=query1.FieldByName('campo').AsString;
Delete(campo,1,contador);
edit1.Text:=texto + campo;
edit1.SelStart:=contador;
edit1.SelLength:=30 end;
La variable "contador" la ponemos como public
En el evento OnCreate del form:
Yo he puesto algunos eventos de teclado para evitar ciertas teclas (tab, enter, etc.) , pero eso ya va a gusto del consumidor, como dije antes, es totalemente mejorable. (Lo hice en Delphi 4 con una base de datos Paradox).
Un abrazo y espero le sirva a alguien.
Walter