实战Delphi数据网格(TDBGrid)色彩特效

 Delphi中的数据网格控件(TDBGrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。

   以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。

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

在DBGrid的DrawColumnCell事件中编写如下代码:

Case DataCol Mod 2 = 0 of
 True: DbGrid1.Canvas.Brush.Color:= clBlue; //偶数列用蓝色
 False: DbGrid1.Canvas.Brush.Color:= clAqua; //奇数列用浅绿色
End;
DbGrid1.Canvas.Pen.Mode:=pmMask;
DbGrid1.DefaultDrawColumnCell (Rect,DataCol,Column,State);

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

将上述代码修改为:

Case DataCol Mod 2 = 0 of
 True: DbGrid1.Canvas.Brush.Color:= clBlue; //偶数列用蓝色
 False: DbGrid1.Canvas.Brush.Color:= clAqua; //奇数列用浅绿色
End;
If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then
If Not DbGrid1.SelectedRows.CurrentRowSelected then
DbGrid1.Canvas.Brush.Color:=clRed; //当前选中单元格显示红色
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; //当前行以红色显示,其它行使用背景的浅绿色
DbGrid1.Canvas.pen.mode:=pmmask;
DbGrid1.DefaultDrawColumnCell (Rect,DataCol,Column,State);

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

其它属性设置同3,将上述代码修改为:

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

5.横向斑马线, 同时以红色突显当前行效果。
其它属性设置同3,将上述代码修改为:

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

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

其它属性设置同3,将上述代码修改为:

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

   上述6种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置特效。

时间: 2024-09-02 08:28:19

实战Delphi数据网格(TDBGrid)色彩特效的相关文章

Delphi中数据网格DBGrid应用

数据网格是非常流行的数据输入和显示形式,像大家熟悉的Excel97.VFP中的功能强大的BROWS等,为广大程序员乐于采用.在用Delphi开发数据库应用系统时,利用数据网格DBGrid输入数据时,有些字段只允许某几个固定的字符串,像档案案卷的保管期限,只有"永久"."长期"和"短期"三种,可否从一个下拉列表中进行选择,从而方便输入和避免输入错误呢?还有一些字段,例如职工信息库中的单位编号(在另外的单位库中保存着单位的详细信息),在输入和显示职工

十三个最佳JavaScript数据网格库

JavaScript 是一种通常被用在网页开发中的编程语言.它主要是在互联网上的网页浏览器中开发出效果出众且可交互的特效.它是客户端脚本语言中的一种,是被用来作为通过用户的网页浏览器进行处理的源代码.JavaScript 是动态.高级.可解释且无类型的编程语言.JavaScript 主要被用在不是基于 Web 的环境之中,像是特定站点的浏览器,桌面小部件以及 PDF 文件.事实上,JavaScript 还被程序员们用在了视频游戏开发之中. 数据网格可以帮助解决在 HTML 表格上对带有过滤.分页

Dagri 0.5发布 数据网格工具

Dagri 是一款用于建立表格和数据保存的工具,即是一个数据网格http://www.aliyun.com/zixun/aggregation/8284.html">桌面应用程序.当电子表格使用单一的表布局时,Dagri可以在一个表单上使用多个不同的布局表格,且更集中于数据. Dagri 0.5该版本进行了多个小的改动,支持重复的行.列和网格,高级的复制整行和整列,并使用了新的功能来检测网格有效数字.可选的最后一个文件,在启动时加载的数据可以导出到XML. 软件信息:http://www.

实战 .Net 数据访问层 - 1

访问|数据 实战 .Net 数据访问层 l 特别说明 本篇实战共分23段,非作者有意如此,乃受CSDN发表文章之64K所限. 虽然有几段根本没有达到64K,但估计是HTML Source超过了这个范 围,所以也不得不单独分段(大都是源代码),请大家谅解. 如果有朋友需要完整文档,请发邮件给我: mailto:xuefeng.zhang@bearingpoint.com l 引言 这次的讨论是上一部分"剖析 .Net 下的数据访问层技术"的一个续,但也可独立成章,为突出主题,作者就特意换

Delphi数据访问部件的应用及编程

在这一章里我们主要介绍Delphi的数据访问部件的层次结构.多部件之间的关系.部件的属性.方法.事件以及各部件的应用.这些部件包括: ● TSession部件 ● 数据集部件(TTable和TQuery) ● TDatasource部件 ● 字段对象TField ● 字段编辑器的使用 ● TReport部件和TBatchMove部件 我们对这些部件的属性.方法和事件进行一般性的描述,读者在实际使用Delphi开发应用程序时,还可以通过联机帮助获得有关部件更详细的信息. 15.1 Delphi数据

.NET分布式架构开发实战之三 数据访问深入一点的思考

上篇文章讲述在设计之初,Richard所画出的一些草图,本篇对之前的草图做了进一步的思考. 本篇的议题如下: 1.草图的一些问题在哪里 2.重审之前项目中数据层的问题 3.思维的一点突破 4.回首再看数据访问层 1.草图的一些问题在哪里 开发实战之三 数据访问深入一点的思考-分布式爬虫实战"> 当Richard把草图画出来了之后,想到了另外的一个问题:在DAL数据层之间提供的那个接口层到底应不应该是Services Interface.其实这个接口层是普通的Interface层还是Serv

JBOSS数据网格:海量数据的重大机遇

文章讲的是JBOSS数据网格:海量数据的重大机遇,在过去的一年里,内存数据网格技术获得了相当多的关注.据权威机构Garter数据统计,未来一年,至少40%的大型IT厂商将考虑部署内存数据网格方案,以应对日益严峻的海量数据与应用性能的挑战.作为全球领先的开源解决方案供应商,红帽公司推出的内存数据网格产品--JBoss Enterprise Data Grid (简称: 红帽JBoss数据网格)为云计算和大数据做好了充分的准备. 红帽公司负责中间件业务的副总裁兼总经理Craig Muzilla指出,

内存数据网格hazelcast的一些机制原理

hazelcast作为一个内存数据网格工具,还算比较优秀,听说有Apache顶级项目使用它,值得研究下,使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一下. ==========广告时间========== 鄙人的新书<Tomcat内核设计剖析>已经在京东预售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定.感谢各位朋友. ========================= 欢迎关注: 

[原创].NET 分布式架构开发实战之三 数据访问深入一点的思考

原文:[原创].NET 分布式架构开发实战之三 数据访问深入一点的思考 .NET 分布式架构开发实战之三 数据访问深入一点的思考   前言:首先,感谢园子里的朋友对文章的支持,感谢大家,希望本系列的文章能够真正的对大家起到一点帮助的作用.再次感谢大家.   大家也许想问,什么时候出代码,代码一定会出的,我不想一上来就开始抛出一大堆的代码,然后讲解,架构的设计在思考的过程,思考到了,代码也就水到渠成了.   上篇文章讲述在设计之初,Richard所画出的一些草图,本篇对之前的草图做了进一步的思考.