AFAIK, the TDBGrid and TDataSet are interacting correctly - TDataSet 
buffers the records it contains in memory, and won't make them available 
until all records are in, so to speak.

On a different approach... by TDataSet, do you mean a TTable? You might 
try a TQuery instead; depending on the database you're using, and what 
it is you're trying to achieve, it might be an appropriate solution for 
you. What exactly are you using as a database, and how does the user 
interact with the grid in your application?

[EMAIL PROTECTED] wrote:
>
> 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.
>
>  



[Non-text portions of this message have been removed]

Reply via email to