Okay, das so nicht ganz korrekt.
col:= selectiert die Column wohl nur, wenn diese nicht bereits selectiert ist (was aber bei der Option goRowSelect bereit der fall ist).
Das Problem ist ja nicht das Selektieren einer Zelle, das funktioniert, sondern, dass die bisher selektierten Zellen nicht automatisch deselektiert werden (bzw. dieses Deselektieren in der Bildschirmdarstellung nicht erkennbar ist), wenn goRowSelect ausgeschaltet wird.
Kommt zwar am Ende das gleich bei raus, aber man muss nicht jeder Zelle der Zeile rückwärts selektieren.
Ich gehe davon aus, dass du das nicht ausprobiert hast, sonst hättest du gesehen, dass das nicht der Fall ist (vermute ich einmal, ausprobiert habe ich es auch nicht). Das "rückwärts selektieren" macht man ja nicht, damit die Zellen der Reihe nach selektiert werden, sondern damit sie der Reihe nach ERKENNBAR deselektiert werden, wenn die nächste Zelle (links davon) selektiert wird.
Möglicherweise würde auch ein grid.invalidate helfen, mit dem Neuzeichnen nach Veränderungen ist das Stringgrid generell recht zurückhaltend.