2017-05-17 17 views
0

this Codeに基づいて、各ユーザーにあらかじめ定義されたお気に入りのセットを提供するための関数の基本を構築しました。既存の表示メニュー項目をユーザーのお気に入りに追加

ただし、この特定のコードは、各ユーザーのお気に入りごとに新しいAOT要素を作成します。メニュー項目を手作業で設定し、それらをスクリプトと共に単純に配布したいと思います。

どのようにして(X ++で)既存の\Menu Items\Displayノードへの参照を取得し、それをMenuクラスのオブジェクトに追加できますか?これは私がこれまで持っているものである

MyFavorites obj = new MyFavorites(); 
Menu menuNode; 

MenuFunction mf; 
TreeNode treeNode; 

info("Applying favorites..."); 

menuNode = obj.getOrCreateRoot(); 
if (menuNode == null) return; 

treeNode = menuNode.AOTfindChild("Administrator"); 
if (!treeNode) 
{ 
    menuNode.addSubmenu("Administrator"); 
    treeNode = menuNode.AOTfindChild("Administrator"); 
    info("Created submenu"); 
} 
else info("Found submenu"); 

menuNode = treeNode; 

// Here I need help. I don't want to recreate all these AOT nodes every time the script is run. 
mf = new MenuFunction("Fav_AllUsers",MenuItemType::Display); 
mf.AOTsave(); 

menuNode.addMenuitem(mf); 

答えて

2

は、ここで私はあなたのお気に入りに追加している「SalesTable」メニューを書いた迅速な仕事です。

Also here's a link that shows how to copy favorites between users

注意すべき事は、あなたが望むものを達成するためにオブジェクトUserMenuListMenu、またはそのテーブルのいずれかを使用する必要がありますので、データのブロブを格納するテーブルSysPersonalization、です。これはあなたがしかし始まったはずです。

static void Job4(Args _args) 
{ 
    TreeNode    treeNode; 
    TreeNode    menuToAdd = TreeNode::findNode(@"\Menu Items\Display\SalesTable"); 
    TreeNodeIterator  iterator; 
    UserMenuList   userMenu; 
    Menu     menuNode; 


    treeNode = infolog.userNode(); 
    iterator = treeNode.AOTiterator(); 
    treeNode = iterator.next(); 
    if (treeNode) 
    { 
     userMenu = treeNode; 

     // find 'My Favorites' user menu; 
     treeNode = userMenu.AOTfindChild("@SYS95713"); 

     // Note menuNode is a different object than userMenu 
     menuNode = treeNode; 

     menuNode.addMenuitem(menuToAdd); 
    }  
} 
関連する問題