0

我正在 Ax 2012 中开发。我在一个表单上有 stringEdit 控件,该表单包含相同类型的信息并共享一个 EDT。我在课堂上对 EDT 进行验证。我从表单上的检查方法调用该类。对于所有需要此验证的 stringEdit 控件,我在表单上使用相同的方法。我从每个控件的 validate 方法中踢出表单上的 check 方法。

我的问题:如何将已修改(并且需要验证)的控件传递给 check 方法?我在表单上的检查方法如下所示:

public void checkNumber(FormStringControl _cntrl)
{
        MyValidationClass     valClass = new MyValidationClass(); 
    ;

    if(!valClass.validateNumber(_cntrl.text()))
    {
        _cntrl.text("");     
    }
}

***我遇到的问题是将当前控件传递给上述方法

控件上的 validate 方法如下所示:

public boolean validate()
{
    boolean ret;
    //ret = super();
    ret = element.checkNumber(this);
    return ret;
}

我遇到的问题是将我正在修改的当前控件传递给 checkNumber 方法。如果我不能将“this”传递给 check 方法,那我应该传递什么?

4

1 回答 1

1

可以通过this,但您也应该调用super()

public boolean validate()
{
    return super() && element.checkNumber(this);
}

或者:

public boolean validate()
{
    return super() && new MyValidationClass.validateNumber(this.text());
}

考虑改用静态方法(在控制表上):MyTable::validateNumber(this.text())

考虑使用表上的validateField代替:

public boolean validateField(fieldIdToCheck)
{
    boolean ret = super(fieldIdToCheck);
    switch (fieldIdToCheck)
    {
        case fieldNum(Table,Field):
            ret = MyValidationClass::validateNumber(table.Field) && ret;
            break;
    }
    return ret;
}

然后您不必在表单中进行更改,您可以使用自动组。

于 2012-03-21T17:08:38.877 回答