Изменить цвет строки в DBGrid после события OnCellClick

Я хочу изменить цвет строки щелчка в DBGrid в OnCellClick событие и сохранить это состояние сетки до следующего OnCellClick событие - чем другой ряд будет окрашен и т.д. Кто-нибудь знает, как мне этого добиться?

1 ответ

Решение

Ну, это будет очень плохое решение для рендеринга кода внутри OnCellClick, В основном в OnCellClick вам просто нужно сохранить выбранное RecNo, Как это:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  tag:=DBGrid1.SelectedField.DataSet.RecNo;
end;

И тогда вам нужно изменить OnDrawDataCell вот так:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;  Field: TField; State: TGridDrawState);
begin
  if(Field.DataSet.RecNo=tag)then begin
    DBGrid1.Canvas.Brush.Color:=clYellow;
    DBGrid1.Canvas.Font.Color:=clNavy;
  end else begin
    DBGrid1.Canvas.Brush.Color:=clWhite;
    DBGrid1.Canvas.Font.Color:=clRed;
  end;
  DBGrid1.Canvas.FillRect(Rect);
  DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

PS Если у вас есть несколько записей с одним и тем же RecNo, вам следует выбрать другое свойство, которое будет уникальным для каждой строки.

Другие вопросы по тегам