Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14481343
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:46:40

下载本文示例代码
 ?elphi中数据控制构件DBGrid是用来反映数据表的最重要、也是最常用的构件。在应用程序中,如果以彩色的方式来显示DBGrid,将会增加其可视性,尤其在显示一些重要的或者是需要警示的数据时,可以改变这些数据所在的行或列的前景和背景的颜色。   DBGrid属性DefaultDrawing是用来控制Cell(网格)的绘制。若DefaultDrawing的缺省设置为True,意思是Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或EditFormat特性来绘制的;若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。   在这里将用到DBGrid的一个重要属性:画布Canvas,很多构件都有这一属性。Canvas代表了当前被显示DBGrid的表面,你如果把另行定义的显示内容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。具体应用时,涉及到Canvas的Brush属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容。   以下用一个例子来详细地说明如何显示彩色的DBGrid。在例子中首先要有一个DBGrid构件,其次有一个用来产生彩色筛选条件的SpinEdit构件,另外还有ColorGrid构件供自由选择数据单元的前景和背景的颜色。   1.建立名为ColorDBGrid的Project,在其窗体Form1中依次放入所需构件,并设置属性为相应值,具体如下所列:    Table1 DatabaseName: DBDEMOS TableName: EMPLOYEE.DB Active: True;   DataSource1 DataSet: Table1   DBGrid1 DataSource1: DataSource1 DefaultDrawing: False   SpinEdit1 Increment:200 Value: 20000   ColorGrid1 GridOrdering: go16*1   2.为DBGrid1构件OnDrawDataCell事件编写响应程序:   procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);   begin    if Table1.Fieldbyname(′Salary′).value=SpinEdit1.value then    DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor    DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;    DBGrid1.Canvas.FillRect(Rect);    DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);   end;   这个过程的作用是当SpinEdit1给定的条件得以满足时,如′salary′变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGrid1的背景颜色来显示。然后调用DBGrid的Canvas的填充过程FillRect和文本输出过程重新绘制DBGrid的画面。   3.为SpinEdit1构件的OnChange事件编写响应代码:   procedure TForm1.SpinEdit1Change(Sender: TObject);   begin    DBGrid1.refresh;   end;   当SpinEdit1构件的值有所改变时,重新刷新DBGrid1。   4.为ColorGrid1的OnChange事件编写响应代码:   procedure TForm1.ColorGrid1Change(Sender: TObject);   begin    DBGrid1.refresh;  end;   当ColorGrid1的值有所改变时,即鼠标的右键或左键单击ColorGrid1重新刷新DBGrid1。   5.为Form1窗体(主窗体)的OnCreate事件编写响应代码:   procedure TForm1.FormCreate(Sender: TObject);   begin    ColorGrid1.ForeGroundIndex:=9;    ColorGrid1.BackGroundIndex:=15;   end;   在主窗创建时,将ColorGrid1的初值设定前景为灰色,背景为白色,也即DBGrid的字体颜色为灰色,背景颜色为白色。   6.现在,可以对ColorDBGrid程序进行编译和运行了。当用鼠标的左键或右键单击ColorGrid1时,DBGrid的字体和背景颜色将随之变化。   在本文中,只是简单展示了以彩色方式显示DBGrid的原理,当然,还可以增加程序的复杂性,使其实用化。同样道理,也可以将这个方法扩展到其他拥有Canvas属性的构件中,让应用程序的用户界面更加友好。  ?elphi中数据控制构件DBGrid是用来反映数据表的最重要、也是最常用的构件。在应用程序中,如果以彩色的方式来显示DBGrid,将会增加其可视性,尤其在显示一些重要的或者是需要警示的数据时,可以改变这些数据所在的行或列的前景和背景的颜色。   DBGrid属性DefaultDrawing是用来控制Cell(网格)的绘制。若DefaultDrawing的缺省设置为True,意思是Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或EditFormat特性来绘制的;若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。   在这里将用到DBGrid的一个重要属性:画布Canvas,很多构件都有这一属性。Canvas代表了当前被显示DBGrid的表面,你如果把另行定义的显示内容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。具体应用时,涉及到Canvas的Brush属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容。   以下用一个例子来详细地说明如何显示彩色的DBGrid。在例子中首先要有一个DBGrid构件,其次有一个用来产生彩色筛选条件的SpinEdit构件,另外还有ColorGrid构件供自由选择数据单元的前景和背景的颜色。   1.建立名为ColorDBGrid的Project,在其窗体Form1中依次放入所需构件,并设置属性为相应值,具体如下所列:    Table1 DatabaseName: DBDEMOS TableName: EMPLOYEE.DB Active: True;   DataSource1 DataSet: Table1   DBGrid1 DataSource1: DataSource1 DefaultDrawing: False   SpinEdit1 Increment:200 Value: 20000   ColorGrid1 GridOrdering: go16*1   2.为DBGrid1构件OnDrawDataCell事件编写响应程序:   procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);   begin    if Table1.Fieldbyname(′Salary′).value=SpinEdit1.value then    DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor    DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;    DBGrid1.Canvas.FillRect(Rect);    DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);   end;   这个过程的作用是当SpinEdit1给定的条件得以满足时,如′salary′变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGrid1的背景颜色来显示。然后调用DBGrid的Canvas的填充过程FillRect和文本输出过程重新绘制DBGrid的画面。   3.为SpinEdit1构件的OnChange事件编写响应代码:   procedure TForm1.SpinEdit1Change(Sender: TObject);   begin    DBGrid1.refresh;   end;   当SpinEdit1构件的值有所改变时,重新刷新DBGrid1。   4.为ColorGrid1的OnChange事件编写响应代码:   procedure TForm1.ColorGrid1Change(Sender: TObject);   begin    DBGrid1.refresh;  end;   当ColorGrid1的值有所改变时,即鼠标的右键或左键单击ColorGrid1重新刷新DBGrid1。   5.为Form1窗体(主窗体)的OnCreate事件编写响应代码:   procedure TForm1.FormCreate(Sender: TObject);   begin    ColorGrid1.ForeGroundIndex:=9;    ColorGrid1.BackGroundIndex:=15;   end;   在主窗创建时,将ColorGrid1的初值设定前景为灰色,背景为白色,也即DBGrid的字体颜色为灰色,背景颜色为白色。   6.现在,可以对ColorDBGrid程序进行编译和运行了。当用鼠标的左键或右键单击ColorGrid1时,DBGrid的字体和背景颜色将随之变化。   在本文中,只是简单展示了以彩色方式显示DBGrid的原理,当然,还可以增加程序的复杂性,使其实用化。同样道理,也可以将这个方法扩展到其他拥有Canvas属性的构件中,让应用程序的用户界面更加友好。 下载本文示例代码


为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色为Delphi数据表格增加彩色
阅读(182) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~