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;

 

转载于:https://www.cnblogs.com/qi123/p/5087128.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mfc中UpdateData的用法

http://blog.csdn.net/ddjj_1980/article/details/51452289 UpdateData(TRUE)——刷新控件的值到对应的变量。(外部输入值交给内部变量)即&#xff1a;控件的值—>变量。UpdateData(FALSE)—— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)即&#xff1a;…

动画类的层次结构

CASpringAnimation类是CAABasicAnimation的子类 CAPropertyAnimation &#xff1a;是CAAnimation的子类&#xff0c;它支持动画地显示图层的keyPath&#xff0c;一般不直接使用。 iOS9.0之后新增CASpringAnimation类&#xff0c;它实现弹簧效果的动画&#xff0c;是CABasicAnim…

[原]小命令大作用:modprobe

调整网络为绑定模式&#xff0c;但启动时候会报错&#xff0c;此时执行命令 modprobe bonding 可以解决问题。 之前在磁盘方面遇到问题也是通过modprobe命令解决的&#xff0c;又遇到这个命令&#xff0c;似曾相识。于是看下该命令&#xff1a; Linux命令&#xff1a;modprobe …

sql语句优化之not in

多表关联想查a表中除去b表的可用not exists 效率比not in 更高 优化后的语句用时0.421秒 select john.*, (case when round((case john.sumcount when 0 then 0 else mycount * 100 / sumcount end), 2) > 100 then 100 else round((case john.sumcount when 0 then 0 else …

setup2go制作安装程序

QT程序设计完毕时&#xff0c;我们就要发布自己的程序&#xff0c;发布程序有两种方法&#xff1a;一是静态编译&#xff0c;二是制作程序安装包。 静态编译好麻烦&#xff0c;我从来没有成功过&#xff0c;所以我用了动态编译方法&#xff0c;设计完成时&#xff0c;用release…

gson-2.2.api简单

使用gson的tojson和fromjson实现对象和json的转换 Gson gson new Gson(); // Or use new GsonBuilder().create(); MyType target new MyType(); String json gson.toJson(target); // serializes target to Json MyType target2 gson.fromJson(json, MyType.c…

用户需求、己、竞争对手的关系

图一 图二 图三 如第一图所示&#xff1a;现在在市面上的产品基本上都可以归纳为这一方面&#xff0c; 如“用户需求”是网上购物的需求&#xff0c;以“己”是京东为例子&#xff0c;“己”的…

SharePoint 入门介绍

from&#xff1a;http://www.cnblogs.com/jianyus/archive/2013/01/11/2856963.html 前言&#xff1a;接触SharePoint两年有余&#xff0c;从一开始的小白&#xff0c;变成现在的菜鸟&#xff0c;一路走来&#xff0c;学到很多&#xff0c;现在&#xff0c;想把自己知道的东西&…

AJAX-服务器响应

服务器响应 如需获得来自服务器的响应&#xff0c;请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。 属性 描述 responseText 获得字符串形式的响应数据。 responseXML 获得 XML 形式的响应数据。 responseText 属性 如果来自服务器的响应并非 XML&#xff0c…

c#下不同命名空间的引用(一个project使用另外一个project的名称空间)

http://bbs.csdn.net/topics/300089064 两个命名空间在同一个项目中时&#xff0c;没有任何问题。 若两个命名空间不在同一个项目中&#xff0c;则变成两个程序集之间的互相引用。 程序集之间的引用无所谓循环不循环的问题。 但如果两个程序集要互相引用&#xff0c;并且两个…

数据结构比较型排序算法分析及选择

比较型算法分为五类&#xff1a; 1、插入排序&#xff1a;直接插入排序、折半插入排序、希尔排序&#xff1b; 2、选择排序&#xff1a;直接选择排序、堆排序&#xff1b; 3、交换排序&#xff1a;快速排序、冒泡排序&#xff1b; 4、归并排序&#xff1b; 5、基数排序&#xf…

onreadystatechange 事件

onreadystatechange 事件 当请求被发送到服务器时&#xff0c;我们需要执行一些基于响应的任务。 每当 readyState 改变时&#xff0c;就会触发 onreadystatechange 事件。 readyState 属性存有 XMLHttpRequest 的状态信息。 下面是 XMLHttpRequest 对象的三个重要的属性&#…

Frequent Pattern 挖掘之二(FP Growth算法)(转)

FP树构造 FP Growth算法利用了巧妙的数据结构&#xff0c;大大降低了Aproir挖掘算法的代价&#xff0c;他不需要不断得生成候选项目队列和不断得扫描整个数据库进行比对。为了达到这样的效果&#xff0c;它采用了一种简洁的数据结构&#xff0c;叫做frequent-pattern tree(频繁…

C# 两个类之间传递数据

1、通过全局变量 2、通过构造函数传递参数 3、通过委托实现通过委托例子&#xff1a;WebForm1 向Class1传递参数值&#xff1a; // namespace WebApplication2{public partial class WebForm1 : System.Web.UI.Page{//step1.声明一个委托public delegate void DoSomethingEvent…

可行性研究课后题

题目: 为方便储户&#xff0c;某银行拟开发计算机储蓄管理系统。储户填写的存款单或取款单由银行柜台业务员键入系统&#xff0c;如果是存款&#xff0c;系统记录存款人姓名、住址、存款类型、存款日期、利息等信息&#xff0c;并印出存款单给储户;如果是取款&#xff0c;系统进…

jQuery语法

jQuery不是W3C标准&#xff01; jQuery使用CSS选择器来选取元素。 jQuery语法 一、jury语法是为HTML元素的选取编制的&#xff0c;可以对元素执行某些操作。 基础语法是&#xff1a;$(selector).action() .美元符号定义jQuery .选择符&#xff08;selector&#xff09;“查…

Sublime 解决目录显示为方块的问题

2019独角兽企业重金招聘Python工程师标准>>> 修改Perferences->Settings-User { "font_face": "Consolas Italic", #传说这个字体比较好看。 "font_size": 15, "ignored_packages": [ "Vintage" ], "dpi…

VS toolTip1控件的使用1

http://blog.csdn.net/Mr_Liyong/article/details/780141381、在工具栏找到“toolTip”控件后拖到窗体后&#xff0c;窗体下方会显示此控件则拖放成功。 2、单击此控件右键选择属性&#xff1a;开始 修改属性。 3、当添加一个TOOLTIP控件后&#xff0c;在WINFORM界面上所有的控…

python 代码片段9

#codingutf-8# 字符串指示符号 r表示raw u表示unicodemystringuthis is unicode!--by print mystring# raw表示告诉解释器不要转换字符串任何字符filerc:\temp\folder\robots.txt print file# 另一个实用raw的地方是正则表达式# 可以在内放任何的字符串&#xff0c;不需要转义&…

【TL】【编码】瞬间移动-百度之星初赛(Astar Round2B)1003-2016.05.22

瞬间移动 Accepts: 1018 Submissions: 3620Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description有一个无限大的矩形&#xff0c;初始时你在左上角&#xff08;即第一行第一列&#xff09;&#xff0c;每次你都可以选择一个…