〜 オブジェクト 〜
選択アイテムが変更されたら処理

プログラムの基本処理です。
コンボボックスやリストボックスの表示項目を使って何か処理する時、
「選択」⇒「決定」と2段階に分ける場合は選択ボックス近辺にボタンを配置すればOKなのですが、
「選択と同時に決定」と1段階で処理する場合や、
例えば決定するのではなく選択項目を切り替えた時に項目の詳細説明を補足する場合等、
選択アイテムを変更した時点で処理をしたい時は、
ループ処理で前回チェックしたときと選択項目が変わっているかを監視し続けましょう。
	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	sdim name, 20
	objsize 80, 25
	pos 10,  10 : combox gyou, 100, "あ行\nか行\nさ行\nた行\nな行\nは行\nま行\nや行\nら行\nわ行"
	pos 10,  40 : listbox dan, 100, ""
	pos 10, 150 : button "戻る", *back
	pos 10, 180 : button "決定", *ok
	pos 200, 10 : mes "お名前は?"
	gyou.1 = -1 : dan.1 = -1
	current = 0

*main
	if gyou.0 ! gyou.1 : gosub *chg_gyou // 「行」が変更された
	if dan.0 ! dan.1 : gosub *chg_dan    // 「段」が変更された
	wait 5
	goto *main

*chg_gyou
	gyou.1 = gyou.0
	dan.0 = -1
	switch gyou
		case 0: char = "あ\nい\nう\nえ\nお" : swbreak
		case 1: char = "か\nき\nく\nけ\nこ" : swbreak
		case 2: char = "さ\nし\nす\nせ\nそ" : swbreak
		case 3: char = "た\nち\nつ\nて\nと" : swbreak
		case 4: char = "な\nに\nぬ\nね\nの" : swbreak
		case 5: char = "は\nひ\nふ\nへ\nほ" : swbreak
		case 6: char = "ま\nみ\nむ\nめ\nも" : swbreak
		case 7: char = "や\nゆ\nよ"         : swbreak
		case 8: char = "ら\nり\nる\nれ\nろ" : swbreak
		case 9: char = "わ\nを\nん"         : swbreak
	swend
	objprm 1, char // 「段」リストを現在の「行」の「段」に変更する
	return

*chg_dan
	if dan.0 < 0 | (current >= 9) : return
	notesel char
	noteget c, dan // 選択している「段」項目を取り出す
	name += c
	pos 200, 40 : mes name
	current++
	dan = -1, -1
	objprm 1, -1
	return

*back
	if current < 1 : return
	current--
	strmid name, name, 0, current * 2
	color 255, 255, 255 : boxf 200, 40 : color
	pos 200, 40 : mes name
	goto *main

*ok
	if current < 1 {
		dialog "名前を決めてください。", 1
	} else {
		dialog "コレでよろしいですか?", 2
		if stat = 6 : dialog "名前が決まりました。\nコレからアナタのことを " + name + " と呼びましょう。"
	}
	goto *main
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	sdim name, 20
	objsize 80, 25
	pos 10,  10 : combox gyou, 100, "あ行\nか行\nさ行\nた行\nな行\nは行\nま行\nや行\nら行\nわ行"
	pos 10,  40 : listbox dan, 100, ""
	pos 10, 150 : button gosub "戻る", *back
	pos 10, 180 : button gosub "決定", *ok
	pos 200, 10 : mes "お名前は?"
	gyou.1 = -1 : dan.1 = -1
	current = 0

*main
	if gyou.0 ! gyou.1 : gosub *chg_gyou // 「行」が変更された
	if dan.0 ! dan.1 : gosub *chg_dan    // 「段」が変更された
	wait 5
	goto *main

*chg_gyou
	gyou.1 = gyou.0
	dan.0 = -1
	switch gyou
		case 0: char = "あ\nい\nう\nえ\nお" : swbreak
		case 1: char = "か\nき\nく\nけ\nこ" : swbreak
		case 2: char = "さ\nし\nす\nせ\nそ" : swbreak
		case 3: char = "た\nち\nつ\nて\nと" : swbreak
		case 4: char = "な\nに\nぬ\nね\nの" : swbreak
		case 5: char = "は\nひ\nふ\nへ\nほ" : swbreak
		case 6: char = "ま\nみ\nむ\nめ\nも" : swbreak
		case 7: char = "や\nゆ\nよ"         : swbreak
		case 8: char = "ら\nり\nる\nれ\nろ" : swbreak
		case 9: char = "わ\nを\nん"         : swbreak
	swend
	objprm 1, char // 「段」リストを現在の「行」の「段」に変更する
	return

*chg_dan
	if dan.0 < 0 | current >= 9 : return
	notesel char
	noteget c, dan // 選択している「段」項目を取り出す
	name += c
	pos 200, 40 : mes name
	current++
	dan = -1, -1
	objprm 1, -1
	return

*back
	if current < 1 : return
	current--
	name = strmid(name, 0, current * 2)
	color 255, 255, 255 : boxf 200, 40 : color
	pos 200, 40 : mes name
	return

*ok
	if current < 1 {
		dialog "名前を決めてください。", 1
	} else {
		dialog "コレでよろしいですか?", 2
		if stat = 6 : dialog "名前が決まりました。\nコレからアナタのことを " + name + " と呼びましょう。"
	}
	return