Delphi – Implementirajte „AutoComplete“ funkciju u programe

Najpoznatija implementacija funkcije AutoComplete je unutar različitih web browser-a, gde se na osnovu baze posećenih sajtova „predviđa“ unos korisnika u Address liniju. Kako korisnik počinje da upisuje adresu, tako mu se nude adrese koje je već posetio, a kada se pojavi ona tražena – dovoljno je da pritisne „Enter“ i browser će se usmeriti u željenom pravcu. Sličnu primenu možete naći i kod aplikacija urađenih u Microsoft Access-u, gde se uz pomoć look-up polja simulira funkcija AutoComplete. Iz ovoga se može zaključiti da ova funkcija najveću primenu može da nađe kod aplikacija koje su zasnovane na bazama podataka, gde ćemo njenom primenom smanjiti unos (kucanje) korisnika aplikacija.

Pokrenite novi projekt u Delphi-ju. Primer ćemo pokazati na jednom ComboBox polju, a isto možete odraditi i kod drugih tipova polja. Na praznu formu dodajte jedan ComboBox i jednu kontrolu „Timer“, koja će biti opciona, a koristiće za malo kašnjenje pre kompletiranja teksta u polju da bi se korisnik mogao odlučiti o ponuđenoj opciji. Da bismo popunili ComboBox, iskoristićemo bazu sa instaliranim fontovima, zato bilo gde u programski kôd postavite sledeću liniju:


ComboBox1.Items := Screen.Fonts;

Sledi dodavanje kôda koji će se izvršavati na unos i promenu unutar ComboBox-a (događaj OnChange):


var
I, StartPoz: Integer;
begin
for I := 0 to ComboBox1.Items.Count -1 do
begin
with ComboBox1 do
begin
if (Text = “) or (LowerCase(Items[I]) =
LowerCase(Text)) then
Exit;
if StrLComp(PChar(LowerCase(Items[I])),
PChar(LowerCase(Text)),Length(Text)) = 0 then
begin
StartPoz := Length(Text);
Text := Text + Copy(Items[I],
StartPoz + 1, Length(Items[I]));
SelStart := StartPoz;
SelLength := Length(Text) – StartPoz;
Exit;
Timer1.Enabled := False;
end;
end;
end;
Timer1.Enabled := False;

Ostaje vam da još samo dodate liniju kôda koja će omogućiti kašnjenje (dodajte unutar obrade događaja OnChange ComboBox-a):


Timer1.Enabled := True;

Pratite Krstaricu na www.krstarica.com