Использование переменной, созданной в другом расширении класса - PullRequest
3 голосов
/ 07 февраля 2020

Мне нужно передать логическую переменную из одного класса в другой. Как я могу заархивировать это? У меня есть 2 класса, один создать и установить логическое значение, а другой класс должен получить это значение. Это все потому, что мне нужно запустить код на истинное значение для другой формы. Как мне объявить новый класс B здесь? Это не позволяет мне использовать мой класс ProdParmReportFinishedWG_Extension.

[ExtensionOf(formStr(ProdParmReportFinished))]
final class ProdParmReportFinishedWG_Extension
{

public boolean TestB;


public boolean parmIsTest(boolean _test = TestB)
{
    TestB = _test;
    return TestB;
}

public void run()
{
    next run();


    if(TestB)
    {
        Ok.enabled(false);
        Info("@SRM:SRM00049");
    }
    else
    {
        Info('im false');
    }
 }

 }


[ExtensionOf(formdatasourcestr(ProdTableListPage, ProdTable))]
final class ProdParmReportFinishedActiveWG_Extension
{
public boolean Test;

    public int active()
{
    int ret;
    next Active();
    ProdTable tableBuffer = this.cursor();
    ProdTable prodtable;
    ProdParmReportFinishedWG_Extension ClassB = new ProdParmReportFinishedWG_Extension();


    ;

    if(tableBuffer.ProdId == tableBuffer.CollectRefProdId
             && tableBuffer.ProdStatus != ProdStatus::ReportedFinished)
    {
               select firstonly RecId,ProdId from ProdTable where
                  ProdTable.CollectRefProdId == tableBuffer.ProdId
                  && ProdTable.Prodstatus != ProdStatus::ReportedFinished
                  && tableBuffer.RecId != prodtable.RecId;
                  {
                      Test = true;
            ClassB.parmIsTest(Test);
            ClassB.Run();

                  }
            }
        else
        {
            Global::info(strFmt("%1 , %2, %3, %4",
            tableBuffer.prodid, tableBuffer.CollectRefProdId, tableBuffer.InventRefType, tableBuffer.ProdStatus));
        }

    return ret;
}

}

1 Ответ

5 голосов
/ 07 февраля 2020

Есть несколько способов, вы можете попробовать что-то вроде этого:

Пример, в классе A определить и установить логическую переменную, в классе B передать логическое значение переменная и используйте ваши логики c.

Пример кода:

Класс A

class A
{
    boolean Test;
}

private void Run()
{
    B ClassB = new B();

    ;

    //Your logic to set boolean variable
    Test = true;
    ClassB.parmIsTest(Test);
    ClassB.Run();
}

Класс B

class B
{
    boolean TestB;
}

public boolean parmIsTest(boolean _test = TestB)
{
    TestB = _test;
    return TestB;
}

public void Run()
{
    //Do your logic
    if(TestB)
    {
        //Your code...
    }
    else
    {
        //Your code...
    }
    //Do your logic END
}
...