Sort TListView in Virtual Mode

I have created a file search utility, that uses a TListView for the
results view.  I want to enable sorting of the items in the ListView
in a manner such as used by Explorer.  I already know that I must
manipulate the underlying data to do this, so please don't explain the
obvious.

I have been using CustomSort in my attempts, but regardless of data
type, it is just too slow.  Needless to say, with 10's of thousand
items, I'd expect a lag, but there must be a way to do this
effeciently.

So far I have tried a single TStringList, getting file information on
the fly (took forever), several TStringLists (still takes forever),
creating an array of file information records, and using data from the
record (still slow), even tried threading the sort function, with
little change.

I'm perplexed,  obviously there is a way to create a speedy sort
routine for multiple data types, Microsoft does it, as well as many
custom apps.  What am I overlooking.

Any help would be appreciated...