热情软件屋

 

如何给DBGRID中特殊的字段赋予不同的颜色


编号:QA004010
建立日期: 2001年3月19日 最后修改日期:2001年3月19日
所属类别:

梅子:
    操作系统: WIN98
    编程工具: DELPHI 5
    问题: 如何给DBGRID中特殊的字段赋予不同的颜色,如某个人的姓名为红色,其他人的姓名为黑色?
    水平: 中级

回答:

    利用DBGrid自绘功能可以很容易地实现这样的要求。用户可以处理DBGrid的OnDrawColumnCell事件,在其中实现特殊的效果。在Delphi中,我们无须绘制所有单元,只需要绘制我们需要改变的单元,而调用DefaultDrawColumnCell方法把其它单元的绘制工作交给Delphi去做,Delphi会绘制单元格,包括背景色、边框、焦点框、固定单元格的三维效果。要判断记录是否满足要求,可以使用DBGrid的DataLink属性获得数据,但DBGrid的DataLink属性属于保护成员,必须在TCustomDBGrid的子类中调用。下面是一个简单的改变某些行颜色的例子:
    type
     TMyCustomDBGrid = class(TCustomDBGrid);
    
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
     DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var s: string;
    begin
     with TMyCustomDBGrid (Sender) do
     begin
     s := DataLink.Fields[1].AsString;
     if s = '张三' then
     Canvas.Brush.Color := clRed
     else
     Canvas.Brush.Color := clBlack;
     DefaultDrawColumnCell(Rect, DataCol, Column, State);
     end;
    
    end;

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio