我对如何实现此代码有疑问
public void setFieldAccess()
{
if(HcmWorkerBankAccount.FullAmount == NoYes::Yes)
{
hcmworkerbankaccount_ds.allowedit(false);
}
else
{
hcmworkerbankaccount_ds.allowedit(true);
}
}
信用:http://axhelper.blogspot.com/2011/02/to-disable-record-in-form-by-unchecking.html
它表示要在表单的方法上创建它,并在数据源的活动方法和字段的修改方法中调用它。我假设这是数据源中的字段,而不是表单设计。
我的问题是,如果我称之为方法:
public int active()
{
int ret;
element.setFieldAccess();
ret = super();
return ret;
}
public void modified()
{
element.setFieldAccess();
super();
}
答案 0 :(得分:2)
首先,你的方法太冗长了,这就是把它放进去的方法:
public void setFieldAccess()
{
hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(!HcmWorkerBankAccount.FullAmount);
}
此外,在 super()
电话后调用方法:
public int active()
{
int ret = super();
element.setFieldAccess();
return ret;
}
答案 1 :(得分:1)
它没有工作,因为我重写了错误字段的修改方法。我覆盖了受影响的字段上的方法,而不是确定它的allowEdit功能的字段。
另外
public void setFieldAccess()
{
if(HcmWorkerBankAccount.FullAmount == NoYes::Yes)
{
hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(false);
}
else
{
hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(true);
}
}
答案 2 :(得分:1)
恰好是这样,我今天在Global类中发现了一个也可以做到这一点的方法。
public static void enableDSField(FormDataSource _datasource, fieldId _fieldId, boolean _enable)
{
if (_datasource && _fieldId)
{
enableDatasourceFieldObject(_datasource.object(_fieldId), _enable);
}
}