/*---------------------------------------------------------------------*//** ノード追加 **//*---------------------------------------------------------------------*/ bool Menu::addMenuTreeNode(MenuTreeNode* mtnodePos, MenuTreeNode* mtnodeAdd, bool isChild) { TreeNode<MenuTreeNode>* tnodePos = findTreeNodeFromMenuTreeNode(mtnodePos, _tree->getRoot()); if(tnodePos == 0L) { return false; } if(isChild) { tnodePos->addChild(mtnodeAdd); } else { tnodePos->addSibling(mtnodeAdd); } return true; }
/*---------------------------------------------------------------------*//** ノード配列から作成 単純な Function 集合メニューを作成する ○ルートノード ┣●親ノード ┃┗●子ノード(Fuction) ┣●親ノード ┃┗●子ノード(Fuction) ・ ・ ・ ┗●親ノード ┗●子ノード(Fuction) ↑このような形 また、 mtnodeParentArrayEntr = NULL, mtnodeChildArrayEntr = NULL, numArray = 0 でこの create 実行した後、 getMenuTreeRootNode でルートノードを得て、 addMenuTreeNode で要素となるノードを追加する方法もある @param name 名前 @param mtnodeParentArrayEntr 親ノード配列(メモリの解放処理は Menu クラス内で行う) @param mtnodeChildArrayEntr 子ノード配列(メモリの解放処理は Menu クラス内で行う) # 親ノード配列と同配列数である必要がある # 全ての子は Function ノードである必要がある @param numArray 配列長 @param functblRef ファンクションテーブルデータ @param objParam パラメータオブジェクト @retval true 成功 @retval false 失敗 **//*---------------------------------------------------------------------*/ bool Menu::create(const CStringBase* name, MenuTreeNode** mtnodeParentArrayEntr, MenuTreeNode** mtnodeChildArrayEntr, int numArray, MenuFuncTable* functblRef, MenuPanelFactory* pnlfctryRef, void* objCreateParam) { // ツリーを作成する _tree = new Tree<MenuTreeNode>(true); // 表示対象においての根ノードを作る MenuTreeNode* mtnodeRoot = new MenuTreeNode(); if(!mtnodeRoot->create(name, false, false, false, 0, 0)) { return false; } // ノードを作成する TreeNode<MenuTreeNode>* tnode = _tree->addRootNode(); tnode = tnode->addChild(mtnodeRoot); for(int i = 0; i < numArray; i++) { // 表示される親ノードの追加 if(i == 0) { tnode = tnode->addChild(mtnodeParentArrayEntr[i]); } else { tnode = tnode->addSibling(mtnodeParentArrayEntr[i]); } // Fuction を提供する子ノードを追加 tnode->addChild(mtnodeChildArrayEntr[i]); } // ファンクションテーブルを保存する _functblRef = functblRef; // パネルファクトリを保存する _pnlfctryRef = pnlfctryRef; // パラメータオブジェクトを保存する _objCreateParamRef = objCreateParam; // メモリ管理を委譲された配列を削除 delete[] mtnodeParentArrayEntr; delete[] mtnodeChildArrayEntr; return true; }