Multiple record selection in TDBGrid

As we all know, when TDBGrid.Options includes dgRowSelect and
dgMultiSelect, the user can select multiple records by holding down
Ctrl while clicking records in the DBGrid.

I'd like to know whether it is possible (without extensive
modifications to the code for TDBGrid, that is) to enable the usual
selection of multiple records by means of the Shift key, and also,
whether it is possible to "instruct" the TDBGrid to select all records
displayed. (If not, is it possible to programmatically select the
active record in the associated TTable?)

Any ideas would be appreciated.