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

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

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

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"
		}
			:
			:
	}
}