zoukankan      html  css  js  c++  java
  • delphi 更改DBGrid 颜色技巧

    1、根据条件更改某一单元格的颜色

     

    [delphi] 
    1. procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject;  
    2.   const Rect: TRect; DataCol: Integer; Column: TColumn;  
    3.   State: TGridDrawState);  
    4. begin  
    5.   if DM.FirstListStatus.AsString='生产' then begin  
    6.      First_DG.Canvas.Font.Color:=clGreen  
    7.    end  
    8.   else begin  
    9.      First_DG.Canvas.Font.Color:=clRed;  
    10.   end;  
    11.   if DataCol = 4 then  
    12.      First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
    13. end;  

    2、多种改变方式

     

    [delphi] 
    1. <span style="color:#000000;">procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;  
    2.   const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);  
    3. var i :integer;  
    4. begin  
    5.   if gdSelected in State then Exit;  
    6. //定义表头的字体和背景颜色:  
    7.     for i :=0 to (Sender as TDBGrid).Columns.Count-1 do  
    8.     begin  
    9.       (Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'//字体  
    10.       (Sender as TDBGrid).Columns[i].Title.Font.Size :=9//字体大小  
    11.       (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff//字体颜色(红色)  
    12.       (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00//背景色(绿色)  
    13.     end;  
    14. //隔行改变网格背景色:  
    15.   if Query1.RecNo mod 2 = 0 then  
    16.     (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色  
    17.   else  
    18.     (Sender as TDBGrid).Canvas.Brush.Color := RGB(191255223); //定义背景颜色  
    19. //定义网格线的颜色:  
    20. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
    21.   with (Sender as TDBGrid).Canvas do //画 cell 的边框  
    22.   begin  
    23.     Pen.Color := $00ff0000//定义画笔颜色(蓝色)  
    24.     MoveTo(Rect.Left, Rect.Bottom); //画笔定位  
    25.     LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线  
    26.     Pen.Color := $0000ff00//定义画笔颜色(绿色)  
    27.     MoveTo(Rect.Right, Rect.Top); //画笔定位  
    28.     LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线  
    29.   end;  
    30. end;</span>  



     

     

     

    3、纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示以区别相邻的数据列。

     

    [delphi] 
    1. Case DataCol Mod 2 = 0 of  
    2.   True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  
    3.  False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  
    4. End;  
    5. DbGrid1.Canvas.Pen.Mode:=pmMask;  
    6. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

     

    4、纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。

    [delphi] 
    1. Case DataCol Mod 2 = 0 of  
    2. True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  
    3. False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  
    4. End;  
    5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
    6. If Not DbGrid1.SelectedRows.CurrentRowSelected then  
    7. DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色  
    8. DbGrid1.Canvas.Pen.Mode:=pmMask;  
    9. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

     

    5、在数据网格中以红色突出显示当前选中的行。

     

     

    [delphi] 
    1. 设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色)  
    2. 在DbGrid的DrawColumnCell事件中编写如下代码:  
    3.   
    4. if ((State = [gdSelected]) or (State=[gdSelected gdFocused])) then  
    5. DbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色  
    6. DbGrid1.Canvas.pen.mode:=pmmask;  
    7. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

     


    6、行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。

     

     

    [delphi] 
    1. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
    2. begin  
    3. Case DataCol Mod 2 = 0 of  
    4. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色  
    5. False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色  
    6. end;  
    7. DbGrid1.Canvas.pen.mode:=pmmask;  
    8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

     


    7、横向斑马线, 同时以红色突显当前行效果。

     

     

    [delphi] 
    1. Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断  
    2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  
    3. False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示  
    4. end;  
    5. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then file://选中行用红色显示  
    6. DbGrid1.Canvas.Brush.color:=clRed;  
    7. DbGrid1.Canvas.pen.mode:=pmMask;  
    8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

     

    
    
    
    


    8、双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。

     

     

    [delphi] 
      1. Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断  
      2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  
      3. False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示  
      4. end;  
      5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
      6. Case DataCol mod 2 = 0 of  
      7. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色  
      8. False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示  
      9. end;  
      10. DbGrid1.Canvas.pen.mode:=pmMask;  
      11. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 
  • 相关阅读:
    sql中not exists的用法
    jsp中target="_blank"的用法
    jsp 运用 session 登录输出
    jsp留言板
    编写JSP 实现用户登录并判断用户或密码
    jsp打印九九乘法表
    jsp输出当前时间
    jsp输出金字塔
    jsp输出5的阶乘
    jdbc练习3
  • 原文地址:https://www.cnblogs.com/Values/p/3252651.html
Copyright © 2011-2022 走看看