delphi 7: Как обновить зависимость цвета ячеек StringGrid от состояния логической переменной

Я хотел бы иметь: если для логической переменной будет установлено значение true, должна ли ячейка (сообщение об ошибке) в StringGrid быть красной. Он не работает автоматически с OnDrawCell. Как я могу достичь этого? Заранее спасибо.


person genakust    schedule 30.06.2016    source источник


Ответы (1)


В событии OnDrawCell проверьте состояние логической переменной и, если должна быть нарисована правильная ячейка, установите красный цвет.

См. delphi: как изменить цвет ячейки в сетке строк.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;  Rect: TRect; State: TGridDrawState);
begin
  if (myBooleanState) and (ACol = 3) and (ARow = 2) then
    with TStringGrid(Sender) do
    begin
      //paint the background red
      Canvas.Brush.Color := clRed;
      Canvas.FillRect(Rect);
      Canvas.TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol, ARow]);
    end;
end;

При изменении состояния логического значения просто вызовите MyStringGrid.Repaint или MyStringGrid.Invalidate.

person LU RD    schedule 30.06.2016