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

转载 2006年06月14日 18:43:00
 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种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置特效。

相关文章推荐

delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出

====================================================== 注:本文源代码点此下载 =============================...

Delphi开发学习三:TdataSource 控件与 TDBGrid 控件使用实例

TdataSource 控件与 TDBGrid 控件在数据库开发中经常是成对出现的。作为数据库感应控件,TDBGrid控件主要作用是通过TdataSource控件连接数据集(如TADOQUery)以各...

【D3.js数据可视化实战】--(1)绘制网格线

我们常常使用常规图表(直方图,折线图等)来表现数据。为了清楚的表示数据在数轴上的哪个数值区间,会直接在矩形和点上标注数值。除了这个办法外,还可以使用色调偏淡的网格作为背景参照。本文介绍了如何使用D3绘...

Shader学习案例三---屏幕特效之色彩调节

来源 书名:Unity 5.x Shaders and Effects Cookbook 目标 调节屏幕的亮度、饱和度、对比度 过程 一、Unity操作 1. 新建场景,创建三个球体,分别...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)