📄 delp024.html
字号:
<html><!-- #BeginTemplate "/Templates/delphi.dwt" -->
<head>
<!-- #BeginEditable "doctitle" -->
<title>为Delphi数据表格增加彩色</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta NAME="author" VALUE="独孤求败(Fwolf)">
<!-- #EndEditable -->
<style type="text/css">
<!--
body { font-family: "宋体"; font-size: 9pt}
td { font-family: "宋体"; font-size: 9pt}
a:hover { text-decoration: underline}
a { text-decoration: none}
input { font-family: "宋体"; font-size: 9pt}
select { font-family: "宋体"; font-size: 9pt}
-->
</style>
</head>
<body>
<table width="98%" border="0" align="center">
<tr>
<td width="33%"><a href="../../../index.html"><img src="../../../logos/fwolf9.gif" width="271" height="60" alt="独孤之所首页" border="0"></a></td>
<td width="67%">
<div align="center"> </div>
</td>
</tr>
</table>
<table width="100%" border="0" align="center" cellspacing="1" bgcolor="#66FF66">
<tr>
<td width="90%"><a href="../../../index2.html">独孤之所</a> > <a href="../../book.htm">天下文章</a>
> <a href="../delphi.html">Delphi</a> > <font color="#FF3333"><!-- #BeginEditable "2%C7%F8" -->为Delphi数据表格增加彩色<!-- #EndEditable --></font>
</td>
<td width="10%">
<div align="center"><a href="javascript:window.close()">[关闭窗口]</a></div>
</td>
</tr>
</table>
<hr size="1">
<br>
<table width="584" border="0" align="center" cellspacing="1">
<tr>
<td width="582"> <font color="#FF3333">
<div align="center"><!-- #BeginEditable "%B1%EA%CC%E2" -->为Delphi数据表格增加彩色<!-- #EndEditable --></div>
</font> </td>
</tr>
<tr>
<td width="582">
<div align="center"><!-- #BeginEditable "%D7%F7%D5%DF" --><!-- #EndEditable --></div>
</td>
</tr>
<tr>
<td width="582"><!-- #BeginEditable "%CE%C4%B1%BE%C7%F8" -->
<center>
<p align="left">Delphi中数据控制构件DBGrid是用来反映数据表的最重要、也是最常用的构件。在应用程序中,如果以彩色的方式来显示DBGrid,将会增加其可视性,尤其在显示一些重要的或者是需要警示的数据时,可以改变这些数据所在的行或列的前景和背景的颜色。
<br>
<br>
DBGrid属性DefaultDrawing是用来控制Cell(网格)的绘制。若DefaultDrawing的缺省设置为True,意思是Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或EditFormat特性来绘制的;若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。
<br>
<br>
在这里将用到DBGrid的一个重要属性:画布Canvas,很多构件都有这一属性。Canvas代表了当前被显示DBGrid的表面,你如果把另行定义的显示内容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。具体应用时,涉及到Canvas的Brush属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows
GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容。 <br>
<br>
以下用一个例子来详细地说明如何显示彩色的DBGrid。在例子中首先要有一个DBGrid构件,其次有一个用来产生彩色筛选条件的SpinEdit构件,另外还有ColorGrid构件供自由选择数据单元的前景和背景的颜色。
<br>
<br>
1.建立名为ColorDBGrid的Project,在其窗体Form1中依次放入所需构件,并设置属性为相应值,具体如下所列: <br>
Table1 DatabaseName: DBDEMOS <br>
TableName: EMPLOYEE.DB <br>
Active: True; <br>
DataSource1 DataSet: Table1 <br>
DBGrid1 DataSource1: DataSource1 <br>
DefaultDrawing: False <br>
SpinEdit1 Increment:200 <br>
Value: 20000 <br>
ColorGrid1 GridOrdering: go16*1 <br>
<br>
2.为DBGrid1构件OnDrawDataCell事件编写响应程序: <br>
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:
TRect;Field: TField; State: TGridDrawState); <br>
begin <br>
if Table1.Fieldbyname(′Salary′).value=SpinEdit1.value then <br>
DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor <br>
else <br>
DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor; <br>
DBGrid1.Canvas.FillRect(Rect); <br>
DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString); <br>
end; <br>
<br>
这个过程的作用是当SpinEdit1给定的条件得以满足时,如′salary′变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGrid1的背景颜色来显示。然后调用DBGrid的Canvas的填充过程FillRect和文本输出过程重新绘制DBGrid的画面。
<br>
<br>
3.为SpinEdit1构件的OnChange事件编写响应代码: <br>
procedure TForm1.SpinEdit1Change(Sender: TObject); <br>
begin <br>
DBGrid1.refresh; <br>
end; <br>
<br>
当SpinEdit1构件的值有所改变时,重新刷新DBGrid1。 <br>
<br>
4.为ColorGrid1的OnChange事件编写响应代码: <br>
procedure TForm1.ColorGrid1Change(Sender: TObject); <br>
begin <br>
DBGrid1.refresh; <br>
end; <br>
<br>
当ColorGrid1的值有所改变时,即鼠标的右键或左键单击ColorGrid1重新刷新DBGrid1。 <br>
<br>
5.为Form1窗体(主窗体)的OnCreate事件编写响应代码: <br>
procedure TForm1.FormCreate(Sender: TObject); <br>
begin <br>
ColorGrid1.ForeGroundIndex:=9; <br>
ColorGrid1.BackGroundIndex:=15; <br>
end; <br>
<br>
在主窗创建时,将ColorGrid1的初值设定前景为灰色,背景为白色,也即DBGrid的字体颜色为灰色,背景颜色为白色。 <br>
<br>
6.现在,可以对ColorDBGrid程序进行编译和运行了。当用鼠标的左键或右键单击ColorGrid1时,DBGrid的字体和背景颜色将随之变化。
<br>
<br>
在本文中,只是简单展示了以彩色方式显示DBGrid的原理,当然,还可以增加程序的复杂性,使其实用化。同样道理,也可以将这个方法扩展到其他拥有Canvas属性的构件中,让应用程序的用户界面更加友好。
<br>
<br>
<br>
<br>
<br>
<div align=right></div>
</center>
<!-- #EndEditable --></td>
</tr>
<tr>
<td width="582"><!-- #BeginEditable "%B1%B8%D7%A2" -->摘自天极网<!-- #EndEditable --></td>
</tr>
</table>
<br>
<hr size="1">
<table width="25%" border="1" align="center" cellspacing="0" cellpadding="0" bordercolorlight="#CCCCFF" bordercolordark="#000033" bordercolor="#6666FF">
<tr align="center">
<td> 转载请注明出于 <a href="http://fwolf.yeah.net" target="_blank">独孤之所</a><!--Fwolf出品
fwolf001@163.net
http://fwolf.yeah.net --> </td>
</tr>
<tr align="center">
<td>
<script>document.write("<a href=http://www.topcn.com/siteinfo.asp?UserName=fwolf2000&SiteType=0 target=_blank><img src=http://www1.topcn.com:8081/statistics.asp?fwolf2000&referURL="+escape(top.document.referrer)+"&curURL="+escape(top.document.URL)+"&imgStyle=0"+" border=0 alt='Top中文网站龙虎榜' ></a>");</script>
<script>document.write("<a href=http://www.textclick.com/viewmain.asp?name=fwolf2000 target=_blank><img src=http://ad.t2t2.com/stat.asp?user=fwolf2000&refer="+escape(document.referrer)+"&cur="+escape(document.URL)+" alt=太极统计 border=0></a>");</script>
</td>
</tr>
</table>
<table width="100%" border="0" align="center" cellspacing="1" bgcolor="#66FF66">
<tr>
<td width="10%"><a href="javascript:window.close()">[关闭窗口]</a></td>
<td width="90%">
<div align="left"></div>
</td>
</tr>
</table>
<div id="Layer1" style="position:absolute; width:470px; height:60; z-index:1; left: 293px; top: 13px; overflow: hidden">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="60">
<tr>
<td><a href="http://202.99.67.100/adclick2/click/random.cgi?job=go&id=1490" target="_blank"><img src="http://202.99.67.100/adclick2/click/random.cgi?id=1490" border="0" width="468" height="60"></a>
</td>
</tr>
</table>
</div>
<div align="center"></div>
<p align="center">
<script language="JavaScript1.1" src=http://ad.t2t2.com/textclick.asp?user=fwolf&style=4&bkcolor=no></script>
</p>
<p align="center"> </p>
</body>
<!-- #EndTemplate --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -