Dbgrid С Цветной Строкой

novachok

New Member
16.08.2012
1
0
#1
Подскажите как можно закрасить всю строку одним цветом а ячейку другим?
У меня закрашивается или вся строка или только ячейка. А нужно так: пользователь клацнул по ячейке, она выделяется одним цветом, и эта-же строка сначала и до конца светлосерым цветом. У меня только ячейка закрашивается! как закрасить светлосерым цветом???
 

sinkopa

Well-Known Member
17.06.2009
344
9
#2
Подскажите как можно закрасить всю строку одним цветом а ячейку другим?
У меня закрашивается или вся строка или только ячейка. А нужно так: пользователь клацнул по ячейке, она выделяется одним цветом, и эта-же строка сначала и до конца светлосерым цветом. У меня только ячейка закрашивается! как закрасить светлосерым цветом???
Код:
type
THDBGrid = class(TCustomDBGrid);

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
RowIsActive: Boolean;
CellIsSelected : Boolean;
begin
CellIsSelected := (gdSelected in State);
with THDBGrid(Sender) do
begin
RowIsActive := (DataLink.ActiveRecord = Row-1);
end;

with TDBGrid(Sender) do
begin
if CellIsSelected then
Canvas.Brush.Color := $00FFDA8C // голубой
else if RowIsActive then
Canvas.Brush.Color := $00EFEFEF // светло-серый
else
Canvas.Brush.Color := clWindow;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

end;
 
19.03.2014
9
0
#4
В принципе, стандартно перехватывается событие OnDrawColumnCell, и вперёд. Это вообще универсально, перехватывать обраьотчик рисования конкретного объекта, не только DBGrid касается.