サポート > リポジトリ > 画面機能 > ボタン名と表示条件
ja | en

各画面に用意するボタンの名称や表示条件を変更することができます。式も適用できます。

ボタン名に式を適用した例を図1,図2に示します。ログオンアカウントによってボタン名が変わります。

図1 システム管理者が利用する場合はボタン名が「管理者登録」になる
図2 一般が利用する場合はボタン名が「一般登録」になる

各画面に用意された「ボタン表示」の「ボタン名」は固定の名称だけでなく式が設定できます。

図3 ボタン名の設定

固定名称を指定する場合

ボタン名をそのまま指定します。

スケジュール登録

式を用いる場合

式の計算結果の戻り値の型が文字列型となるようにします。

IF(EXACT(USERNAME(),"admin"), "管理者登録","一般登録")

式の詳細は「計算式」をお読み下さい。

「ボタン表示条件」を設定すると、条件に合致した場合にのみ、当該ボタンが画面に表示されるようになります。図4は "日付が本日以降の場合" という条件を指定した例です。

DATE(${sdate})>=DATE(TODAY())

式の戻り値は真偽値としてください。trueまたはfalseが戻るようにします。

図4 日付を条件に適用した

条件となる項目の値に連動してボタンの表示・非表示を制御する

図4の例では、新規登録画面を開いた時に条件に合致しなければ、登録ボタンは非表示となります。その後、条件となる日付項目を入力しても、ボタンは非表示のままです。

この動作を修正し、条件となる項目の値に連動してボタンの表示・非表示を制御させる場合は、図5に示すように(条件となっている項目について)「値変更時に画面を再描画する」設定を有効にします。

この設定を行うと、当該項目の値が変更されるたびに、フォームの値を再送信するようになります。ボタン表示判定の制御はサーバ側で行います。

図5 値変更時に画面を再描画する

条件式の記述例

項目 item の値が 1 のとき、登録ボタンを表示する

${item}==1

項目 item の値が "東京" のとき、登録ボタンを表示する

EXACT(${item}, "東京")

EXACT関数は文字列の比較を行います。

モデル schedule について、権限 "perm_button" を持っている利用者が操作する場合にボタンを表示する

HASMODELPERMISSION("perm_button", "schedule")

HASMODELPERMISSION関数は、利用者が指定した権限を有しているかどうかを返します。

プリンシパル "publicuser" を持っている利用者が操作する場合にボタンを表示する

HASPRINCIPAL("publicuser")

管理者のみボタンを表示する

HASPRINCIPAL("all")

allは管理者権限を意味します。

管理者権限でログオンしたとき、HASPRINCIPAL 関数は常にtrueを返します。そのため、管理者権限のみボタンを表示する、という場合、カッコ内に与える引数(プリンシパル名)は実際にはなんでもよい、ということになります。しかし他のプリンシパルと区別するため、上記のように all と指定することを推奨します。

外部キー関係では、親モデルの画面に複数の子モデルを一覧表示することができます。
この場合のボタン表示制御は次のルールになります。

  • 条件式に含めることができる項目は親モデルになります。
  • ただし、親からみた子の一覧表示として、"子モデル_lp" という表記が利用できます。

例:「外部キー連携>表示条件」で、親モデルの項目 item1 の値が 100 より大きい場合に子モデルの新規登録ボタンを表示する。

${item1} > 100

例:この親モデルに紐づく子モデルの数が 3 未満のとき、子モデルの登録ボタンを表示する。

COUNT(${support_lp} < 3)

COUNT関数は、子レコードの総数を返します。

図6 外部キー連携でのボタン表示制御

ボタン名を式で制御する例も示します。子モデルの数によってボタン名が変わります。

IF(COUNT(${support_lp})==2,
    "あと一つ",
    IF(COUNT(${support_lp})==1,
        "あと二つ",
        "あと三つ"
    )
)

制約

この指定は子モデル一覧更新画面の「新規」ボタンには反映されません。
(一覧更新画面の「新規」ボタンの制御は現在、未対応です。)