Form コントロールを利用しない画面を作っているシーンを眺めてて。コントロールの初期化で戸惑う方を連続して観測したので簡単にまとめておく次第です。この記事の期待する主な用途としては「ここ見て試して」(URL ぽーい)です。
初期化とは?
コントロールの値を初期状態に戻すコトですね。改めて書く必要はないだろう、と思いつつも念のために記載しておきます。TextInput コントロール等であれば Default プロパティの値へ戻す、ってコトです。
例えば、編集画面を提供してて「全部、元の状態へ一気に戻したい」みたいなシーンを想像してください。
動作イメージ
百聞は一見に如かず、ということで。左側が後述の方法1、右側が方法2になります。
#PowerApps Reset property & Reset function pic.twitter.com/6amgOVsLwD
— やま (Yama)📢書籍『Power Apps入門』10/20発売 (@yamad365) November 21, 2021
繰り返しますが「Form コントロールを利用しない」場合です。
※Form コントロールの場合は ResetForm 関数 をご利用ください。
2つの手段で初期化しています。
方法1:Reset プロパティを利用する
TextInput やドロップダウンコントロールなど入力を求めるモノには [Reset] プロパティがあります。こいつを True にしてやると初期値に戻ります。
動作イメージでは、ボタンコントロールの [Pressed] プロパティを参照して初期化を実現しています。[Pressed] プロパティはコントロールが押されている間は true 、それ以外の場合は false になるので、リセットしたい対象と簡単に連動できます。もちろん、変数を経由して Reset プロパティを発動させるコトも可能です。(過去、Pressed プロパティがなかった時代は変数でやるしかなかったなぁ・・・)
方法2:Reset 関数を利用する
前述の Reset プロパティを持つコントロールに対して、初期化しろ!という命令が出せる関数です。
■Docs
Power Apps の Reset 関数
この関数 リアクティブ じゃないんですよねw
正確なタイミングは不明ですが、2年ほど前は存在しなかった関数です。ホント、イツ登場したんだろう・・・。
どっちを使ったほうが良いの?
どっちが良いのか気になりますよね?
個人的には「好きなほうでインじゃね」です。
結局、得られる効果は同じなので実装しやすい方法で対応ください、ですね。悩むより、手を動かして対応しちゃったほうが早い場面が多いと思います。きっと、ね。
例えば、コントロールをコピペして増やしていくような画面を作っているのであれば、方法1:Reset プロパティを1番初めにコピーするコントロールへ仕込んでおくと楽かもしれません。ペーストしたタイミングで、既に Reset プロパティへ処理が設定された状態で複製されますからね。
コントロール数がさほど多くなく、命名もちゃんとなってる画面に対して後追いで初期化ボタンを追加する、などであれば Reset 関数で書いたほうが早いかもしれませんよね。
つまり、状況次第です。
まとめ
なにはともあれ「選択肢を持っている」というのは1つの強みです。
かなり初歩的なネタになってしまいましたが、結構知らない方が多そうだったので記事にしておく次第です。なお、途中でも案内していますが、Form コントロールは別の手段で初期化になります。まずは、手を動かして、試してみて期待される結果が得られるか確認してくださいね。
それでは、皆さま。素晴らしい Power Platform Life を!