Формы и передача действий пользователя

У меня есть Form1, которая вызывает Form2. Основываясь на нажатии «ОК» на Form2, мне нужно запустить некоторый код в Form1. Я уведомляю базовый класс запуска о том, что пользователь нажал «ОК», с помощью следующего метода в форме2. kanbanmultijob — это экземпляр класса KanbanMultiJob, который стоит за моей формой2. Итак, я поражен тем, как мне получить или использовать функцию closedOk() в Form1 , которая обычно возвращает логическое значение на основе closeOk()?

public void closeOk()
{
    if (kanbanMultiJob.checkCloseDialog())
    {
         super();
    }
}

person user971764    schedule 25.07.2013    source источник


Ответы (3)


В form1 вы вызывали form2 вот так;

form2.run();
form2.wait();

Затем вам нужно проверить form2 на closedOk();

if(form2.closedOk())
{
  //Do stuff...
}
person AnthonyBlake    schedule 31.07.2013

Что я всегда делаю, так это создаю объект «контекст», в котором я храню параметры, которые мне нужно разбрасывать.

При запуске вещей в форме 1 сохраняйте значения в контексте. При закрытии формы извлеките объект контекста из формы1 в форму2. (Как видно выше)

person Kenny Saelen    schedule 31.07.2013

Вообще не стоит делать "работу" в формах, работа относится к классам.

Поэтому используйте Runbase Framework или для AX 1012 рекомендуемый инфраструктура SysOperation. Создайте пункт меню действий и вызовите его из своего Form1. Form2 — это диалог вашего класса фреймворка.

Я не фанат фреймворка SysOperation, поэтому в терминах Runbase:

public Object dialog()
{
    return Dialog::newFormnameRunbase(formstr(Form2), this);
}

Затем сделайте все, что вам нужно сделать в методе run.

См. форму и класс tutorial_RunbaseForm, чтобы увидеть, как это работает.

person Jan B. Kjeldsen    schedule 09.08.2013
comment
Спасибо за ваш ответ - person user971764; 15.11.2013