gotFocus и методы ввода в поле формы не вызывают - PullRequest
6 голосов
/ 15 февраля 2012

В моей форме заказа на продажу (SalesTable) есть несколько полей, которые необходимо отключить, если для другого поля задано определенное значение. Для этого я переопределил методы enter и gotFocus в поле формы (я сделал оба, чтобы проверить это). Код компилируется и не имеет проблем.

Моя проблема в том, что ни один из этих переопределенных методов не вызывается, когда я щелкаю поле в соответствующем столбце сетки. Что может привести к тому, что методы enter и gotFocus не будут вызываться в поле сетки?

1 Ответ

8 голосов
/ 15 февраля 2012

Не используйте методы gotFocus и enter.

Создайте метод источника данных для внесения изменений:

void setAllowEdit()
{ 
    salesTable_ds.object(fieldnum(SalesTable, Name)).allowEdit(salesTable.SalesType == SalesType::Journal);
}

Вызовите метод из activeМетод:

public int active()
{
    int ret = super();
    ...
    this.setAllowEdit()
    return ret;
}

Вызов метода из поля источника данных (в данном случае поле SalesType):

public void modified()
{
    super()
    salesTable_ds.setAllowEdit()
    element.changeType(); // standard code
}
...