* 需求说明:
在填写 '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
这是为什么? 还有其它的办法吗? |