Multi-Col Listbox / StringGrid & Extended Select

With a listbox, there are options to allow more than one row to be
selected at the same time.

With a stringgrid, there is an option to select a whole row at a time
( goRowSelect).  There is also an option to select a range in the grid
(goRangeSelect).  These seem to work fine individually but together,
strange things start to happen.

Since there is no multi-column listbox with Delphi, I've used a
StringGrid to accomplish the same thing, and I'm using owner-draw so I
can put in bitmaps and other nice things.

My problem is with getting the grid to work like a listbox in the way
that it handles multiple row selections (eg. Ctrl-Click on any column
in a row, and that row gets selected along with any other rows that
are currently selected).

Is there a good example anywhere of how to do this, or is there
another way I can accomplish this with a grid, or with a listbox?

Thanks, Mark.