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

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

    [delphi] view plaincopy
     
    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 = then  
    12.      First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
    13. end;  

    2、多种改变方式

    [delphi] view plaincopy
     
    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 :=to (Sender as TDBGrid).Columns.Count-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 = then  
    16.     (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色  
    17.   else  
    18.     (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色  
    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] view plaincopy
     
    1. Case DataCol Mod 2 = 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] view plaincopy
     
    1. Case DataCol Mod 2 = 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] view plaincopy
     
    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] view plaincopy
     
    1. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
    2. begin  
    3. Case DataCol Mod 2 = 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] view plaincopy
     
    1. Case Table1.RecNo mod 2 = 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] view plaincopy
     
    1. Case Table1.RecNo mod 2 = 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 = 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);  

    一、根据条件更改某航

    procedure Tfrm_TicketGet.DBGrid1DrawColumnCell(Sender: TObject;
    const Rect: TRect; DataCol: Integer; Column: TColumn;
    State: TGridDrawState);
    begin
    if (ADOQuery1.FieldByName('kind_name').asstring = '合计' )or( ADOQuery1.FieldByName('kind_name').asstring = '总合计') then
    begin
    DBGrid1.Canvas.Font.Color:=clred;
    dbgrid1.Canvas.Brush.color:=clyellow;
    end ;

    dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
    end;

  • 相关阅读:
    jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
    如何使用 jMeter Parallel Controller
    使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
    使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
    关于 SAP 电商云首页加载时触发的 OCC API 请求
    SAP UI5 确保控件 id 全局唯一的实现方法
    SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
    介绍一个好用的能让网页变成黑色背景的护眼 Chrome 扩展应用
    Chrome 开发者工具 performance 标签页的用法
    Client Side Cache 和 Server Side Cache 的区别
  • 原文地址:https://www.cnblogs.com/qi123/p/5087128.html
Copyright © 2011-2022 走看看