Вам необходимо добавить вызов к TCanvas.FillRect
перед записью нового текста:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
S: String;
begin
S := StringGrid1.Cells[ACol, ARow];
StringGrid1.Canvas.FillRect(Rect);
SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER);
StringGrid1.Canvas.TextRect(Rect,
Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 2, S);
end;
Обратите внимание, что вам также нужно убедиться, что для TStringGrid.DefaultDrawing
установлено значение False
вчтобы это работало.