神戸は日曜早朝に逆走台風が真上を通過して行きました。
幸いにも治水対策がそれなりに施されているため、先日以上に大きな影響はありませんでしたが、被害を受けられた皆様の1日も早く日常生活に戻ることができますようお祈り申し上げます。
さて今回はWEBではよくある画面表示を個人ごとに切り替えるという機能をNotesのFormでできるか試してみましたので、報告致します。
あらかじめお断りなのですが、もっと簡単に組み込むことができるような気がするのですが、まずは私なりのやり方としてご承知ください。
そもそもWEBではCSSを利用することでテーマカラーの変更は簡単に行うことが可能です。
残念ながらNotes Formにはそのような機能が実装されておりません。
・・・もちろんXPagesなら適用できるのですが・・・
ということで、今回はサブフォームと環境設定文書の組み合わせで挑戦しようと思います。
それでは早速、サブフォームAを作成します。
今回は以下のような表を作成してみました。
続いてサブフォームBです。
わかりやすいように、表のセルの色を変更してあります。
続いてフォームを作成します。
フォームにサブフォームを埋め込むのですが、その際に「式の定義によりサブフォームを挿入」にチェックし、[OK]します。
※このオプションを選択すると、サブフォームそのものは選べなくなります。
以下のように、<サブフォームの計算結果>がフォームに貼り付きました。
それではサブフォームを表示させる式を記述します。
今回はnotes.iniにフォームの設定を行いますが、初期時にはnotes.iniにパラメーターがありませんので、その場合はサブフォームAを呼び出すように設定します。
以下の式を設定してみました。
SUBF:=@Environment("TEST_SUB");
@If(SUBF="";"subA";SUBF)
notes.iniに「TEST_SUB」という環境変数がない場合は、サブフォームAを。それ以外は環境変数の値で設定されたサブフォームを呼び出すというものです。
続いてビューに環境変数を切り替えるアクションボタンを作ります。
今回はアクションボタンとして「テーマカラー変更」とし、サブアクションとして「青」「赤」を選べるように設定します。
式ですが、"青"・・・サブフォームBを設定
@SetEnvironment("TEST_SUB"; "subB")
"赤"・・・サブフォームAを設定
@SetEnvironment("TEST_SUB"; "subA")
まずはnotes.iniに正しく書かれるか、試してみます。
初期時はもちろんnotes.iniには [TEST_SUB]は存在していません。
まずはその状態で新規作成を開いてみます。
最初に設定したように、notes.iniに[TEST_SUB]が存在しない場合は、サブフォームAを表示させておりますので、以下のようにサブフォームAが表示されました。
それではビューに戻り、「青」(サブフォームB)をクリックしてみます。
まずはnotes.iniを確認してみますと、最下行に以下設定が登録されておりました。
正しく"subB"が設定されたことが確認できました。
この状態でフォームを新規作成で開くと、以下の画面が表示されました。
正しくサブフォームBが呼び出されました。
念のためビューに戻り、「赤」(サブフォームA)に戻し、notes.iniを確認してみます。
notes.iniは正しく"subA"に変更されました。
フォームを開くと、当然サブフォームAが呼び出されます。
以上、甚だ簡単ではありますが、例えばこの機能を用いることで、多言語対応のアプリケーションに発展させることができます。
例)
サブフォームA・・・英語
サブフォームB・・・日本語
サブフォームC・・・フランス語
・・・
初期ビューに[Language]というアクションボタンを配置し、サブアクションで各言語を並べることで、利用者のnotes.iniに言語設定が行われることになります。
次回以降、利用者は常に自分の言語でフォームが利用できるというものです。
これだけの機能が@関数だけで実現できるというNotesの素晴らしさ。
今後、Domino10や11でNotesフォームやビューがCSS対応されることに期待です!!