精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>数据库技术>>关于TDBGrid的使用>>Re:请教关于DBGrid的两个问题

主题:Re:请教关于DBGrid的两个问题
发信人: showskyws(示天)
整理人: huxley(2001-12-17 20:13:49), 站内信件
【 在 yinye 的大作中提到:】
:1、如何改变指定一行的背景色?如:每四行换一种颜色,以示区别;


---- 1、 数据表的建立 

---- 在Delphi的工具菜单中选择Database desktop,在数据库DBDemos下建立一个名为example.db的数据表。数据表的字段和内容如下: 


Name   Age   Wage 
张山   25   500 
王武   57   1060 
李市   30   520 
刘牛   28   390 

---- 2、创建基于TDBGrid的TColoredDBGrid组件 
---- 在Delphi组件菜单中,选择New Component,在弹出对话框中作以下设置: 

Ancestor Type = TDBGrid 
Class Name = TColoredDBGrid 

---- 然后单击OK按钮,Delphi自动完成组件基本框架的定义。增添OnDRawColoredDBGrid事件并使它出现在Object Inspector的Events中以便在应用程序中设定改变行颜色的条件。重载DrawCell方法,只能自己绘制单元格。不能通过在OnDrawColumnCell来设置颜色,因为在OnDrawColumnCell改变单元格的颜色会再次触发OnDrawColumnCell。 
---- 下面就是所创建组件的源程序 。 

---- 3、建立应用程序进行验证。 

---- 在Delphi文件菜单中选择New建立新的应用程序工程Project1和主窗体Form1,设置Form1的Caption属性为“控制DBGrid行颜色的示例”。在主窗体上添加Data Source、Table、Button和ColoredDBGrid组件。设置各组件的属性如下: 

Table1.Database=’DBDemos’ 
Table1.Tablename=’example.db’ 
Datasource1.Dataset=Table1 
ColoredDBGrid1.Datasource=DataSource1 
Button1.Caption=’退出’ 

---- 在ColoredDBGrid1的onDRawColoredDBGrid事件中输入下列代码,设定由Wage(工资)来决定在ColoredDBGrid1各行的颜色。 
procedure TForm1.ColoredDBGrid1 DRawColoredDBGrid 
(Sender: TObject; Field: TField; var Color: 
TColor; var Font: TFont); 
Var 
p : Integer; 
begin 
p := Table1.FindField('wage').AsInteger; 
//取得当前记录的Wage字段的值。 
if(p < 500) then begin
//程序将根据wage值设置各行的颜色。
Color := clGreen;
Font.Style := [fsItalic];
//不仅可以改变颜色,还可以改变字体
end;
if(p >= 500) And (p < 800) then
Color := clRed;
if(p >=800) then begin 
Color := clMaroon; 
Font.Style := [fsBold]; 
end; 
end; 
//用‘退出’按钮结束程序运行。 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
Close; 
end; 

---- 4、程序运行结果 
---- 本程序在win98(中文版)和delphi4.0(C/S版)中测试运行,得到预计的结果:第一行和第三行变为红色,第二行变为棕色,第四行为绿色,满足了基本要求。 


----
我每天都在努力,因为每天都要进步!
沉迷网络,程序人生,这就是我!
欢迎光临我的个人主页:示天工作室 


▇▇▇▇▇▇▇▇
▇网易北京社区▇
▇  DELPHI版 ▇
▇版副印(试用)▇
▇▇▇▇▇▇▇▇

[关闭][返回]