Mirror

Allow Incremental Searching in your TDataSets (Views: 100)


Problem/Question/Abstract:

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.

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;

<< Back to main page