Имеется StringGrid на форме. Есть пользовательская функция которая подготавливает переменные для использования в событие DrawCell объекта StringGrid.
procedure SetColor(ARow, ACol : integer; Col : TColor);
begin
SC := True;
AR := ARow; //Строка (Глобальные переменные)
AC := ACol; //Столбец
CL := Col; //Цвет
Form1.StringGrid1.Refresh;
SC := False;
end;
Основной код программы где принимается решение закрасить ячейку
...
if step > 0 then //Если step больше нуля, вычисляем предыдущую ячейку и закрашиваем её в желтый цвет
SetColor(cl,(cindex+((step-1) * (step-1))), clYellow);
SetColor(cl, ind, clBlue); //Текущую ячейку закрашиваем в синий цвет cl - строка, ind - столбец.
...
Событие Draw
...
if SC then
if (ARow = CL) and (ACol = AC) then
Canvas.Brush.Color:=CL;
Canvas.FillRect(Rect);
Canvas.TextRect (Rect,Rect.Left,Rect.Top,Cells[ACol,ARow]);
Canvas.TextRect (Rect,Rect.Left+2,Rect.Top+2,Cells[ACol,ARow]);
...
Все бы хорошо но предыдущий закрашенный в желтый цвет ячейка становиться белым а текущая как надо закрашивается в синий цвет. То есть работает но не сохраняется цвет предыдущей ячейки и теряет она желтый цвет при закрашивание текущей ячейки. Как сделать чтобы цвет сохранился?