首页 > 其他分享 >更改DBGrid 颜色技巧

更改DBGrid 颜色技巧

时间:2023-03-02 20:23:21浏览次数:39  
标签:DBGrid Canvas DbGrid1 技巧 更改 State Brush file Rect

 1、根据条件更改某一单元格的颜色
[delphi] view plain copy
procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject;  
  const Rect: TRect; DataCol: Integer; Column: TColumn;  
  State: TGridDrawState);  
begin  
  if DM.FirstListStatus.AsString='生产' then begin  
     First_DG.Canvas.Font.Color:=clGreen  
   end  
  else begin  
     First_DG.Canvas.Font.Color:=clRed;  
  end;  
  if DataCol = 4 then  
     First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
end;  

2、多种改变方式


[delphi] view plain copy
<span style="color:#000000;">procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;  
  const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);  
var i :integer;  
begin  
  if gdSelected in State then Exit;  
//定义表头的字体和背景颜色:  
    for i :=0 to (Sender as TDBGrid).Columns.Count-1 do  
    begin  
      (Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'; //字体  
      (Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小  
      (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)  
      (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)  
    end;  
//隔行改变网格背景色:  
  if Query1.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 := $0000ff00; //定义画笔颜色(绿色)  
    MoveTo(Rect.Right, Rect.Top); //画笔定位  
    LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线  
  end;  
end;</span>  


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

[delphi] view plain copy
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);  
4、纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。

[delphi] view plain copy
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=[gdSelectedgdFocused])) then  
If Not DbGrid1.SelectedRows.CurrentRowSelected then  
DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色  
DbGrid1.Canvas.Pen.Mode:=pmMask;  
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
5、在数据网格中以红色突出显示当前选中的行。
[delphi] view plain copy
设置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);  

6、行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。
[delphi] view plain copy
if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) 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);  

7、横向斑马线, 同时以红色突显当前行效果。
[delphi] view plain copy
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=[gdSelectedgdFocused])) then file://选中行用红色显示  
DbGrid1.Canvas.Brush.color:=clRed;  
DbGrid1.Canvas.pen.mode:=pmMask;  
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

8、双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。
[delphi] view plain copy
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=[gdSelectedgdFocused])) 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);  

 

标签:DBGrid,Canvas,DbGrid1,技巧,更改,State,Brush,file,Rect
From: https://www.cnblogs.com/sixty-five/p/17173318.html

相关文章

  • 10个实用技巧:如何让你的外贸独立站排名直线上升
    在当今竞争激烈的互联网市场中,谷歌SEO已经成为了外贸独立站排名提升的必修课程。为了使得自己的网站能够在谷歌上排名更高,网站优化的工作显得尤为重要。在这篇文章中,我们将......
  • Visusl Studio使用技巧
    一、快捷键的使用1、使用Ctrl+K,Ctrl+E,可以清理代码,包括清理无用的using和对齐代码;也可以使用快捷按钮实现该功能,如下图:          2、......
  • 做好监控告警的关键技巧
    在《线上监控怎么做?》一文中我们探讨了做好监控的一些技巧和陷阱,本文则主要探讨做好告警的一些重要技巧。1.根据告警类型慎重选择告警渠道发送告警尽量不要用邮件告警,要......
  • Android病毒分析基础(二)—ChatGPT提问技巧
    今天我们来用最近比较火的“ChatGPT”学习一下Android病毒分析基础,看看和我们之前学的有什么不同,又能学习到什么新的东西,同时了解一下“ChatGPT”提问的一些精髓。和我们......
  • 英语四级阅读技巧
    ###英语四级阅读技巧###   一.选词填空(5min)1.首先分析所给选项单词的词性并标注上它的词性。2min2.分析每一个空所需的词性,结合词义对号入座。 3min 二.......
  • 文件编码转换utf-8更改为ascii
    #!/usr/bin/python#-*-coding:UTF-8-*-"""为啥搞这个?idea设置了自动转码,settings->editor->fileEncodings->Transparentnative-to-asciiconversionpropert......
  • 第三节:Postman常见的几个使用技巧
    一. 全局变量和作用域变量1.     2. 变量的使用      二. 脚本代码       三.其它        !作  ......
  • CAD对齐命令怎么用?CAD对齐工具的使用技巧
    CAD对齐工具的特点是操作简单、功能实用,可以快速对齐CAD中的各种实体。那么,你知道CAD对齐命令怎么用吗?不知道也没关系,下面就和小编一起来了解一下浩辰CAD软件中CAD对齐工具......
  • 小技巧集锦(1)[陆续贴上,网友也可以加哟]
    (1)怎样将电脑里有可用字体加入WINFORM中的ComboBox中:一句话搞定:comboBox1.Items.AddRange(FontFamily.Families);(2)取得所有可用颜色并填充到asp.net的下拉菜单中:PropertyInf......
  • ABAP程序更改记录 vrsd
    表VRSD-版本管理:目录表中,记录程序每次修改的请求号:   视图REPOSRC中,记录着每个程序最新更改信息(对应表为REPOSRC,记录代码) ......