You are not doing anything, you just caught the error in the implementation of the VCL grid that was in Delphi 4 VCL (I do not have earlier CDs here to check, but it could even be in 16 bits Delphi VCL already) and still with us at Delphi 2009.
, , InvalidateRect(). / 0 /. , . /, InvalidateRect() , , .
, , ; , , , . InvalidateRect() (, ), Windows API , CellRect() BoxRect().
InvalidateGrid() , - , , , , , InvalidateCol().
. - , , , . -
StringGrid1.Canvas.Brush.Color := RGB(Random(256), Random(256), Random(256));
StringGrid1.Canvas.FillRect(Rect);
OnDrawCell .