Top/Tips/簡易配列からメニューを構築する
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | 履歴 ]

*簡易配列からメニューを構築する [#b57ae060]

動的に要素数が変化する配列からメニューを構築し選択判定します。

1)初期化用の関数を用意します。

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

2)OnFirstBootおよびOnBootでMyTestMenuItemを呼びます。

3)既存の関数内に処理を埋め込みます。

 OpenMenu
 {
 	"\0\s[0]/
 		:
 		:
 	\q[メニュー1,TESTMENU1]\n/
 	\q[メニュー2,TESTMENU2]\n/
 		:
 		:
 	\e"
 }
 
 OnChoiceSelect
 {
 	//---- メニューアイテムIDを抽出する
 	_menuitemid = 0	// ずっと下でこの変数を参照できるように、定義だけ行っておく。
 	if STRSTR(reference0,"TESTMENUITEM1_",0) == 0
 	{
 		_menuitemid = TOINT(ERASE(reference0,0,STRLEN("TESTMENUITEM1_")))
 		reference0 = "TESTMENUITEM1"
 	}
 	if STRSTR(reference0,"TESTMENUITEM2_",0) == 0
 	{
 		_menuitemid = TOINT(ERASE(reference0,0,STRLEN("TESTMENUITEM2_")))
 		reference0 = "TESTMENUITEM2"
 	}
 
 	//---- メインメニュー
 	case reference0
 	{
 			:
 			:
 		when "TESTMENU1"
 		{
 			//---- メニュー1表示
 			_list = ""
 			for _i = 0 ; testmenuitem1[_i] != "" ; _i++
 			{
 				_list += "\q[%(testmenuitem1[_i]),TESTMENUITEM1_%(_i)]\n"
 			}
 			"\0\s[0]\b[2]%(_list)\e"
 		}
 		when "TESTMENU2"
 		{
 			//---- メニュー2表示
 			_list = ""
 			for _i = 0 ; testmenuitem2[_i] != "" ; _i++
 			{
 				_list += "\q[%(testmenuitem2[_i]),TESTMENUITEM2_%(_i)]\n"
 			}
 			"\0\s[0]\b[2]%(_list)\e"
 		}
 		when "TESTMENUITEM1"
 		{
 			//---- とりあえずはアイテム文字列を喋るだけ
 			"\0\s[0]%(testmenuitem1[_menuitemid])が選択されました。\e"
 		}
 		when "TESTMENUITEM2"
 		{
 			//---- とりあえずはアイテム文字列を喋るだけ
 			"\0\s[0]%(testmenuitem2[_menuitemid])が選択されました。\e"
 		}
 			:
 			:
 	}
 }