我正在使用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方法,那么我应该通过什么呢?
答案 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;
}
然后您不必在表单中进行更改,也可以使用自动组。