0

私はAxe2012で開発しています。同じタイプの情報を保持し、EDTを共有するフォームにstringEditコントロールがあります。クラスでEDTの検証を行います。フォームのcheckメソッドからクラスを呼び出します。この検証を必要とするすべてのstringEditコントロールに対して、フォームで同じメソッドを使用します。各コントロールの検証メソッドからフォームのチェックメソッドを開始します。

私の質問:変更された(そして検証が必要な)コントロールを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メソッドに渡すことです。「これ」をチェックメソッドに渡すことができない場合、何を渡す必要がありますか?

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 に答える