2

我对如何实现此代码有疑问

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-b​​y-unchecking.html

它说在表单的方法上创建它并在数据源的活动方法和字段的修改方法中调用它。我假设这是数据源中的字段,而不是表单设计中的字段。

我的问题是这是否是我调用该方法的方式:

public int active()
{
int ret;
element.setFieldAccess();
ret = super();

return ret;
}


public void modified()
{

element.setFieldAccess();
super();
}
4

3 回答 3

2

首先,你的方法太冗长了,这就是它的表达方式:

public void setFieldAccess()
{
    hcmworkerbankaccount_ds.object(fieldNum(HcmWorkerBankAccount,Amount)).allowEdit(!HcmWorkerBankAccount.FullAmount);
}

另外,在调用之后super()调用方法:

public int active()
{
    int ret = super();
    element.setFieldAccess();    
    return ret;
}
于 2012-10-26T14:19:17.300 回答
1

碰巧我今天在 Global 类中发现了一个方法,它也可以做到这一点。

public static void enableDSField(FormDataSource _datasource, fieldId _fieldId, boolean _enable)
{
    if (_datasource && _fieldId)
    {
        enableDatasourceFieldObject(_datasource.object(_fieldId), _enable);
    }
}
于 2012-12-18T23:08:27.987 回答
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);
}
}
于 2012-10-26T13:19:28.750 回答