Ağu 28, 2014 - Formlar (Forms), Menu Item, X++    Yorum Yok

Kod ile Form Açmak (Form Çağırma)

İhtiyaca göre kullanılan classlardan veye formlar üzerinden başka formları açmak(çağırmak) gerekir. Bu işlem genelde form üzerindeki MenuItem butonlarıyla yapılır ancak bazı durumlarda bu ihtiyacı karşılamaz ve kod içerinden istenilen formu çağırmak gerekir. Bu gibi ihtiyaçları X++ da menuItemlar yardımıyla yada formRun ile form isimini kullanarak yapabiliriz. Aşağıda bu iki yöntemide açıklayacağım.

İlk olarak menuItem ile form çağırma aşağıdaki gibidir. Burada dikkat edilecek nokta menuItemDisplayStr kısmına mutlaka Display olarak bulunan bir menuItem ismi yazılmalıdır. Args diğer çağrılacak forma parametre, tablo, datasource gibi değerler gönderilebilir.

static void Erkn_FormCallMenuItem(Args _args)
{
    str             menuItem;
    MenuFunction    menuFunction;
    Args            args = new Args();
    SalesTable      vSalesTable;
    ;

    vSalesTable = SalesTable::find("MST-000007");
    //menuItem = menuItemDisplayStr(Kullanılacak MenuItem adı);
    menuItem = menuItemDisplayStr(SalesTable);

    menuFunction = new MenuFunction(menuItem, MenuItemType::Display);
    args.record(vSalesTable); //Açılacak forma args ile tablo kaydı,datasource veya parm değer gönderilebilir.

    menuFunction.run(args);
}

*Eğer bir raporu çağıracaksak “menuItemDisplayStr” yerine “menuItemOutputStr” yazılır. “MenuItemType::Display” yerine “MenuItemType::Output” kullanılır. Ancak Ax 2012 de beyaz sayfa diye tabir edilen raporların kullanımı azaldığı için report kullanım ihtiyacı azalmıştır.

FormRun ile koddan form çağırma ise aşağıdaki gibidir.

static void Erkn_FormCallFormRun(Args _args)
{
    FormRun         formRun;
    Args            args = new Args();
    SalesTable      vSalesTable;

    vSalesTable = SalesTable::find("MST-000007");

    //args.name(formStr(Formun Adı));
    args.name(formStr(SalesTable));
    args.record(vSalesTable); //Açılacak forma args ile tablo kaydı,datasource veya parm değer gönderilebilir.

    formRun = classfactory.formRunClass(args);
    formRun.init();
    formRun.run();
    formRun.wait();
    //İstenirse Formun kapatılmasını bekleyebilirsiniz.
    //Böylece form kapatıldıktan sonra işlemlerinize devam edebilirsiniz
    if (formRun.closedOk())
        info("Form ok ile kapatıldı");
    else
        info("Form cancel ile kapatıldı");
}

Erkan OĞUZ

Önceki Konu->

<- Sonraki Konu

Benzer yazılar

Yorum Yazın...