⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据网格色彩特效.txt

📁 大量Delphi开发资料
💻 TXT
字号:
实战Delphi数据网格色彩特效



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


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


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

以区别相邻的数据列。


file://在DbGrid的DrawColumnCell事件中编写如下代码:


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);

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


file://将上述代码修改为:


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=[gdSelected

gdFocused])) then


If Not DbGrid1.SelectedRows.CurrentRowSelected then


DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色


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; file://当前行以红色显示,其它行使用背景的浅绿色


DbGrid1.Canvas.pen.mode:=pmmask;


DbGrid1.DefaultDrawColumnCell (Rect

DataCol

Column

State);


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


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


if ((State = [gdSelected]) or (State=[gdSelected

gdFocused])) 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);


end;

5.横向斑马线, 同时以红色突显当前行效果。


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


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=[gdSelected

gdFocused])) then file://选中行用红色显示


DbGrid1.Canvas.Brush.color:=clRed;


DbGrid1.Canvas.pen.mode:=pmMask;


DbGrid1.DefaultDrawColumnCell (Rect

DataCol

Column

State);


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


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


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=[gdSelected

gdFocused])) 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);


上述6种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置特效。该程序在Delphi5中测试通过。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -