This time, I tried to set the color of the FORM for each individual, so I introduce it.
みなさま、こんにちは!!
ついに2019年も半分が過ぎました。
巷ではオリンピックチケットがあたったとか、あたらなかったとか・・・
ちなみに筆者は現時点では申し込まず、蚊帳の外でございます。
さてさて、7月ということで我々が大きく関与しておりましたICS部門ですが、ついに大きなプレスリリースが行われました。
ということで、2年連続で任命頂きましたIBMチャンピオンの称号も残すところあと半年ということになりました。
HCL社でも引き続きそのような任命制度がとの噂もありますので、そのような場合はなんとかトライしたいものです。
本題に入る前にまずは告知を・・・
Notes/Domino Solution 2019 が開催されることになりました。
東京・大阪・名古屋・広島・博多の5都市を廻る一大イベントになります。
多くのIBMチャンピオンが各地に参上し、・・・以降、ヒ・ミ・ツ・・・
ぜひ近隣開催へご参加ください!!
前置きが長くなりましたが、本題です。
昨年行われました
テクてくLotus技術者夜会 での今後の製品への要望セッションの中で、私含めたくさんの方が要望されたものに、
ノーツアプリケーションのCSS対応 というものがございました。
・・・このサイトはどうなるのでしょう・・・
要はデザイン部分について、CSSを適用することで統一化や作業軽減を図るというものになります。
ちなみに今年リリース予定のV11はNotesクライアント側の強化が予定されているという噂です。Designerを使わずにアプリが作れるようになるかも!!
ということで、先の話は置いておいて、今回はよくSaasサービスなどであるような、フォームの色を個人の好みで変更できるようにしてみましたので、記事に致します。
イメージとしては、数種類の色のサブフォームを準備し、ユーザーがその中から色を選択して使うというものです。一度設定した内容は次回以降も引き継ぐよう想定してあります。
なお今回もスクリプトなしで完結させています。
この機能を実現する手順のキーワードは、
[サブフォーム] と
[環境変数]
です。
ということで、早速ですがサブフォームを作成します。
今回は切り替えの試験のみですので、簡単に色違いの4種類のサブフォームを作成しました。
サブフォーム [Black]
サブフォーム [Blue]
サブフォーム [Green]
サブフォーム [Red]
作り方は簡単ですよね。
ひとつ作成して、それをコピー。
罫線と文字の色を変えただけになります。
サブフォームができたら、実際に使用するフォームを作成します。
フォームには環境変数を呼び出す計算結果フィールド[refTheme]とサブフォームを配置します。
まずは計算結果フィールドです。
式には以下を設定して、環境変数[TestTheme]に値があるときはそちらを。なければブランクを表示するようにしてあります。
本来はこちらを非表示にしておくべきなのですが、動きの確認のため表示したままとしてあります。
THEME:=@Environment("TestTheme");
@If(THEME!="";THEME;"")
続いてサブフォームです。
[作成]-[リソース]-[サブフォームの挿入]をクリックします。
サブフォームの挿入ダイアログが表示されますので、[式の定義によりサブフォームを挿入] にチェックし、[OK]します。
すると以下のように<サブフォームの計算結果> が表示されますので、こちらの式を設定します。
今回は4つのサブフォームを@If のネストで組んであります。
・・・Caseが利用できるともう少し式が綺麗なのですが・・・
@If(refTheme="Red";"Red";@If(refTheme="Green";"Green";
@If(refTheme="Blue";"Blue";"Black")))
以上でフォームはできあがりました。
それでは肝心の環境変数をセットするプログラムです。
選択用のフォームを作ってもいいのですが、ダイアログで選択するだけで画面一面を使うのはちょっと・・・ということで、今回は@PickList を使うことにしました。
@PickList のヘルプには、
「指定されたビュー。ユーザーはこのビューで文書を複数選択できます。@PickList は、選択された文書の列の値を返します。」
と書かれています。
またパラメーターの指定により、複数でなく1つしか選択できないようにすることが可能です。
それではまずは@PickListで使用するビューを作らなければなりません。
またその元となるフォームも必要です。
早速ですが、フォームです。
今回は4文書を登録するだけですので、単純にフィールド[Color] ひとつのフォームを作成しました。
こちらをNotesでプレビューし、以下4つの値の文書を追加してあります。
[Black] [Blue] [Green] [Red]
続いてビューです。
こちらも単に1列だけ、先ほどの[Color] を表示するだけのビューを作成します。
わかりやすいように、昇順に並べてあります。
続いてビューにアクションを追加します。
今回は便宜上、このビューしか作成しておりませんので、こちらに[テーマ選択]と[新規作成]のアクションを追加します。
[新規作成]ボタンは、先に作成しましたサブフォームが埋め込まれたフォームを新規で作成する設定を施します。
@Command([Compose];"theme")
次に[テーマ選択]ボタンです。
こちらには先ほど記載しました@PickList を使用して、選択した値を取得し、環境変数にセットするという式を設定します。
CHOICE:=@PickList( [Custom] : [Single] ; @DbName ; "Color" ; "Select a product" ; "テーマカラーを選択してください。" ; 1 );
@SetEnvironment("TestTheme"; CHOICE )
それでは動きを確認してみましょう。
いい感じですね。
念のため、notes.ini も見ておきます。
最後に設定した[Red]が登録されてますね。
どうせなら左のナビゲーターも・・・と考えたのですが、現在の私の技量では手に負えませんでした。
また何か妙案思いつきましたら、記事に書かせて頂きます。
さて本来ですとここまでの記事なのですが、実はこの機能!!
DMA(Domino Mobile Apps)でも動くんです。
VIDEO
実はDMAの環境変数についてはまだ実際にどのように処理されているのか理解できていません(汗
ただ、iPad内のどこかに保存されているようですので、今後のアプリケーション開発でも有効に利用できることが確認できました。
さて長くなりましたが、今回は環境変数を用いて、サブフォームを切り替える手順を書きました。
内容としては色の変更として記述しましたが、例えば部署ごとにサブフォームの内容を切り替えるなどすることで、部署別のポータルフォームのような使い方もできます。
もちろんほかにも用途があるはず・・・。
難しい式は一切使用していませんので、ぜひ機会あればお試しください!!