Изменить цвет строки в 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, вам следует выбрать другое свойство, которое будет уникальным для каждой строки.