あれ、Repaint駄目かな?
ハンドラの中で単にRepaint()とするとForm->Repaint()になっちゃうから、
Grid->Repaint()とすれば再描画してくれる(DrawCellが呼ばれる)はずだけど。

もちろん、この場合は一部を書きかえるだけだし、
Repaint()すると場合によってはGrid全体がちらつく(と思う)ので
範囲を指定してInvalidateRectでいいとは思う。