Delphi中DBGrid行列颜色设置

1.   纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。  
   
    file://在DbGrid的DrawColumnCell事件中编写如下代码:  
   
    Case   DataCol   Mod   2   =   0   of  
   
     True:   DbGrid1.Canvas.Brush.Color:=   clBlue;   file://偶数列用蓝色  
   
     False:   DbGrid1.Canvas.Brush.Color:=   clAqua;   file://奇数列用浅绿色  
   
    End;  
   
    DbGrid1.Canvas.Pen.Mode:=pmMask;  
   
    DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
   
   
  2.   纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。    
    file://将上述代码修改为:  
   
    Case   DataCol   Mod   2   =   0   of  
   
     True:   DbGrid1.Canvas.Brush.Color:=   clBlue;   file://偶数列用蓝色  
   
     False:   DbGrid1.Canvas.Brush.Color:=   clAqua;   file://奇数列用浅绿色  
   
    End;  
   
    If   ((State   =   [gdSelected])   or   (State=[gdSelected,gdFocused]))   then  
   
      If   Not   DbGrid1.SelectedRows.CurrentRowSelected   then  
   
        DbGrid1.Canvas.Brush.Color:=clRed;   file://当前选中单元格显示红色         DbGrid1.Canvas.Pen.Mode:=pmMask;  
   
        DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
   
  上述两种方法突出了列的显示效果。  
   
    3.在数据网格中以红色突出显示当前选中的行。  
   
    设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色),   在DbGrid的DrawColumnCell事件中编写如下代码:  
   
    if   ((State   =   [gdSelected])   or   (State=[gdSelected,gdFocused]))   then  
   
     DbGrid1.Canvas.Brush.color:=clRed;   file://当前行以红色显示,其它行使用背景的浅绿色  
   
     DbGrid1.Canvas.pen.mode:=pmmask;  
   
     DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
   
    4.行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。  
   
    file://其它属性设置同3,将上述代码修改为:  
   
    if   ((State   =   [gdSelected])   or   (State=[gdSelected,gdFocused]))   then  
   
     begin  
   
      Case   DataCol   Mod   2   =   0   of  
   
       True   :   DbGrid1.Canvas.Brush.color:=clRed;   file://当前选中行的偶数列显示红色  
   
       False:   DbGrid1.Canvas.Brush.color:=clblue;   file://当前选中行的奇数列显示蓝色  
   
      end;  
   
     DbGrid1.Canvas.pen.mode:=pmmask;  
   
     DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
   
    end;  
   
   
   
    5.横向斑马线,   同时以红色突显当前行效果。    
    file://其它属性设置同3,将上述代码修改为:  
   
    Case   Table1.RecNo   mod   2   =   0   of   file://根据数据集的记录号进行判断  
   
     True   :   DbGrid1.Canvas.Brush.color:=clAqua;   file://偶数行用浅绿色显示  
   
     False:   DbGrid1.Canvas.Brush.color:=clblue;   file://奇数行用蓝色表示  
   
    end;  
   
    if   ((State   =   [gdSelected])   or   (State=[gdSelected,gdFocused]))   then   file://选中行用红色显示  
   
     DbGrid1.Canvas.Brush.color:=clRed;  
   
     DbGrid1.Canvas.pen.mode:=pmMask;  
   
     DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
   
    6.双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。  
   
    file://其它属性设置同3,将上述代码修改为:  
   
    Case   Table1.RecNo   mod   2   =   0   of   file://根据数据集的记录号进行判断  
   
     True   :   DbGrid1.Canvas.Brush.color:=clAqua;   file://偶数行用浅绿色显示  
   
     False:   DbGrid1.Canvas.Brush.color:=   clblue;   file://奇数行用蓝色表示  
   
    end;  
   
    If   ((State   =   [gdSelected])   or   (State=[gdSelected,gdFocused]))   then  
   
    Case   DataCol   mod   2   =   0   of  
   
     True   :   DbGrid1.Canvas.Brush.color:=clRed;   file://当前选中行的偶数列用红色  
   
     False:   DbGrid1.Canvas.Brush.color:=   clGreen;   file://当前选中行的奇数列用绿色表示  
   
    end;  
   
    DbGrid1.Canvas.pen.mode:=pmMask;  
   
    DbGrid1.DefaultDrawColumnCell   (Rect,   DataCol,   Column,   State);  
原文地址:https://www.cnblogs.com/chenbg2001/p/1604917.html