Author: Tomas Rutkauskas
Allow Incremental Searching in your TDataSets
Answer:
If you implement your search box (against a TDataSet) with a regular Locate() or
FindKey() call requires that the user has typed in the exact search expression. It
is much more handy to jump to the first match based on a partial search. E.g. if
your user searches for the month 'August' in the list of 12 months' names, the user
would type in 'A' and the cursor would jump to 'April'. Then the user would type
the second letter.. 'u' and 'August' would be selected. This is called 'Incremental
Searching'.
The following piece of code shows how to do it - put it as the onChange event
handler of your form's edit box.
1 2 procedure TForm1.Edit1Change(Sender: TObject);
3 begin4 // empty? then do nothing!5 if Edit1.Text = '' then6 exit;
7 8 //goto nearest match9 with Table1 do10 begin11 SetKey;
12 FieldByName('Month').AsString := Edit1.Text;
13 GotoNearest;
14 end;
15 end;