起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 159|回复: 2

【搞定】[问题] FieldChange 事件中的问题, 急!**

[复制链接]
发表于 2007-5-24 16:14:09 | 显示全部楼层 |阅读模式
* 需求说明:  
      在填写 'ENABLE_DATE' 字段时, 如果 'STATUS_ID' 字段值为 "NEW" 或空时,则不允许填充,同时给出提示并取消填写的值.


* FieldChange 事件代码:
--------------------------------------

////修改 "启用时间"
if Field.FieldName = 'ENABLE_DATE' then
begin
  //if Field.AsString = Business.System.Variants.VarToStr(Field.OldValue) then exit;
  //if (Business.System.Variants.VarToStr(Field.OldValue) = '')  and ((Fields.FieldByName('STATUS_ID').AsString = 'NEW') or (Fields.FieldByName('STATUS_ID').AsString = '')) then
  if (Fields.FieldByName('STATUS_ID').AsString = 'NEW') or (Fields.FieldByName('STATUS_ID').AsString = '') then
  begin
    JSDialogs.ShowMsg('企业性质没有使用前,不能设置启用日期!','提示');
    Fields.FieldByName('ENABLE_DATE').AsString := Business.System.Variants.VarToStr(FieldByName('ENABLE_DATE').OldValue);
  end;
end;


* 问题:
1.  触发事件时,提示对话窗口:"企业性质没有使用前,不能设置启用日期!"会弹出多个.
2. 如果采用这两句代码后, 又会变成这种情况,
A. 对已保存的记录进行操作(''STATUS_ID'' 值为"NEW"时填充'ENABLE_DATE'字段时,对话框只会提示一次.
B. 新增一条记录时,''STATUS_ID'' 被默认自动填充为"NEW", 并可以直接填写 'ENABLE_DATE' 字段值, 并无任何提示.
//if Field.AsString = Business.System.Variants.VarToStr(Field.OldValue) then exit;
  //if (Business.System.Variants.VarToStr(Field.OldValue) = '')  and ((Fields.FieldByName('STATUS_ID').AsString = 'NEW') or (Fields.FieldByName('STATUS_ID').AsString = '')) then

这是为什么? 还有其它的办法吗?
回复

使用道具 举报

发表于 2007-5-25 10:35:47 | 显示全部楼层
在FieldChange事件中,又去修改字段的值,自然会出错了
你可以先取消事件,处理,最后在设置事件,这样可以保证中间修改字段时候,不会再次触发这个事件了
回复 支持 反对

使用道具 举报

发表于 2007-9-19 09:07:10 | 显示全部楼层
由于楼主长时间未跟贴,此帖先结,有问题请开新帖.
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 02:33 , Processed in 0.038574 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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