Несвязанный контроль X ++

Я новичок в X ++, и я хочу поставить несвязанный флажок на вкладке в форме заголовка продаж (SalesTable). Когда кнопка настройки строки нажата в нижней половине формы для строки продаж, мне нужно, чтобы код в этом другом классе проверял состояние включения / выключения несвязанного элемента управления в форме SalesTable и что-то делал. Мне действительно не нужна база данных для записи статуса.

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

Как мне сослаться на несвязанный элемент управления в форме SalesTable из другого класса и правильно ли это?


person Kevin    schedule 22.06.2011    source источник


Ответы (1)


Вы не ссылаетесь на несвязанный элемент управления из другого класса, это неправильный подход.

Скорее сообщайте другому классу об изменении несвязанного элемента управления. Вы делаете это в модифицированном методе элемента управления флажком:

boolean modified()
{
    boolean ret = super();
    ;
    salesTableForm.parmSpecialAction(this.value());
    return ret;
}

В этом случае SalesTableForm информируется об изменении флажка путем вызова метода parmSpecialAction (имя выбрано произвольно).

Другой путь (вы указали в вопросе) - сообщить классу о существовании элемента управления и позволить классу напрямую вызывать control.value(). Однако это обычно делает форму и класс тесно связанными, а это не то, что нам нужно. Элементы управления принадлежат той форме, в которой они были рождены, и их не следует передавать.

По иронии судьбы метод SalesTableForm.enableUpdateJournalButtons нарушает это правило, поскольку он принимает элементы управления кнопками в качестве параметров. Правильный подход - вычислить (и кэшировать) значения enableWathever в функциях получения, а затем позволить форме вызывать методы получения и включать или отключать собственные кнопки.

person Jan B. Kjeldsen    schedule 22.06.2011