コンテンツにスキップ

簡易配列からメニューを構築する

概要

動的に要素数が変化する配列からメニューを構築し、選択判定を行う実装方法を説明します。

コード例

初期化関数

MyTestMenuItem {
    testmenuitem1 = "てすと1,てすと2,てすと3"
    testmenuitem2 = "テスト1,テスト2,テスト3,テスト4,テスト5"
}

OpenMenu関数内でのメニュー表示

OpenMenu {
    // ...(通常のメニュー項目)
    "\q[メニュー1,TESTMENU1]\n"
    "\q[メニュー2,TESTMENU2]\n"
    // ...
}

OnChoiceSelectでの選択判定

STRSTRとERASE関数を組み合わせてメニュー項目IDを抽出し、case文で処理を分岐します。

OnChoiceSelect {
    if STRSTR(reference0, "TESTMENU") >= 0 {
        _id = ERASE(reference0, "TESTMENU")
        case _id {
            when "1" {
                // testmenuitem1の処理
                _items = SPLIT(testmenuitem1, ",")
                _i = 0
                for _i < ARRAYSIZE(_items) {
                    // 各要素を処理
                    _i++
                }
            }
            when "2" {
                // testmenuitem2の処理
            }
        }
    }
}

実装手順

  1. OnFirstBootおよびOnBootイベントで初期化関数MyTestMenuItemを呼び出す
  2. OpenMenu関数内にメニュー選択肢タグを埋め込む
  3. OnChoiceSelectで選択されたIDを判定し、対応する配列を処理する
  4. forループで配列の各要素を動的に処理する

説明

この実装パターンは、要素数が動的に変化する配列を扱う場合に適しています。カンマ区切り文字列を配列として扱い、ARRAYSIZEで要素数を取得してforループで繰り返し処理することで、配列の要素数に依存しない汎用的なメニュー構築が可能です。

関連項目

  • Tips/配列の要素数を取得
  • Tips/選択肢をいきなり独立した関数で書く
  • マニュアル/関数/ARRAYSIZE
  • マニュアル/関数/SPLIT