Power Apps 教えてAkiraせんせー!⑩
@akira_365🐟さんの講習10回目が終了しました!
Formは指定するところがたくさんあって簡単だと思っていたのですが、全然違いました😂
Formに関して新しい関数を学びました✨
9回目はこちら
編集画面と入力画面で同じ Form を使用する
前回、作成した日報を登録するところまで行ったのですが、
DefaultMode が New なので、常に「新規作成」となってしまいます。
ここは複雑な仕様になっているみたいです💦
日報の編集
まずは ViewScreen で日報を登録した日をカレンダーで選択しておきます。
編集する機能として、アイコンのコントロールを追加します。
ViewScreen の galView (Gallery)内の Template を必ず選択した状態で
オーサリングメニュー→挿入→アイコン から適当なものを選択して、配置後に『編集』に変更します。
名前:icoEdit
icoEdit をクリックすると EditScreen へ移動し、実際に編集が行える状態にしていきます。
OnSelect = Select(Parent) がデフォルトで設定されています。
こちらはいま記入されているところを選択した状態です。
数式の続きに ; (セミコロン)をつけて関数と関数を繋げます。
OnSelect = Select(Parent);Navigate(EditScreen,Fade)
Form の画面には移動するようになりましたが、どの項目も空白で、編集することができません。
編集できるようにするために、frmInput のプロパティペインの詳細設定にある DefaultMode を次のように変更します。
DefaultMode = FormMode.Ediit
もうひとつ、 galview の選択されている Item という設定を行います。
Item = galview.Selected
galView で選択されたデータがこの Form での編集対象となったので入力内容が表示されました。
プレビューで実際に編集してみます。
ViewScreen へ移動して確認すると、更新されていました。
NewForm 関数 と EditFrom 関数
TopScreen の『作成』から 移動する場合は、 FormMode.New にする。
『履歴/編集』から 移動する場合は、 FormMode.Edit にする。
↓
TopScreen の『作成』から 移動する場合は、 FormMode を New にしたい!
ViewScreen から飛ぶときは FormMode を Edit にしたい!
それを叶えるために、Power Apps では珍しい、
「他のコントロールを制御することのできる関数」を使用します。
・『作成』ボタンをクリックすると移動先の Form を新規作成モードにする
最初に、frmInput の DefaultaMode を空白にしておきます。
TopScreen の galMenu の中の icoMenu と btnMenu、2つのコントロールを選択します。
今は OnSelect へ Navigate関数が設定されています。Gallery値を読み込んでくれているので、EditScreen へ移動という状態です。
こちらに ; (セミコロン)をつけて に NewForm 関数を追加します。OnSelect = Navigate(ThisItem.Value.navi,Fade);NewForm(frmInput)
プレビューで『作成』ボタンをクリックすると、先ほどまで入力されていたデータが一瞬表示された後で空白になりました。
これは仕様としてこんなものだと思ってていいのでしょうか。
frmInput の DefaultaMode を空白にしておいたのに、TopScreen のアイコンの OnSelect にNewForm関数を追加するだけで、自動的に Form が New になる不思議な関数です。
・『鉛筆マークを』をクリックすると移動先の Form を編集モードにする
では、ViewScreen の icoEdit の OnSelect へも ; (セミコロン)をつけて、
編集モードにするための EditFrom関数 を追加します。
OnSelect = Select(Parent);Navigate(EditScreen,Fade);EditForm(frmInput)
プレビューで実際に編集してみました。
🐟外で指定することにより、同じ画面で制御することができるとのことです
ちなみに SubmitForm 関数は FormMode が Edit の場合、上書き保存となる FormMode が New の場合、新規保存 となるので、SubmitForm ひとつで要件が満たされています。
Item が指定されていればその Item を編集する、指定されていない New の
場合は新規作成としてくれる便利な関数です✨
※TopScreen で Updatecontext関数 、Set関数で変数を定義し、FormMode.NewEditScreen の Form の FormMode を変数値にする
という考え方もある
OnSuccess プロパティ
ここまでプレビューでいろいろ試しました。
その中で、EditScreen で登録を行っても、画面が切り替わることもなくそのままの状態ということが気になります。
移動するという関数を考えてみます。
いままで学んだ知識の中では btnSubmit の Onselect に Navigate関数 を入れていくような気がします。
ちゃんと登録されたことを確認して次の動作に移るようにするため、
該当コントロールは btnSubmit ではなく、frmInput となります。
プロパティペイン→詳細設定→OnSuccess
「成功時、レコードが編集されその編集が正常に保存されたときに実行する動作」というプロパティに関数を入力します。
OnSuccess = Navigate(TopScreen,ScreenTransition.Fade)
プレビューで、編集して登録ボタンをクリックすると、TopScreen に移動しました。
「登録しました」画⾯に移動するように設計
「新しい画⾯」→「成功」を選択し、Screen を追加します。
名前:SuccessScreen
この SuccessScreen へ TopScreen の grpHeader と galMenu をコピーしてペーストします。
frmInput の OnSuccess = Navigate(TopScreen,ScreenTransition.Fade)を
OnSuccess = Navigate(SuccessScreen,ScreenTransition.Fade) と変更して
EditScreen で登録を試してみると、SuccessScreen へ移動しました。
今回はここまでです!
まだまだ Form が続きます🤩
初学者には難しいところなので、時間をかけてご指導いただきます。
次回は Form の内容の編集に入ります。
この記事が気に入ったらサポートをしてみませんか?