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

简介:  Delphi中的数据网格控件(TDBGrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。    以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。 1. 纵向
  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种方法分别就数据网格控件的列和行的 色彩进行了设置,读者可以根据自己的需要设置特效。
相关文章
Threejs入门进阶实战案例(5):坐标系理解时辅助坐标系的使用
Threejs入门进阶实战案例(5):坐标系理解时辅助坐标系的使用
134 0
|
图形学
【游戏开发】unity透明特效的制作方法
Unity是一种强大的游戏开发引擎,它支持许多不同的特效和图形效果。其中一种常用的特效是透明特效,它可以使游戏中的材质变得半透明或完全透明。在本文中,我们将介绍如何使用Unity创建透明特效。
|
容器
微信小游戏开发实战6-把图形放置到网格上
本篇主要内容包括如何将拖拽的图形安放到网格的对应位置上。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
76 0
|
存储 开发工具
微信小游戏开发实战3-绘制网格
本篇主要内容包括使用微信小游戏开发工具动态的绘制一个网格,并通过使用变量来控制最终生成的网格的效果。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
126 0
【视觉高级篇】19 # 如何用着色器实现像素动画?2
【视觉高级篇】19 # 如何用着色器实现像素动画?
87 0
【视觉高级篇】19 # 如何用着色器实现像素动画?2
|
数据可视化 异构计算
【视觉高级篇】19 # 如何用着色器实现像素动画?
【视觉高级篇】19 # 如何用着色器实现像素动画?
98 0
【视觉高级篇】19 # 如何用着色器实现像素动画?
|
vr&ar 图形学 Windows
【Unity3D 灵巧小知识点】☀️ | Unity 中 怎样切换 天空盒 背景
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】☀️ | Unity 中 怎样切换 天空盒 背景
|
C# C++ 计算机视觉
WPF特效-绘制实时2D激光雷达图
原文:WPF特效-绘制实时2D激光雷达图 接前两篇: https://blog.csdn.net/u013224722/article/details/80738619 https://blog.csdn.net/u013224722/article/details/80738995 除了c# GDI 、Opencv(c++)、 c# Emgu绘图外,其实c#  WPF绘图功能也很强大。
1888 0
|
JSON 前端开发 数据格式
【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能
原文:【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能 目录 说明 功能 实现原理 使用方法 效果截图   说明 最近空余时间研究了一下Win2D,它能为我们在UWP中提供一种类似GDI那样的绘图方法。
1948 0
|
机器学习/深度学习 前端开发
WEBGL学习【十四】利用HUD技术在网页上方显示三维物体
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/79035579 ...
999 0