admin 管理员组

文章数量: 887021


2023年12月17日发(作者:uml14种图记忆口诀)

在Delphi中如何动态更改DBGrid的颜色

DBGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉您如何根据显示的内容改变字体的显示颜色。例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为ColumeCell.

procedure 1DrawColumnCell(Sender: TObject;

constRect:TRect;DataCol:

Integer; Column: TColumn; State: TGridDrawState);

begin

if yName('Population').AsInteger> 20000000 then

:= clBlue;

tDrawColumnCell(Rect, DataCol, Column, State);

end;

上面的例子是简单的,但是你可以根据自己的需要扩充,例如字体也变化等,甚至你可以调用画圆的函数在数字上画上一个红色的圆圈。

定义网格背景颜色

在 Form1 上放置 DBGrid1 、Query1、DataSource1 三个数据库组件,设置相关的属性,

使 DBGrid1 能显示表中的数据。然后,在 DBGrid1 的 onDrawColumnCell 事件中键入以下

代码,然后运行程序,就可以看到神奇的结果了。本代码在 Windows98、Delphi5.0 环境下调

试通过。

procedure 1DrawColumnCell(Sender: TObject;

constRect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);

var i :integer;

begin

ifgdSelected in State then Exit;

// 定义表头的字体和背景颜色:

for i :=0 to (Sender as TDBGrid).-1 do

begin

(Sender as TDBGrid).Columns[i]. :='宋体'; // 字体

(Sender as TDBGrid).Columns[i]. :=9; // 字体大小

(Sender as TDBGrid).Colum ns[i]. :=$000000ff; // 字体颜色( 红色)

(Sender as TDBGrid).Col umns[i]. :=$0000ff00; // 背景色( 绿色)

end;

// 隔行改变网格背景色:

if mod 2 = 0 then

(Sender as TDBGrid).Can := clInfoBk //定义背景颜色

else

(Sender as TDBGrid). := RGB(191, 255, 223); // 定义背景颜色

// 定义网格线的颜色:

tDrawColumnCell(Rect,DataCol,Column,State);

with (Sender as TDBGrid).Canvas do // 画 cell 的边框

begin

:= $00ff0000; //定义画笔颜色( 蓝色)

MoveTo(, ); // 画笔定位

LineTo(, ); // 画蓝色的横线

:= $0000ff00; //定义画笔颜色( 绿色)

MoveTo(, ); // 画笔定位

LineTo(, ); // 画绿色的竖线

end;

end;


本文标签: 颜色 显示 字体