実験的な機能、拡張コンポーネントのプロパティを使ってみた。
ナニコレ
- ファイル→設定→詳細設定→実験的な機能→拡張コンポーネントのプロパティで試せる機能。
- 何これと思っても調べてみましたが検索しても出てこず、日本語もよく分からないので英語にして確認。
- カスタムコンポーネントのプロパティとして、ユーザーが定義した処理(関数など)をセットできるようだ。
- ダイアログコンポーネントなどの作成が捗りそう。
以前ideasで見かけたこれの実装かな。
https://powerusers.microsoft.com/t5/Power-Apps-Ideas/Actions-on-Components/idi-p/238399#comments
追記:後日公式ブログに上がってました。
https://powerapps.microsoft.com/ja-jp/blog/enhanced-component-properties/
使い方
・まず適当なコンポーネントを作成
・コンポーネントにプロパティを追加し、プロパティタイプを「動作」にする
・データ型を選択???とあるけど気にせずテキストで
・コンポーネント内にボタンを配置し、OnSelectで、コンポーネント名.動作プロパティ名()
を記述
・コンポーネントを実際の画面に配置して、先程の動作プロパティにSubmitForm(Form1);Navigate(HomeScreen);
など任意の処理を記述。
・ボタンをクリックすると、プロパティに設定した処理が実行される。
・カスタムイベントのようなものですね。
使用例
確認ダイアログコンポーネント
・はい、いいえをクリックしたときの動作を呼び出し側から設定できます。
ハンバーガーメニューコンポーネント
・メニューのアイコンやタイトルは入力プロパティ:テーブルで設定し、ギャラリーコントロールでリスト表示。
・メニューアイテムをクリックしたときの動作は、動作プロパティでFunc1、Func2と一つずつ設定。(イケてない・・)
→パラメータを使用して、呼び出し側で押されたメニュー番号を受け取り処理を分岐してもいいですね。
・他にも、ヘッダーメニューの編集、保存、キャンセル、更新ボタンをコンポーネント化してレイアウトを共通化するなども可能になります。
パラメータについて
・プロパティ設定でパラメータを設定すると、()内にパラメータを渡すことができ、呼び出し側でパラメータを受け取って処理をすることもできるようです。
[①パラメータの設定]
[②コンポーネント側のボタン]
[③呼び出し側の動作プロパティの関数]
出力プロパティのパラメータ
- 更に、出力プロパティにもパラメータを設定できるようです。
- これはクラスメソッドのようなもので、コンポーネント名.出力プロパティ名(param1,param2)で実行し、コンポーネント側で引数としてパラメータを受け取り、自作関数を実装できるとのこと。
- ただし非動作プロパティであるため、内部にアクションを記述することはできず、一行目の処理で値を返す必要があり少し勝手が違います・・・
※;で区切って複数の処理は書けず、IfやForAllなどの結果処理部分で値を返す必要がある。 - returnを使って戻り値を任意のタイミングで値を返せるようになればよいのですが・・
- 計算処理などでは使い道がありそうです。
本実装が待ち遠しいですね。