我在dbgrid的事件中这么写的
procedure Tfrmygxx.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if (State = [gdSelected]) then
  If Not DbGrid1.SelectedRows.CurrentRowSelected then
    DbGrid1.Canvas.Brush.Color:=clyellow;
    dbgrid1.Canvas.font.Color:=clblack;
    DbGrid1.Canvas.Pen.Mode:=pmMask;
    DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
为什么出现的结果会是选中的第一列仍是系统默认的颜色?

解决方案 »

  1.   

    //你得加入列值.
    procedure Tfrmygxx.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if (State = [gdSelected]) then
      If Not DbGrid1.SelectedRows.CurrentRowSelected then
         if datacol=0 then
        begin
        DbGrid1.Canvas.Brush.Color:=clyellow;
        dbgrid1.Canvas.font.Color:=clblack;
        DbGrid1.Canvas.Pen.Mode:=pmMask;
        DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
        end;
    end;