Форми и преминаващи потребителски действия

Имам Form1, който извиква Form2. Въз основа на щракването „Ok“ върху Form2, трябва да стартирам някакъв код във Form1. Уведомявам базовия клас за изпълнение, че потребителят е натиснал ok чрез следния метод във form2. kanbanmultijob е екземплярът на клас KanbanMultiJob, който стои зад моя формуляр2. Така че съм поразен в момент, в който как да извлека или използвам функцията closedOk() във Form1, която обикновено връща bool стойност въз основа на 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, съхранявайте стойностите в контекста. Когато затваряте формуляра, извлечете вашия контекстен обект от form1 във form2. (Както се вижда по-горе)

person Kenny Saelen    schedule 31.07.2013

Като цяло не трябва да правите "работа" във формуляри, работата принадлежи на класове.

Затова използвайте Runbase Framework или за AX 1012 препоръчания SysOperation framework. Направете елемент от менюто за действие и го извикайте от вашия 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