请问:
    我是用 DBGrid 控件的, 怎么该变当前行的背景颜色 (默认是深蓝色)

解决方案 »

  1.   

    procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with Sender as TDBGrid do
      begin
        if gdSelected in State then
        begin
          Canvas.Brush.Color := clRed;
        end else
        begin
          Canvas.Brush.Color := clWindow;
        end;    Canvas.FillRect(Rect);
        DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  2.   

    procedure Tfrmprepare.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if gdSelected in State then
    begin
      (Sender as TDBGrid).Canvas.Brush.Color :=$000080FF; //当前选中单元格显示红色
      DBGrid1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
    end else
    begin
     //隔行改变网格背景色:
     if DBGrid1.DataSource.DataSet.RecNo mod 2 = 0 then
        (Sender as TDBGrid).Canvas.Brush.Color := $00EFF1FC //定义背景颜色
     else
        (Sender as TDBGrid).Canvas.Brush.Color := $00F3EADE;  //定义背景颜色
     DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
    end;
      

  3.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var RowHeight,Row,i:INteger;
    begin
    RowHeight := Rect.Bottom - Rect.Top+1;
    Row := (Rect.Top div RowHeight);
    if row mod 2= 0 then begindbgrid1.Canvas.Brush.Color:=$00F7FFFF ;// dbgrid1.Canvas.Font.Color:=clred;
    dbgrid1.Canvas.FillRect(rect);
    end
    else begindbgrid1.Canvas.Brush.Color:=$00FFF8F0;//dbgrid1.Canvas.Font.Color:=clblack;
    dbgrid1.Canvas.FillRect(rect);
    //dbgrid1.Canvas.
    end;if (state=[gdFocused,gdSelected] ) or (state=[gdSelected] ) then// or (state=[ gdFocused]) then
    begin
    // for i:=0 to dbgrid1.Columns.Count-1 do
    // begin
    dbgrid1.Canvas.Brush.Color:=clblue;dbgrid1.Canvas.Font.Color:=clWindow;
    dbgrid1.Canvas.FillRect(rect);
    // dbgrid1.Canvas.pen.mode:=pmmask;
    // end;
    end;
    dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    //DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
    //dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;