Question: Is there any way to paint specific cells on Delphi's TStringGrid without using the OnDrawCell event, for instance if I click a button the specified cells will be painted depending on their content.

Answer: 
To keep the painting persistent, the way you should do this is as follows:

* in the button OnClick event handler, set some data that distinguishes these cells
* in the same event handler, invalidate the painting area of cells
* in OnDrawCell event handler do a normal painting for the cells not distinguished
* in the same event handler, paint your distinguished cells differently

--jeroen
```
procedure TForm1.Button1Click(Sender: TObject);
var aRect: TRect;
begin
  aRect := StringGrid1.CellRect(2,2);

  StringGrid1.Canvas.Brush.Color := clBlue; 
  StringGrid1.Canvas.FillRect(aRect);
  StringGrid1.Canvas.Font.Color := clBlack;
  StringGrid1.Canvas.TextOut(aRect.Left + 2 , aRect.Top + 2, StringGrid1.Cells[2, 2]);
end;

```