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.
procedure TForm1.Edit1Change(Sender: TObject);
begin
// empty? then do nothing!
if Edit1.Text='' then
exit;
//goto nearest match
with Table1
do
begin
SetKey;
FieldByName('Month').AsString := Edit1.Text;
GotoNearest;
end;
end;