簡易配列からメニューを構築する¶
概要¶
動的に要素数が変化する配列からメニューを構築し、選択判定を行う実装方法を説明します。
コード例¶
初期化関数¶
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の処理
}
}
}
}
実装手順¶
OnFirstBootおよびOnBootイベントで初期化関数MyTestMenuItemを呼び出すOpenMenu関数内にメニュー選択肢タグを埋め込むOnChoiceSelectで選択されたIDを判定し、対応する配列を処理するforループで配列の各要素を動的に処理する
説明¶
この実装パターンは、要素数が動的に変化する配列を扱う場合に適しています。カンマ区切り文字列を配列として扱い、ARRAYSIZEで要素数を取得してforループで繰り返し処理することで、配列の要素数に依存しない汎用的なメニュー構築が可能です。
関連項目¶
- Tips/配列の要素数を取得
- Tips/選択肢をいきなり独立した関数で書く
- マニュアル/関数/ARRAYSIZE
- マニュアル/関数/SPLIT