用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧Delphi

为Delphi数据表格增加色彩

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:01:13
在DELPHI中经常用到网格控件(DBGrid)显示数据,网格控件只提供了每一行的颜色属性,但在实际应用中我们经常希望它按某一行某一项的取值不同显示不同的颜色,甚至在网格中的单位表格项中显示出图像等等,下面我们以一个简单的例子来告诉大家怎么做。

  比如我们要求如果春季有退书用红色表示,如果秋季有退书用黄色表示(图1)

  

  图1

  利用DBGrid自绘功能可以很容易地实现这样的要求。用户可以处理DBGrid的OnDrawColumnCell事件,在其中实现特殊的效果。要判断记录是否满足要求,可以使用DBGrid的DataLink属性获得数据,但DBGrid的DataLink属性属于保护成员,必须在TCustomDBGrid的子类中调用。

type TMyCustomDBGrid = class(TCustomDBGrid); procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); varsCjts,sQjTs:String;begin    with TMyCustomerDBGrid(Sender) do       begin       Cjts:=DataLink.Fields[5].AsString;       sQjts:=DataLink.Fields[9].AsString;       if sCjts<>''''  then       //春季退书数量>0的用红色显示            Canvas.Brush.Color := clRed       else          if sQjts<>''''  then      //秋季退书数量>0的用黄色显示       Canvas.Brush.Color := clYellow          else             Canvas.Brush.Color:=clWhite;      Canvas.Font.Color:=clBlack;            canvas.fillrect(rect);      canvas.textout(rect.left+4,rect.top+4,Column.Field.AsString);      end;end;


  由此方法可以延伸出其它控件的多种修饰方法,比如可以按数据项值采用不同的颜色,可以按记录号显示不同的颜色。总之,灵活应用canvas、rect及bitmap等对象,可以将各种网格装饰得绚丽多彩。

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:23,437.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号