ページビューの合計

ラベル Form の投稿を表示しています。 すべての投稿を表示
ラベル Form の投稿を表示しています。 すべての投稿を表示

2018年7月30日月曜日

#Notes #Form を個人ごとに切り替えたい

This time I try to change the Form to be displayed for each user by using Subform and notes.ini.

みなさま、こんにちは!!
神戸は日曜早朝に逆走台風が真上を通過して行きました。
幸いにも治水対策がそれなりに施されているため、先日以上に大きな影響はありませんでしたが、被害を受けられた皆様の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対応されることに期待です!!