コンテンツにスキップ

選択肢

行頭が _ の行は、選択肢になります。さくらスクリプトの \q[ラベル,ID] に変換されます。

_ラベル
_ラベル【タブ】ID
_ラベル【タブ】ID【タブ】引数1【タブ】引数2…
書き方 変換
_ラベル ラベルと ID を同じ文字列にする
_ラベル【タブ】ID ラベルと ID を別にする
_ラベル【タブ】ID【タブ】引数… \q[ラベル,ID,引数1,引数2…] にする(Mc201-11以降。引数を渡す)

ラベルと ID、引数の () は展開されます。タブがいくつ続いても 1 つの区切りです。_ だけで文字列がない行は無視されます。

*質問
好きな季節は?
_春【タブ】春の話
_夏【タブ】夏の話

*春の話
春はあたたかいですね。

選択されたとき

選択肢が選ばれると、ベースウェアから OnChoiceSelect が届きます(Reference0 が ID)。

  • 辞書に *OnChoiceSelect があれば、それが実行されます。
  • なければ、ID と同じ名前の文が実行されます。

ID が On で始まる場合や、http:// https:// script: で始まる場合は、ベースウェアがイベントの呼び出し・URL・スクリプトとして処理するので、OnChoiceSelect を経由しません。

引数を渡す

ID の後ろにタブで区切って書いたものは、\q の 3 番目以降の引数になります(Mc201-11以降)。選ばれると、ID と同じ名前の文が実行され、引数は call と同じく (A0) (A1) … で受け取れます。

*止めるタイマーを選ぶ
:どれを止める?
_1番【タブ】タイマーを止める【タブ】1
_2番【タブ】タイマーを止める【タブ】2

*タイマーを止める
$キッチンタイマー(A0)タイマ=0
:(A0)番を止めたよ。
  • 引数付きの選択肢では、ベースウェアから OnChoiceSelectEx(Reference1 が ID、Reference2 以降が引数)が届きます。辞書に *OnChoiceSelectEx も *OnChoiceSelect もなければ、里々がこれを受けて ID の文を実行します。
  • 辞書に *OnChoiceSelectEx か *OnChoiceSelect があるときは、これまでどおりそちらに任せます(引数は Reference から読みます)。
  • ID の文が何も返さなかったときも、続けて届く OnChoiceSelect で同じ文がもう一度実行されることはありません。
  • 引数に , や ] を入れたいときは、SSP の書き方に従って " で囲みます。
  • 引数のない選択肢は、これまでどおり OnChoiceSelect で処理されます。

選択の記録

里々は、選択肢の ID にラベルと番号を付けて、選ばれたときに次の変数へ記録します。

変数 内容
選択ID 選ばれた選択肢の ID
選択ラベル 選ばれた選択肢のラベル
選択番号 その選択肢が、応答の中で何番目の選択肢だったか(1 から)

OnChoiceSelect OnChoiceSelectEx OnChoiceEnter のいずれでも記録されます。

前後に文字列を入れる

$選択肢開始時 と $選択肢終了時 で、選択肢の前後に文字列を挿入できます。終了時の既定は \n です。