Если Вы хотите окрасить выбранную строку в DBGrid, но Вы не хотите использовать опцию dgRowSelect, потому что Вы хотите редактировать данные, Вы можете использовать следующую методику в событии DBGrid.OnDrawColumnCell:
procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TCustomDBGridCracker(Sender) do begin
if DataLink.ActiveRecord = Row - 1 then
Canvas.Brush.Color := clRed
else
Canvas.Brush.Color := clWhite;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
if gdFocused in State then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color := clNavy;
FillRect(Rect);
DBGrid1.Canvas.Font.Color := clHighlightText;
DBGrid1.Canvas.Font.Color := clYellow;
end;
// вывести стандартный текст
DBGrid1.Canvas.TextRect (
Rect, Rect.Left, Rect.Top, Column.Field.AsString);
end;
Комментарии