Se me ocurre que Permitas las opciones de arrastrar y soltar si se pulsa la tecla control (por ejemplo) de tal forma que en el evento de hacer clic en una celda, preguntas si la tecla control está activada, (quizás en el evento OnMouseDown del Stringgrid) si está pulsada, pones DragMode a dmAutomatic y permites el arrastrar y soltar, si no está pulsada, pones DragMode a dmManual y dejas editar la celda.
Código Delphi
[-]
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then
DragMode := dmAutomatic
else
DragMode := dmManual ;
end;
Espero te sirva