見出し画像

Power Apps 教えてAkiraせんせー!⑩

@akira_365🐟さんの講習10回目が終了しました!
Formは指定するところがたくさんあって簡単だと思っていたのですが、全然違いました😂
Formに関して新しい関数を学びました✨

9回目はこちら


編集画面と入力画面で同じ Form を使用する


前回、作成した日報を登録するところまで行ったのですが、
DefaultModeNew なので、常に「新規作成」となってしまいます。

FormMode.New

ここは複雑な仕様になっているみたいです💦

日報の編集

まずは ViewScreen で日報を登録した日をカレンダーで選択しておきます。
編集する機能として、アイコンのコントロールを追加します。
ViewScreengalView (Gallery)内の Template を必ず選択した状態で
オーサリングメニュー挿入アイコン から適当なものを選択して、配置後に『編集』に変更します。
名前:icoEdit

icoEdit をクリックすると EditScreen へ移動し、実際に編集が行える状態にしていきます。
OnSelect = Select(Parent) がデフォルトで設定されています。
こちらはいま記入されているところを選択した状態です。
数式の続きに ; (セミコロン)をつけて関数と関数を繋げます。
OnSelect = Select(Parent);Navigate(EditScreen,Fade)

Select(Parent)・・・この親を選択した後で、Navigate(EditScreen,Fade)・・・EditScreenへ移動

Form の画面には移動するようになりましたが、どの項目も空白で、編集することができません。
編集できるようにするために、frmInput のプロパティペインの詳細設定にある DefaultMode を次のように変更します。 
DefaultMode = FormMode.Ediit
もうひとつ、 galview の選択されている Item という設定を行います。
Item
= galview.Selected

galview の選択されている Item を Ediit するための画面

galView で選択されたデータがこの Form での編集対象となったので入力内容が表示されました。

プレビューで実際に編集してみます。
ViewScreen へ移動して確認すると、更新されていました。

日報の初作成のあとに「だぜ」を追加して登録ボタンを押した

 

NewForm 関数 と EditFrom 関数

TopScreen の『作成』から 移動する場合は、 FormMode.New にする。
『履歴/編集』から 移動する場合は、 FormMode.Edit にする。

TopScreen の『作成』から 移動する場合は、 FormMode を New にしたい!
ViewScreen から飛ぶときは FormMode を Edit にしたい!

それを叶えるために、Power Apps では珍しい、
「他のコントロールを制御することのできる関数」を使用します。

・『作成』ボタンをクリックすると移動先の Form を新規作成モードにする
最初に、frmInput の DefaultaMode を空白にしておきます。

TopScreen の galMenu の中の icoMenubtnMenu、2つのコントロールを選択します。
今は OnSelect へ Navigate関数が設定されています。Gallery値を読み込んでくれているので、EditScreen へ移動という状態です。
こちらに ; (セミコロン)をつけて に NewForm 関数を追加します。OnSelect = Navigate(ThisItem.Value.navi,Fade);NewForm(frmInput)

Navigate した後に frmInput の DefaultaMode を New にする

プレビューで『作成』ボタンをクリックすると、先ほどまで入力されていたデータが一瞬表示された後で空白になりました。
これは仕様としてこんなものだと思ってていいのでしょうか。

ほんの一瞬データが見えました!

frmInput の DefaultaMode を空白にしておいたのに、TopScreen のアイコンの OnSelect にNewForm関数を追加するだけで、自動的に Form が New になる不思議な関数です。

・『鉛筆マークを』をクリックすると移動先の Form を編集モードにする
では、ViewScreen の icoEdit の OnSelect へも ; (セミコロン)をつけて、
編集モードにするための EditFrom関数 を追加します。
OnSelect = Select(Parent);Navigate(EditScreen,Fade);EditForm(frmInput)

ViewScreen の鉛筆マークを押したら Form を Edit モードで開く

プレビューで実際に編集してみました。

日報の初作成だぜのあとの「だぜ」を削除して登録ボタンを押した

🐟外で指定することにより、同じ画面で制御することができるとのことです

ちなみに SubmitForm 関数は FormMode が Edit の場合、上書き保存となる FormMode が New の場合、新規保存 となるので、SubmitForm  ひとつで要件が満たされています。
Item が指定されていればその Item を編集する、指定されていない New の
場合は新規作成としてくれる便利な関数です✨

※TopScreen で Updatecontext関数 、Set関数で変数を定義し、FormMode.NewEditScreen の Form の FormMode を変数値にする
という考え方もある

OnSuccess プロパティ


ここまでプレビューでいろいろ試しました。
その中で、EditScreen で登録を行っても、画面が切り替わることもなくそのままの状態ということが気になります。
移動するという関数を考えてみます。
いままで学んだ知識の中では btnSubmit の Onselect に Navigate関数 を入れていくような気がします。

これだと、終了を待たないで Navigate される

ちゃんと登録されたことを確認して次の動作に移るようにするため、
該当コントロールは btnSubmit ではなく、frmInput となります。
プロパティペイン詳細設定OnSuccess
「成功時、レコードが編集されその編集が正常に保存されたときに実行する動作」というプロパティに関数を入力します。
OnSuccess
= Navigate(TopScreen,ScreenTransition.Fade)

プレビューで、編集して登録ボタンをクリックすると、TopScreen に移動しました。

登録したらという条件


「登録しました」画⾯に移動するように設計

「新しい画⾯」「成功」を選択し、Screen を追加します。
名前:SuccessScreen
この SuccessScreen へ TopScreen の grpHeadergalMenu をコピーしてペーストします。

下にずらして配置します

frmInput の OnSuccess = Navigate(TopScreen,ScreenTransition.Fade)を
OnSuccess = Navigate(SuccessScreen,ScreenTransition.Fade) と変更して
EditScreen で登録を試してみると、SuccessScreen へ移動しました。

ちゃんと登録もされています

今回はここまでです!
まだまだ Form が続きます🤩
初学者には難しいところなので、時間をかけてご指導いただきます。
次回は Form の内容の編集に入ります。

この記事が気に入ったらサポートをしてみませんか?