在线等:看看能不能搞定!!想让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;
...全文
108 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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;

我之前写的。给你参考一下。。。。。。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧