Delphi 5.
Have a TDBGrid attached to a TDataset.

The dataset has a custom filter ie
procedure TForm1.OnFilterRecord(DataSet: TDataSet; var Accept: Boolean); ...

Sometimes, the filter will only pick out a handful of records from a large
dataset. Say 7 records.

I notice the grid does not display any entries until all 7 have been found
(the grid contains more than 7 rows). To find all 7, the entire file has
been scanned.

Is there a way to update the grid immediately: as soon as OnFilterRecord
has returned Accept=true ?

That is, the grid would populate rows (plop, plop, plop) as the entire
file was scanned and each of the records found. The user could then CANCEL
when they saw their record come up. Instead of waiting for the entire file
to be filtered/scanned.

Dataset.Refresh starts the while process over again: that is not what I want.

Feels like I want a "grid.refresh" method: an Application.ProcessMessages
sort of thing, to ensure the grid is actually displaying the record which
I know has just been accepted in OnFilterRecord.

Is there a trick, or am I deluding myself, and should take a different
approach... ?

Many thanks in advance.


Reply via email to