起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 172|回复: 8

行变色**

[复制链接]
发表于 2008-10-6 18:29:54 | 显示全部楼层 |阅读模式
IF (dsbSALES_FORECAST_DISTRICT_DT.DataSet.Active) AND (NOT dsbSALES_FORECAST_DISTRICT_DT.DataSet.IsEmpty) THEN
        IF (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE2').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE2').OldValue) OR (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE3').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE3').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('STOCK_AMOUNT').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('STOCK_AMOUNT').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('WAY_STOCK').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('WAY_STOCK').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('LESS_FINISHED').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('LESS_FINISHED').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('SAVE_STOCK').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('SAVE_STOCK').OldValue) THEN
            AColor:=$09EA4FE;
这是我的代码,我想在数据集改变之后,如果该行被改变了,就变色否则不变,但是这样写,我查询出来时就全部变颜色了,怎么弄了,急~~~
回复

使用道具 举报

发表于 2008-10-7 08:38:15 | 显示全部楼层
楼主先把条件弄简单点试试,先确认是条件判断错了,还是行变色的代码错了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-7 09:27:34 | 显示全部楼层
试过了,是由于条件少了。
因为我把数据集查询出来的时候就成了编辑状态,好像就是当数据显示出来的时候他也执行了变色的代码,
我想要的是当数据控件接受键盘输入或者鼠标右键粘贴等操作的时候才变色 ,但是不晓得怎么写
回复 支持 反对

使用道具 举报

发表于 2008-10-7 09:28:59 | 显示全部楼层
不能实现,1楼代码必须post后才能正常的读出新输入的数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-7 09:38:07 | 显示全部楼层
那为什么我数据显示出来的时候她就已经全部变色了呢???
回复 支持 反对

使用道具 举报

发表于 2008-10-7 09:49:47 | 显示全部楼层
3楼您说是条件少了,怎么又问5楼的问题?
回复 支持 反对

使用道具 举报

发表于 2008-10-7 09:56:18 | 显示全部楼层
呵呵,直白的说,那些数据已经post过了。在显示的过程中,读取原先的数据根据要求进行显示,当修改后的数据,只有焦点离开该字段,此时才读取该字段的值,才能触发到该事件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-7 10:09:44 | 显示全部楼层
哦,呵呵,可能是我表达出错了


我把条件换成了
  IF FuncBroker1.Func.ID = 'SEND_GOODS_FORECAST_FUN' THEN//  客服发货预测
     IF (dsbSALES_FORECAST_DISTRICT_DT.DataSet.Active) AND (dsbSALES_FORECAST_DISTRICT_DT.DataSet.State = Business.Data.TDataSetState.dsEdit) THEN
        IF (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE2').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE2').OldValue) OR (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE3').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('REQUEST_VALUE3').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('STOCK_AMOUNT').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('STOCK_AMOUNT').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('WAY_STOCK').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('WAY_STOCK').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('LESS_FINISHED').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('LESS_FINISHED').OldValue) or (dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('SAVE_STOCK').NewValue <> dsbSALES_FORECAST_DISTRICT_DT.DataSet.FieldByName('SAVE_STOCK').OldValue) THEN //
            AColor:=$09EA4FE;

结果是选中哪一行的时候如果改变了,就变色,但是如果鼠标移开那一行,它就变回原来的颜色了,我想要移开之后不变回原来的颜色,而是要移开之后还是改变之后的颜色,这样不能实现吗?
回复 支持 反对

使用道具 举报

发表于 2008-10-7 10:25:40 | 显示全部楼层
改变成原来的颜色,肯定是判断的值又有问题了。另外注意7楼说的要点。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 21:14 , Processed in 0.048076 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表