高分求解基本算法,DbGrid中某一条件下,CELL单元格颜色设置问题。。
查询某工厂几个车间的当天生产情况出来的结果。
fDate fOrderQty 车间一 车间二 车间三......
5-25 6000 50/6002 30/5900 80/4500
5-28 7000 1000/6000 3500/7200 300/8500
...
现在就是要实现这样子的结果。
对每一行记录进行判断,如果某车间的总生产数量超过该fOrderQty的数量,就是该Cell的颜色变为红色。
也就是说如果就按上面记录的话,显示结果应该是
第一条记录中的 50/6002为红色,
第二条记录中的。3500/7200 、300/8500为红色。
问题点数:100、回复次数:9Top
1 楼HelpMeNow(混口飯吃)回复于 2005-05-30 15:24:05 得分 0
50/6002 前面是当天产量,后面是总的累计产量,也就说累计产量大于订单数量,要做个提醒Top
2 楼hellolongbin(一个人(自从扩充话题改版,再也不去灌水乐园了))回复于 2005-05-30 15:30:25 得分 70
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if 你的条件 then DBGrid1.Canvas.Font.Color:=clRed;
DBGrid1.Canvas.Font.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(rect,DataCol,column,state);
end;Top
3 楼hellolongbin(一个人(自从扩充话题改版,再也不去灌水乐园了))回复于 2005-05-30 15:31:07 得分 0
去掉 DBGrid1.Canvas.Font.Color:=clBlue;这句话Top
4 楼78hgdong(赤脚)回复于 2005-05-30 15:31:20 得分 10
在OnDrawColumnCell事件里写:
.....
DBGrdBrowse.Canvas.Font.Color:=clRed;
.....Top
5 楼HelpMeNow(混口飯吃)回复于 2005-05-30 15:41:31 得分 0
出来的结果是一整行,而不能是某个区域啊(Cell单元格)Top
6 楼ten_years_ago(昨天上班,今天下岗)回复于 2005-05-30 16:56:48 得分 20
if (你的条件) and (Column.field.name=你的字段名) then DBGrid1.Canvas.Font.Color:=clRed;
DBGrid1.Canvas.Font.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(rect,DataCol,column,state);
Top
7 楼HelpMeNow(混口飯吃)回复于 2005-06-03 08:09:46 得分 0
我再来提前Top
8 楼aloking(黑鲸)回复于 2005-06-03 20:01:25 得分 0
ten_years_ago(昨天上班,今天下岗) 都解决了,还提前干嘛Top
9 楼HelpMeNow(混口飯吃)回复于 2005-06-06 08:49:21 得分 0
按上面,弄出来的,都有是一行的,不是某个Cell的Top




