ラジオボタンって一度クリックすると消せないの?
[問題の説明]
Notesクライアント標準の「ラジオボタン」は、ユーザの操作だけで“未選択”状態に戻せない仕様です。
Notes/Designer のヘルプでも“各選択肢をボタンで表示し、1つだけ選択できる”と定義されています。
色々なブログを探してみましたが、この仕様消せるラジオボタンに関する記述は見当たりませんでした。
[具体例]
例えば、以下のようなラジオボタンがあったとします。
〇男性 〇女性 〇その他
この中で「男性」を選択した後に、その選択を解除したい場合、ラジオボタンではそれができません。
一度選択したラジオボタンをもう一度クリックしても、選択は解除されず、常にどれか一つが選択された状態になります。
[解決策]
コミュニティでは、未選択に戻したいなら“None(なし)”等を選択肢として用意するか、ラジオボタンの選択を削除するアクションボタンを用意するのが一般的とされています。
例えば、以下のように選択肢を追加します。
〇男性 〇女性 〇その他 〇なし
これにより、ユーザは「なし」を選択することで、実質的に未選択状態に戻すことができます。
えっ~、未選択じゃなくて [なし] を選択してるじゃん
というわけで、ラジオボタンの選択を削除するアクションボタンを用意するのも格好悪いので、同じ選択肢を選ぶと選択が解除される方法をご紹介します。
この方法は、Notes6.5 辺りで思いついて実装している方法です。
当方の環境
- Windows11 home
- NotesDesigner 11.0.1
結構古いNotesなので、実装する場合はご自身の環境でテストをしてからリリースしてください。
昔からある式言語の組み合わせなので、非互換は無いと思いますが...
[設計要素]
フォームに作るものは以下の通り
- ラジオボタンのフィールド
- 表示用の計算結果フィールド(ラジオボタンの内容を引き継ぐ)
- ホットスポットアクション
実際に作ったものはこんな感じになります。
ラジオボタンのフィールド「rb001」

表示用の計算結果フィールド「rb001_ctrl」

フィールド値として「rb001」を引き継ぐ設定とする
ここから重要なホットスポットアクションの作り方です。
ラジオボタンのフィールドを選択して

作成メニューから「ホットスポット」→「アクション」を選択します

作成できると、ラジオボタンフィールドにホットスポットアクションがぴったり重なります

緑の枠がついているのが分かります。
ここで、アクションの式に以下を設定します。
FIELD rb001:=@If(rb001=rb001_ctrl;"";rb001);
@Command([ViewRefreshFields]);
@All
[動作の仕組み]
1.ラジオボタンのフィールドをクリックすると、選択肢のどれかが選択されます
2.この時ホットスポットのアクションが実行されます
3.rb001の内容と表示用の計算結果の値を比較し、不一致なら選択した値を、一致なら””を設定することでラジオボタンフィールドをクリアします
できたフォームを保存して、動作確認をしてください。
ラジオボタンで選択した内容が、即時に表示用の計算結果に反映されます。
ラジオボタンで同じ選択肢をクリックすると、ラジオボタンが解除され、表示用の計算結果もクリアされます。
実際リリースする場合は、表示用の計算結果は非表示にするとか、ホットスポットの周囲に境界線を表示を解除するなど見栄え良く仕上げてください。
カーソルキーで選択肢を移動し、スペースキーで選択する操作は、ホットスポットが機能しないようなので、注意です。
Notes11以上でも動作したという情報がありましたら、コメントいただけると幸いです。

