在线等:看看能不能搞定!!想让Dbgrid根据数据只改变行与列交替部份的颜色,而总的交替行颜色不变!!!

cnhxjtoa 2004-12-21 07:37:04
procedure TForm1.DBGrid6DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//以下代码是实现交替行和所选的颜色,
//问: 这在个前提下如何根据某一列中数据 ,只改变当前列所在行与列相交部份的颜色??
如 成绩优秀数据部份显示红色
if Column.Grid.DataSource.DataSet.RecNo Mod 2 = 0 then begin
DBGrid6.Canvas.Font.Color := clblue;
DBGrid6.Canvas.Brush.Color := clMoneyGreen;
end else begin
DBGrid6.Canvas.Font.Color := clblue;
DBGrid6.Canvas.Brush.Color := clSkyBlue;
end;
if gdSelected in state then begin
SetBkColor(dbgrid6.canvas.handle,ClYellow);
end;
DBGrid6.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
...全文
70 点赞 收藏 6
写回复
6 条回复
cnhxjtoa 2005年01月04日
呵呵不错,
把500:(Sender as TDBGrid).Canvas.Brush.Color :=clGreen; //当工资=500时,为绿色

改成:

500:(Sender as TDBGrid).Canvas.Font.Color :=clGreen; //当工资=500时,为绿色
后,表格背景色不变了,字体相关色彩全改变了,要是只改变表格某行某列的色彩值就好了.!!^_^

哥们还有招吗?
回复 点赞
gxgyj 2005年01月04日

http://dev.csdn.net/article/53/53439.shtm DBGrid应用全书(一)
http://dev.csdn.net/article/53/53440.shtm DBGrid使用全书(二)
http://dev.csdn.net/article/53/53441.shtm DBGrid使用全书(三)
http://dev.csdn.net/article/53/53442.shtm DBGrid使用全书(四)
http://dev.csdn.net/article/53/53443.shtm DBGrid使用全书(五)




回复 点赞
jackie168 2005年01月04日
把500:(Sender as TDBGrid).Canvas.Brush.Color :=clGreen; //当工资=500时,为绿色

改成:

500:(Sender as TDBGrid).Canvas.Font.Color :=clGreen; //当工资=500时,为绿色

。。。。。。略
回复 点赞
cnhxjtoa 2005年01月04日
我楼上的哥们也只是改变交替的色彩啊

我想实现的是改变具体某行某列的色彩.

感觉Delhpi是没法实现的.
回复 点赞
cnhxjtoa 2004年12月21日
谢谢作答!!
你的效果也是改变一整行的的颜色,我是想改变行中列所在部分的颜色,只改变一个网格的颜色
回复 点赞
jackie168 2004年12月21日
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); //根据工资金额来改变颜色
var i :integer; //变量
begin
i:= AdoTable1.FindField('工资').AsInteger; //取得当前记录工资字段的值。
case i of //程序将根据wage值设置各行的颜色。
500:(Sender as TDBGrid).Canvas.Brush.Color :=clGreen; //当工资=500时,为绿色
501..999:(Sender as TDBGrid).Canvas.Brush.Color :=clred; //当工资>500<1000时,为红色
1000..1500:(Sender as TDBGrid).Canvas.Brush.Color :=clMaroon; //当工资=1000~1500时,为棕色
2000:(Sender as TDBGrid).Canvas.Brush.Color :=$00FFBFFF; //当工资=2000时,为粉红
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); //重画TDBGrid的颜色
end;

我之前写的。给你参考一下。。。。。。
回复 点赞
发动态
发帖子
数据库相关
创建于2007-08-02

1211

社区成员

8.8w+

社区内容

Delphi 数据库相关
社区公告
暂无公告