Вот так, наверное, лучше. Тем более, нужно же, чтобы ячейка заливалась цветом, а не цвет текста менялся.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
X: Integer;
begin
if TryStrToInt(StringGrid1.Cells[ACol, ARow], X) and (X mod 2 = 0) then
with StringGrid1.Canvas do
begin
Brush.Color := clYellow;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]);
end;
end;
А такие приемчики как
Код:
(Sender as TStringGrid).Cells[ACol, ARow]
нужны, когда одна процедура является обработчиком события сразу для нескольких StringGrid'ов.