Delphi中为DBGrid控件添上色彩

在微软软件帝国的呐喊声中,VB.net和VC#.net在短时间内拥有了一大批FANS。能在开发工具领域和微软一决高下的Borland公司也不甘示弱把Delphi“打扮”的漂漂亮亮的,让我们这些坚定的D迷依旧信心满满,坚守这块阵地。一些对Pascal语法情有独钟或对VCL爱慕非凡的新生力量也加入了我们阵营之中,新加入的同志大多以开发数据库类的软件做为初始的一步,这样对“数据感知”控件了解成为了必须,这其中最经常用到的要属DBGrid。虽然原生的DBGrid功能已经非常强大,但在实际开发工作还是会碰到捉襟见肘的时候,例如将不同类型的数据用不同的颜色加以区分这个功能就非常有用,这一功能有助于加强软件与用户的交互。本文的重点将用来解释---如何在TDBGrid中改变特定行或列或单元格的颜色。

准备阶段:

本文假设你已经知道如何将一个TDBGrid与数据库相联接,最容易的方法是使用“Database Form Wizard”,将TDBGrid与DBDemo(Delphi自带数据库中的employee.db相联接,选择除Except之外的所有字段。

给TDBGrid上颜色

·为列上色

第一种是最容易的一类上色,最直接的让你的用户看到,为TDBGrid中指定的某一列上色。

我们采用的方法是通过TDBGrid的TColumns属性来完成。步骤如下:

用鼠标选择Form上的TDBGrid组件,在Object Inspector中双击TDBGrid的Columns属性打开Columns编辑窗口。(想了解更多内容查阅Delphi帮助中的“Columns editor: creating persistent columns”主题。)

下面你所要做的就是指定你需要改变颜色的那一行或几行的背景颜色,如果你要改变字体颜色,就将Font属性集中的Color属性修改一下。

图一

就是这么简单,只要轻点几下鼠标就可以了,这样修改之后的TDBGrid就不再是呆板的白色背景了。

·为行上色

第1种 如果你想要为TDBGrid中所选的某一格或某些格指定颜色,而且你不想使用dgRowSelect选项,因为你想让TDBGrid可以直接在TDBGrid单元格中编辑数据,你应该使用TDBGrid的OnDrawColumnCell事件。

下面我们用到的技巧可以动态改变TDBGrid中的单元格文本的颜色。

代码如下:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Salary').AsCurrency>36000 then
//指定所需改变颜色行的条件表达式
DBGrid1.Canvas.Font.Color:=clMaroon;
//指定颜色为clMaroon
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

上述代码执行的功能是:把薪水超过3万6千元的员工(employee)记录字体颜色用栗色(Maroon)标出来。

图二

第2种 如何动态改变TDBGrid中行的颜色,代码如下:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Table1.FieldByName('Salary').AsCurrency>36000 then
  DBGrid1.Canvas.Brush.Color:=clWhite;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

时间: 2024-10-26 12:49:48

Delphi中为DBGrid控件添上色彩的相关文章

DNN模块开发系列文章(5)——DNN中的通用控件(上)

DNN中的通用控件主要在DotNetNuke.UI命名空间下,而与模块开发紧密相关的都在DotNetNuke.UI.UserControls中,它们是开发具有DNN风格模块不可缺少的元素. LabelControl 文章(5)--DNN中的通用控件(上)-通用语言模块"> 简介: 标签控件.这个应该是用的最多的一个控件了.主要起到在输入框前起提示作用,如果点击问号图标开可以给出详细的说明. 位置: controls\LabelControl.ascx 属性: ControlName:对应控

aspnet-Asp.net中不用fileupload控件如何上传文件?谢谢!

问题描述 Asp.net中不用fileupload控件如何上传文件?谢谢! Asp.net中不用fileupload控件,在知道客户端待上传的文件路径和文件名,如何上传文件?谢谢! 解决方案 http://bbs.csdn.net/topics/320051989

C#里能不能实现像delphi 中的srollbox 控件功能?

问题描述 C#里能不能实现像delphi中的srollbox控件功能呢?在C#2005中我没有找到这个控件,有谁知道的吗..?谢谢:) 解决方案 解决方案二:自己顶一下...有谁知道吗...?谢谢!

调试-Delphi6中, DBGrid控件的OnDrawColumnCell方法到底什么时候会触发

问题描述 Delphi6中, DBGrid控件的OnDrawColumnCell方法到底什么时候会触发 触发OnDrawColumnCell后,我进行单步调试,貌似程序就在里面进行死循环了,不停执行,为什么. 另 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if

Delphi中利用MSCOMM控件进行GPS数据采集

1.准备 GPS(Global Positioning System),即全球定位系统,利用24颗GPS卫星的测距和测时功能进行全球定位,在许多系统中,如机场导航系统,出租车辆管理和调度系统.江河流域的灾害信息管理和预测系统中,GPS得到了广泛的应用.本文利用MSCOMM控件实现了GPS数据的采集,可为信息管理和指挥调度等提供定位数据. 本文采用GPS的异步串行传送方式,将GARMIN 12C按NMEA-0183协议输出的数据采集到了微机,并将接收到的地理坐标转换成为直角坐标. 在DELPHI

DELPHI中利用TreeView控件建立目录树

关于TreeView的使用,还可以参看:联合使用TreeView 组件 TreeView是一个显示树型结构的控件,通过它能够方便地管理和显示具有层次结构的信息,是Windows应用程序的基本控件之一.DELPHI虽然具有比较强大的文件管理功能,提供了多个用于文件管理的标准控件,如DriveComboBox.DirectoryListBox.FileListBox等,通过设置它们的属性,使其建立起联系,甚至不用编写一行程序,我们就可以实现在不同的目录之间进行切换,然而这样的目录切换只适用于进行文件

Android中的基本控件(上)--TextView控件

TextView组件的主要功能是用于显示文本,此类定义. java.lang.Object  ↳android.view.View  ↳android.widget.TextView <TextView>组件的常用属性及对应方法  <TextView  定义文本显示框组件 android:id="@+id/mytext1"  定义此文本组件的ID android:layout_width="fill_parent"  宽度为整个容器的宽度 a

Android中的基本控件(上)--按钮控件Button

Button类的继承结构: java.lang.Object  ↳ android.view.View   ↳android.widget.TextView   ↳android.widget.Button  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

C++ Builder中如何保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的