将控制对象传递给方法

时间:2012-03-21 08:07:16

标签: axapta ax dynamics-ax-2012

我正在使用Axe 2012开发。我在表单上有stringEdit控件,它包含相同类型的信息并共享EDT。我在课堂上对EDT进行了验证。 我从表单上的check方法调用该类。我在窗体上对所有需要此验证的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方法,那么我应该通过什么呢?

1 个答案:

答案 0 :(得分: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;
}

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

相关问题