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

間違ったフィールドの変更されたメソッドをオーバーライドしていたため、機能しませんでした。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 に答える
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 に答える