从DBGrid中导出数据,当从DBGrid中读出某一行的数据后,使这一行的颜色固定不变,以区别还没有读出或导出失败的数据?例如:读出第一行的数据后,使第一行变红(读取第二行的数据时还是红色)。不够可以加分!
解决方案 »
- 请各位进来看一下帮帮忙,关于memo
- 请问如何不允许EDIT控件粘贴?
- 希望各位大哥给我个回答,谢谢!
- 客户端(clientsocket)在连接服务器时,总是出现 windows socket error 10055 stack over flow !急急,在线等待!
- [在线等待]用indy如何获取服务器状态?
- 参与有分,详细说明者另开贴加200分
- 有用过dxbgrid的吗,这个是什么原因阿
- 郁闷啊,年关将进,公司先裁员,后降薪。大家的公司如何?
- TQuery与TupdateSQL有什么区别
- 哪儿有delphi c/s 版的补丁?请帮助提供。谢谢
- 谁有IntraWeb中Script语法的规则的文档
- delphi 7.0中关于IdTcpServer的问题
然后在dbgrid的drawcell事件中,判断该记录是否在上面的列表中,如果在的话,就draw为红色!
在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);
var
sCjts,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;