タブ表示制御

最終更新日: 2023年6月28日
R8 | R9

ラジオボタンによる制御

ラジオボタンを使ったタブの表示制御の例を示します。図1は「更新記録タブ表示」を選択しています。これに連動して「更新記録」タブが表示されています。

図1 更新記録タブが表示されている

図2は「更新記録タブ非表示」を選択した例です。このとき「更新記録」タブは表示されません。

図2 更新記録タブが表示されていない

定義方法

新たに「タブ制御フラグ」項目を用意します。(図3)

図3 タブ制御フラグ項目を定義する

選択肢モデルとして「タブ表示制御フラグ」モデルを用意し、図1に示す初期値を設定しておきます。このモデルをラジオボタンで参照します。(図4)

図4 モデル連携の設定

「更新記録」タブレイアウトの設定で「タブ表示条件」に、条件式「項目ID=値」を記述します。

図5 タブ表示条件の記述
項目ID=値

図5の式は「ctrl_flag=1」となっています。 これは選択肢モデルのID値が "1" の場合(上記の例では「更新記録タブ表示」という選択肢)にタブを表示します。

仕様・制約

  • 値と等しい、という記述になります。"ctrl_flag > 1" といった、不等号を用いた式を記述することはできません。
  • ウィザードと併用した場合、別画面に配置された項目を指定することはできません。表示条件に用いる項目は、同一画面に存在する必要があります。
  • Wagbyが提供する関数は利用できません。
  • 詳細画面でもタブ表示制御を行う場合、制御元の項目(ここでは ctrl_flag) は隠し項目としてください。"出力制御>詳細画面>共通>隠し項目にする"を有効にします。

チェックボックスによる制御

タブに対応した5つの選択肢を用意しました。(図6)最初はいずれもチェックしていないため、タブも表示されません。

図6 すべてのタブが非表示

1つをチェックすると、それに対応したタブが表示されます。

図7 基本情報タブが表示された

すべてをチェックすると、すべてのタブが表示されます。

図8 すべてのタブが表示された

無効になったタブは、詰めて表示されます。

図9 途中のタブが無効になった例

定義方法

タブ制御フラグの初期値を5つ用意します。(図10)

図10 タブ制御フラグの初期値

タブ制御フラグをチェックボックスとします。

図11 タブ制御フラグをチェックボックスに切り替える

各タブに、表示条件を設定します。

ctrl_flag=1
ctrl_flag=2
ctrl_flag=3
ctrl_flag=4
ctrl_flag=5
図12 タブ表示条件の設定

仕様・制約

"ラジオボタンによる制御"をお読みください。

値による制御

登録時は表示されるが、ある条件を満たさないと詳細画面で非表示となるよう、「基本情報」タブを設定します。 ここでは「荷主コード」の値が未入力の場合、詳細画面に表示されません。(図13,図14)

図13 登録画面で「荷主コード」を未入力にする
図14 詳細画面で基本情報タブは表示されない

定義方法

タブ制御フラグを二つ用意します。それぞれ、コード1が "表示" で、コード2が "非表示" です。(選択肢モデルでは、コードは1から順に割り当てられます。)

図15 タブ制御フラグの設定

出荷伝票モデルで、タブ制御フラグ項目を隠し項目とします。(入力制御と出力制御のそれぞれで隠し設定とします。設定図は省略します。

値を一つしか持たせないため、ここではラジオボタンとします。

図16 タブ制御フラグを隠し項目とする

この制御フラグは入力ではなく式によって値を自動設定します。

IF(
  AND(
    EXACT(SCREENTYPE(),"show"),
    ISBLANK(${ownerid})
  ),2,1
)

上式は、詳細画面でかつ荷主コード(owerid)項目が空白なら "2" (非表示) を、そうでなければ "1" (表示) をセットします。

図17 制御フラグの式

基本情報タブの表示条件を設定します。"1" のときに表示する、としています。

図18 タブの表示条件の設定

仕様・制約

  • 定義の制約があります。詳細はこちらをお読みください。
  • コンテナを含むタブは表示・非表示の切り替えに対応していません。具体的には「複数の繰り返しコンテナを一つのタブにまとめる」設定との併用は行えません。
  • 外部キー子モデルを親モデルのタブにまとめる場合、子モデルの表示制御は "検索・一覧表示 > 外部キー連携 > 表示条件" を使ってください。9.0.2
  • 複数のタブの表示・非表示を連鎖させることはできません。ここで "連鎖" とは、タブAの中にある項目XによってタブBの表示制御を行い、さらにタブBの中にある項目YによってタブCの表示制御を...という動きを指します。ただし制御のトリガとなる項目Xや項目Yに対して「項目の値が変更された場合に画面の再描画を行なう」設定を併用することで、この制約を回避することができます。(新しい条件でタブの表示制御が行われた画面が再描画されます。)
  • タブ表示条件に複数の異なる制御元を指定することはできません。具体的には、項目Xの値または項目Yの値のいずれも、共通のタブAの表示制御を行う、といったことはできません。項目Xの値で、それぞれ別のタブA,Bを制御することは可能です。(例:タブAはX=1またはX=2で表示、およびタブBはX=1で表示)
  • 非表示となったタブ内の項目の値はクリアされません。みかけ上、非表示となっていますが、タブ内の項目値は維持されています。タブが再び表示可能となったとき、以前の状態で表示されます。
  • 登録・更新画面においてタブレイアウトの表示制御を行なっている項目が読み込み専用(または、更新権限で更新不可)の場合は本機能は動作しません。(ダミーの隠し項目を作成し、読み込み専用項目の値を隠し項目に転記した上で制御を行うようにすることで、この制約を回避できます。)
  • 繰り返しコンテナの追加・削除などで画面が再描画された場合でも選択されていたタブが維持されるよう、選択したタブの id をクッキーに保持します。そのため画面表示時にデフォルトで表示されるタブは、クッキーに値が残っていれば、こちらが優先されます。
  • 非表示のタブ内の項目に値を設定することはできません。例えば参照連動項目が含まれるタブが条件によって非表示となっている場合、参照連動による値セット機能は無効となります。