It's insane to think you are going to scroll through millions of entries in a string grid component, you would run out of space before you could get to some usable state.
Use a Database, that is what there designed for.
But, if you insist not to, the proper way is to scan a master file of entries, building a selected file that your selected stringgrid will display.
But, even at that point, the generated selected file maybe large, too. You then would set up your string grid to hold only x-number of records and you scroll backwards and forwards from the file in increments
The Object properties of the string grids for each entry can be used to as a file pointer to the entry point of the file etc.
It's your call.