用recno不适应大型数据库,可增加一变量,判断该值来改动颜色。

解决方案 »

  1.   

    我已经把我改写的DBgrid Email 出,欢迎使用在任何地方,但须告知在下。
    它的特点是和DBgrid完全兼容,小,编译绝对不多占空间,无明显闪烁。难得吹一吹,哈哈哈哈。
      

  2.   

    你可以用 TDBGridEh ,网上有的,  csdn 中有EhLib1.54, 找不到再给你发。OK!!
      

  3.   

    设置全局变量 i:boolean;
       在ONDrawColumnCell事件这样写
        if  i then
          DBGrid1.Canvas.Brush.Color:=clBtnFace
        else
          DBGrid1.Canvas.Brush.Color:=clRed;
        i:=not i;
        DBGrid1.Canvas.FillRect(Rect);
        DBGrid1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
      

  4.   

    在ONDrawColumnCell事件这样写
      inherited;
      with DBGrid1 do
      begin
       if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
        Begin
        // Canvas.Font.Color :=ClYellow;
        // Canvas.Brush.Color :=ClNavy;
        End
        else
        begin
          if  DataSource1.DataSet.RecNo mod 2<>0 then
            Canvas.brush.Color :=cl3dlight
          else
            Canvas.brush.Color :=clinfobk;
        end;
        DefaultDrawColumnCell(Rect, DataCol, Column, State); //这行是关键
      end;
      

  5.   

    这些方法都不好使,我用的Access数据库!希望高手有更好的方法
      

  6.   

    我的方法与你采用什么数据库无关,只要有DataSource 和DBGrid控件就可以的。
    Try it.
      

  7.   

    我试过你的方法,其他数据库可以,但Access数据库不可以!不信,你可以试一试
      

  8.   

    用俄罗斯的Rxlib中的中的RXdbgrid,应该
      

  9.   

    在Form上添加以下控件:
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
    ADOConnection1通过Microsoft Jet 4.0 OLE DB Provider和你的Access数据库连接。
    ADOTable1、DataSource1、DBGrid怎样连接我就不说了,很简单的。
    在在ONDrawColumnCell事件这样写上我的代码,就OK了。
       我试过了,没问题呀!
    欢迎来信交流。
      

  10.   

    superdelphi:
      你好!谢谢你的帮助,你的方法可以,但是我现在用的是BDE连接不可以!
      但不管怎样,我非常感谢你!再次感谢你!
      以后有问题还会麻烦你的!!