Como comenta
Lepe, existe una forma: moviéndonos manualmente por los registros y marcando cada registro del DBGrid como seleccionado (a través de la propiedad 'SelectedRows') en el evento 'OnMouseMove' del DBGrid.
Prueba los siguiente:
Código Delphi
[-]
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
with DBGrid1 do
if dgMultiSelect in Options then
begin
DataSource.DataSet.MoveBy(MouseCoord(X, Y).Y - DataSource.DataSet.RecNo);
SelectedRows.CurrentRowSelected := True;
end;
end;
El único problema es que el método 'MouseCoord' (que devuelve la fila y columna donde nos encontramos según la posición del ratón dentro del DBGrid) siempre devuelve la columna y fila relativa al área de cliente, por lo que la selección fallaría si se hiciera en mitad de la tabla (salvo que todos los registros requeridos quepan en el DBGrid, es decir, sin tener que hacer un desplazamiento hacia abajo para localizar el primer registro de la selección).
Saludos!