2012-03-21 4 views
0

Я развиваюсь в Axe 2012. У меня есть элементы управления stringEdit в форме, которая содержит один и тот же тип информации и передает EDT. Я проверяю EDT в классе. Я вызываю класс из метода проверки в форме. Я использую тот же метод в форме для всех элементов управления stringEdit, которые нуждаются в этой проверке. Я пинаю метод проверки в форме из метода проверки каждого элемента управления.Передача объекта управления методу

Мой вопрос: как передать элемент управления, который был изменен (и нуждается в проверке) для метода проверки? Мой метод проверки на форме выглядит следующим образом:

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. Если я не могу передать «это» методу проверки, что тогда мне нужно пройти?

ответ

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; 
} 

Тогда вам не нужно вносить изменения в формы, и вы можете использовать автоматические группы.

+0

Thansk Jan. Когда я изначально передал «это» методу checkNumber из проверки на элемент управления, я получил ошибку «несовместимый с требуемым типом». Однако, когда я использовал код, вы предложили «ret = super() && element.checkNumber .....», то только тогда он узнал, что типы, где они одинаковые. Он не распознал «этот» объект как тот же тип, но теперь он это делает. Интересно, имеет ли супер-вызов до вызова метода проверки какое-либо отношение к нему? Во всяком случае, спасибо за ваш ответ. – Celeste

+0

Документация не указана явно, но часто super() выполняет реальную работу. Документация: http://msdn.microsoft.com/en-us/library/aa876155(v=ax.10).aspx –

 Смежные вопросы

  • Нет связанных вопросов^_^