タブ形式の表を実用しているとユーザの権限に応じて表示するタブを切り替えたいことがあります。実はノーツの表では、こんなことまで実現できてしまいます。
一般的な動作
まずは、特別な機能を使用しない場合のタブ表の動作を確認しましょう。
デザイナーで最後のタブを開いた状態でフォームを保存しても、次に開いたときには最初のタブが開きます。もちろんこのフォームを利用した文書を開いたときも最初のタブが開きます。
ノーツのタブは、必ず、最初のタブが開く仕様になっています。
最初のタブとは、表の1行目になるのですが、その行が非表示の場合は、次の行となります。要は、非表示でない最初の行が表示されるということですね。
この機能を利用すれは、表示/非表示をコントロールする行を1行目にしておけば、権限に応じて、表示するタブを切り替えることができます。
この方法は簡易的な手段となり、タブ順も限定されます。もっと柔軟に対応したい場合には、後述の方法を使うことになります。
行の切り替えをプログラムで行う
表のプロパティ[表の行]タブには「行の切り替えをプログラムで行う」という選択肢があります。
以前のバージョンではこの選択肢を選ぶと左に以下のようなアイコンが表示されていました。
このアイコンが示す通り、行の切り替えをプログラムで行うには、フィールドと表(行)を組み合わせる機能となっています。フィールドの値に応じて、表示するタブ(= 表示する行)を指定する機能だと想像できますね。
値を格納するフィールド名の指定は、表のプロパティの別のタブ、[表のプログラミング]の「名前/ID」で指定します。
続いて、フォームに2つめのタブを表示するボタン【次世代エース養成】ボタンを作成します。
クリック時の式には、次のように記述します。
| @SetField("$WS"; 1); @Command([RefreshHideFormulas]) |
フィールド名は表に指定した名称の前に $ が付きます。ノーツが内部的に使っているぞというのが醸し出されていて、ノーツらしい仕様ですね。設定する値は行番号になるのですが、0 始まりとなるため、2行目は 1 となる点に注意が必要です。
なお、各行にも名前を指定することで、より正確に記述できます。まず、次のように行のタグで名前を付けます(2行目を選択してセット)。
そしてボタンの式で、その名前を指定することで、表示するタブを明示できます。
| @SetField("$WS"; "Next-Gen"); @Command([RefreshHideFormulas]) |
ただ、複数のタブをコントロールしたい場合など、それぞれ設定するのは少し面倒ではありますが、行を追加したりしてもバグにならない利点があります。
まとめ
今回は、行の切り替えをプログラムで行う方法を紹介しました。
フィールドを使用し、その値で表示タブをコントロールする機能でした。今回紹介した事例では、ボタンでフィールド値を操作して切り替えましたが、$WS などのフィールドを表示用の計算結果として定義し、ロールに応じて表示するタブを操作してもいいですし、LotusScript で $ フィールド値を変化させ、タブを切り替えることも可能です。
フィールド+表の組み合わせで、構成要素は単純です。応用しやすい機能となっていますので、チャレンジしてみましょう。
0 件のコメント:
コメントを投稿