menu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
menu etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Mart 2021 Salı

D365 F&O - Form kontrolüne sağ mouse popup menü eklemek

 Bu konuda hem AX 2009 hem AX 2012'de çalışan bir örnek paylaşımı yapmıştım 2015 yılında. 365'de yapı biraz değişmiş, bu sebeple artık o kod çalışmıyor. Microsoft öncesi-sonrası diye bu konuyu anlatan bir paylaşım yapmış, ben de oradan yararlandım. Daha önce tek metodda halledilen iş iki metoda çıkmış.

 Aşağıdaki constantları class declaration'a tanımlıyoruz. Constant kullanımı tabii ki zorunlu değil ama okunurluğu arttırıyor:

public const int listCredit = 1;
public const int listJournal = 2;

Bu metodu popup çalışmasını istediğimiz kontrole koyuyoruz. Bu metod popup menüyü çalıştırıyor. Aşağıdaki örnekte iki popup bar var:

        public str getContextMenuOptions()
        {
            str ret;
            ContextMenu menu = new ContextMenu();
            List menuOptions = new List(Types::Class);
            ContextMenuOption option;
            
            option = ContextMenuOption::Create("Credit number", listCredit);
            menuOptions.addEnd(option);

            option = ContextMenuOption::Create("Journal number", listJournal);
            menuOptions.addEnd(option);

            menu.ContextMenuOptions(menuOptions);
            return menu.Serialize();
        }

 


 Bu metod da popup menüde seçim yapılınca çalışıyor:

 public void selectedMenuOption(int selectedOption)
        {
            switch (selectedOption)
            {
                case -1:
                    break;
                case listCredit:

                    info("Bar 1 seçildi!..");
                    break;
                case listJournal:
                    info("Bar 2 seçildi!..");
                    break;
            }
        }


Benim yaptığım denemelerde popup menü bazen görünmedi. Böyle bir duruma 2012 veya 2009'da hiç rastlamamıştım. Sebebini bulamadım. Popup menünün görünmediği durumlarda debug yaptığımda getContextMenuOptions metodunun tetiklenmediğini gördüm.

12 Ekim 2015 Pazartesi

AXAPTA - Form kontrolüne sağ mouse popup menübar eklemek

Bunu kontrolün showContextMenu metodunu düzenleyerek yapabilirsiniz:

public int showContextMenu(int _menuHandle)
{
    int                 ret;
    int                bar1,bar2;
    PopupMenu           pMenu = PopupMenu::create(_menuHandle,element.hWnd());
    ;
        bar1 = pMenu.insertItem("Seçenek 1");
        bar2 = pMenu.insertItem("Seçenek 2");

    ret = pMenu.draw();
    switch (ret)
    {
    case -1 :
        break;
    case bar1:

...
    case bar2:
...
    default :
        break;
    }
    return ret;

}