やること
- Power AppsからSPOリスト「テニス会場レンタル申請データ」をフォームの要素として追加する。
- フォームを4つに分割する。
- 「戻る」「次へ」ボタンのクリックで各フォームの表示/非表示を切り替える。
手順
1.SPOリストの参照追加
- 画面上部の「データの追加」を選択
- 検索条件に「SharePoint」と入力し、SharePointのアイコンを選択
- SPOリストの格納されるShare Point Site (今回はテニス会場管理)を選択
- 一覧からSPOリスト「テニス会場レンタル申請データ」にチェックを入れる
- 「接続」ボタンをクリック
2.編集フォームの追加
-
MainContainer
直下にフォームを追加するため、MainContainer
をクリックしフォーカス状態にする
- 編集フォームを追加 (「+挿入」 > 編集フォーム)、テニス会場レンタル申請データを選択
MainContainer
内に項目一覧が追加されたことを確認
- 各フォームに共通する以下のプロパティを設定
/** プロパティ名: 設定値 */ // 新規モードを設定 DefaultMode: FormMode.New // ディスプレイからのみ設定できる 列へのスナップ: オフ Width: Parent.Width Height: Parent.Height
編集フォームには、新規モードと編集モードがある。
編集モードでは既存のデータに対して更新を行うが、今回は新規登録であるため、新規モードを設定する。 Form1
直下のオブジェクトをShift + 左クリックで全て選択 > Delete ですべて削除する。
多くのオブジェクトを含むフォームを複製すると非常に時間がかかるため(場合によっては数分)先に削除してから必要なオブジェクトを追加していく。
Form1
を選択し、Ctrl + C > Ctrl + Vで複製
それぞれのフォーム名を以下の通り設定
- Formを選択し、プロパティ > フィールド > フィールドの編集を選択
- 「+フィールドの追加」を選択
- 必要分チェックを入れ、追加ボタンをクリック
追加するオブジェクトについては次の手順11.を参照 - 画面上に選択したオブジェクトが表示されることを確認
- 4つのフォームに以下のようにオブジェクトを追加できたことを確認
3.画面遷移の実装
今の状態では、4つのフォームが重なっていて、ユーザーが利用できる状態ではない
そのため、各フォームの表示・非表示を切り替える処理を実装する
Power Appsに「ステップID」の情報を与えて、IDが1であれば会場選択Form
を、IDが2であれば日程選択Form
を表示させる
App
オブジェクトを選択
App
のOnStart
プロパティにStepIDの情報を定義OnStart: /** 各フォームに固定の番号を割り振る */ Set (glb会場選択_STEP_ID, 1); Set (glb日程選択_STEP_ID, 2); Set (glb備品選択_STEP_ID, 3); Set (glb代表者入力_STEP_ID, 4); /** 現在画面に表示したいフォームの番号を保持 初期値は会場選択フォームの番号を設定 */ Set (glbCurrentStepId, glb会場選択_STEP_ID);
App
オブジェクトを右クリックし、「OnStartを実行します」を選択
そうすると、上記Set
関数が呼ばれ、「glb会場選択_STEP_ID
」という定数がPower Apps内に保持される。
- 続いて、フォームの表示・非表示設定のため各フォームの
Visible
プロパティを編集Visible: If (glbCurrentStepId = glb会場選択_STEP_ID, true, false)
Visible: If (glbCurrentStepId = glb日程選択_STEP_ID, true, false)
Visible: If (glbCurrentStepId = glb備品選択_STEP_ID, true, false)
Visible: If (glbCurrentStepId = glb代表者入力_STEP_ID, true, false)
Visible
は初期値では「true
:常に表示」であるが、If文を使うことで、現在のステップIDが自分のフォームのStepIDと一致するときだけtrue
になる。- 「次へ」ボタンでステップIDを切り替える
OnSelect: If (glbCurrentStepId <> glb代表者入力_STEP_ID , Set (glbCurrentStepId, glbCurrentStepId + 1) )
Set
関数でステップIDを1ずつ増やしている。
ただし、今回用意するフォーム数(ステップID)は1 ~ 4であるため、ステップIDが4の場合はSet
関数を呼ばないようにする。 - 「戻る」ボタンでステップIDを切り替える
OnSelect: Set (glbCurrentStepId, glbCurrentStepId - 1) Visible: If (glbCurrentStepId = glb会場選択_STEP_ID, false, true)
考え方は次へボタンと同じで、クリックされたらステップIDを1減らしているだけである。
ただ、一番初めのフォームから戻るボタンが表示されるのは不自然なので2番目以降のフォームから表示させるようにする。
表示と非表示の切り替えが必要になるので手順4と同じように「Visible
」プロパティを編集する。 - 最後に進捗ステータスを表す画像もステップIDの値で切り替える。
Switch(glbCurrentStepId , glb会場選択_STEP_ID , 'ナビゲーションメニューStep1' , glb日程選択_STEP_ID , 'ナビゲーションメニューStep2' , glb備品選択_STEP_ID , 'ナビゲーションメニューStep3' , glb代表者入力_STEP_ID, 'ナビゲーションメニューStep4' )
- 「次へ」ボタンでステップIDを切り替える
4.動作確認
Power Appsの上部メニューに再生マークがあるのでクリックすると、アプリのプレビュー画面が表示される
「戻る」ボタンと「次へ」ボタンを押して
- 4つのフォームが切り替わること
- ナビゲーションメニューが4段階で切り替わること
- 会場選択フォームには「戻る」ボタンがないこと
- 代表者入力フォームで「次へ」ボタンを押しても反応しないこと
が確認できればよい。
プレビュー画面を終了するにはEscキーを押す。