如和在delphi dbgrid 中改变整行颜色,也就是说分单行和双行颜色?谢谢,我先在打开ONDrawColumnCell事件里面什么都没有,该写写什么代码?谢谢

解决方案 »

  1.   

    把 dgRowSelect 设为True, 在option里面.
    // DBGrid1的OnDrawColumnCell事件
    if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
        begin
          DBGrid1.Canvas.Font.Color :=ClYellow;
          DBGrid1.Canvas.Brush.Color :=clblue;  //关键
          DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
     end;
    DBGrid1.Canvas.Font.Color :=ClYellow;//字体颜色,可以改成你想要的
    DBGrid1.Canvas.Brush.Color :=clblue;  //背景颜色,可以改成你想要的
      

  2.   

    DBGrid隔行着色:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, DB, DBTables;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Query1: TQuery;
        procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
          DataCol: Integer; Column: TColumn; State: TGridDrawState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if (query1.RecNo mod 2)=1  then
      begin
        with (Sender as TDbGrid).Canvas do
        begin
          Brush.Color:=$00FFFFC1;
          FillRect(Rect);
        end;
      end;
      (Sender as TDbGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;end.
      

  3.   

    var i:integer;
    begin
      if gdSelected in State then Exit;  //隔行改变网格背景色: 
        if adoQuery1.RecNo mod 2 = 0 then
          (Sender as TDBGrid).Canvas.Brush.Color := clinfobk //定义背景颜色
      else
        (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);  //定义背景颜色  //定义网格线的颜色:
      DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      with (Sender as TDBGrid).Canvas do //画 cell 的边框
      begin
        Pen.Color := $00ff0000; //定义画笔颜色(蓝色)
        MoveTo(Rect.Left, Rect.Bottom); //画笔定位
        LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线
        Pen.Color := clbtnface; //定义画笔颜色(兰色)
        MoveTo(Rect.Right, Rect.Top); //画笔定位
        LineTo(Rect.Right, Rect.Bottom); //画绿色
      end;
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    if adoquery1.RecNo mod 2=1 then
    begin
    dbgrid1.Canvas.Brush.Color:=clMoneyGreen;
    end
    else
    begin
     dbgrid1.Canvas.Brush.Color:=clSkyBlue;
    end;
    dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
    隔行换色,我在用.
      

  5.   

    楼上的铜子,请问adoQuery1是什么意思?在哪里需要定义和创建?
      

  6.   

    请问adoQuery1是什么意思?在哪里需要定义和创建?
    ==============================================汗^^^^^^^^^^^^^^^^^^是你的数据库控件
    你DBGrid里的数据是从哪里来的?
      

  7.   

    呵呵~~我是把我的代码粘出来了.
    你用什么查询数据的?table还是query?
    用那个,就把它改成那个.
      

  8.   

    555555555还是显示不出来啊,怎么回事》那个Query1是不是还需要定义的啊》他怎么老是提醒我没定义呢?拜托有谁能详细一点挖》偶是菜菜鸟,5555
      

  9.   

    在SQL中增加一个字段rownum
    如:SELECT rownum,CNDZD.* FROM CNDZD
    procedure TFYHDZD1.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      if Frac(Query1.fieldbyname('rownum').value/2)=0 then
      begin
        DBGridEh1.Canvas.Brush.Color:=$00DDF5FF;
        DBGridEh1.Canvas.Font.Color:=clWindowText;
      end;
      DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;
      

  10.   

    先在原先的数据库里没有rownum字段,如果在不改动数据库里的字段,还有什么办法判断这个奇偶行,从而改变他的颜色呢???