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

📄 110201_05.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<link REL="stylesheet" HREF="/style.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>计算机世界日报:
在Delphi中随意控制DBGrid 每一行的颜色
</title>
<!--***********-->
</head>

<body bgcolor="#FFFFFF" >














<p><br>
<font color="#b904e8"><b><em><a href="class.htm">返回</a></em></b></font>
<center>
<font color="#0000c0"><h2>
在Delphi中随意控制DBGrid 每一行的颜色
</h2></font>
<h3>
中国地质大学研究生院
<br>张兵兵 黄孝林
</h3>
</center>
<p><font color="#ffffff">----</font>
有个问题是在Delphi中使用DBGrid时,如何让DBGrid中每一行颜色按照用户自己的意愿控制。最初看到这个问题时,我们以为非常非常简单,所以马上动手准备解决它。结果却发现不是那么回事,传统方法根本不能发挥作用。在电脑面前一直坐到凌晨4点,不断地调试,幸运地是凭借平时积累的一点编程经验,终于找到了开门的匙钥。现将它充公,供大家享用。
<p><font color="#ffffff">----</font>
<b>1、 数据表的建立</b>
<p><font color="#ffffff">----</font>
在Delphi的工具菜单中选择Database desktop,在数据库DBDemos下建立一个名为example.db的数据表。数据表的字段和内容如下:
<pre>              
Name	Age	Wage
张山	25	500
王武	57	1060
李市	30	520
刘牛	28	390
</pre>
<font color="#ffffff">----</font>
<b>2、创建基于TDBGrid的TColoredDBGrid组件</b>
<p><font color="#ffffff">----</font>
在Delphi组件菜单中,选择New Component,在弹出对话框中作以下设置:
<pre>
Ancestor Type  =   TDBGrid
Class  Name   =   TColoredDBGrid
</pre>
<font color="#ffffff">----</font>
然后单击OK按钮,Delphi自动完成组件基本框架的定义。增添OnDRawColoredDBGrid事件并使它出现在Object Inspector的Events中以便在应用程序中设定改变行颜色的条件。重载DrawCell方法,只能自己绘制单元格。不能通过在OnDrawColumnCell来设置颜色,因为在OnDrawColumnCell改变单元格的颜色会再次触发OnDrawColumnCell。
<p><font color="#ffffff">----</font>
下面就是所创建组件的<a href="110201_05a.htm">源程序</a> 。
<p><font color="#ffffff">----</font>
<b>3、建立应用程序进行验证。</b>
<p><font color="#ffffff">----</font>
在Delphi文件菜单中选择New建立新的应用程序工程Project1和主窗体Form1,设置Form1的Caption属性为“控制DBGrid行颜色的示例”。在主窗体上添加Data Source、Table、Button和ColoredDBGrid组件。设置各组件的属性如下:
<pre>
Table1.Database=’DBDemos’
Table1.Tablename=’example.db’
Datasource1.Dataset=Table1
ColoredDBGrid1.Datasource=DataSource1
Button1.Caption=’退出’
</pre>
<font color="#ffffff">----</font>
在ColoredDBGrid1的onDRawColoredDBGrid事件中输入下列代码,设定由Wage(工资)来决定在ColoredDBGrid1各行的颜色。
<pre>
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;
</pre>
<font color="#ffffff">----</font>
<b>4、程序运行结果</b>
<p><font color="#ffffff">----</font>
本程序在win98(中文版)和delphi4.0(C/S版)中测试运行,得到预计的结果:第一行和第三行变为红色,第二行变为棕色,第四行为绿色,满足了基本要求。







 



<p align="right"><small><em>中国计算机世界出版服务公司版权所有</em></small> 
<br>
</p>
</body>
</html>

⌨️ 快捷键说明

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