キャンバス コンポーネントでは、作成者がさまざまな種類のプロパティを作成して、コンポーネントとコンポーネントをホストするアプリの間で値またはロジックを渡すことができます。 プロパティは、インタラクティブで再利用可能なコンポーネントを構築するために不可欠です。
前提条件
この機能は、新しいアプリでは既定でオンになっています。 既存のアプリの場合は、アプリの設定でオンにする必要があります。
Power Apps Studio でキャンバス アプリ編集用のアプリを開きます。 コマンド バーで、設定>更新を選択します。
新規 タブで、強化されたコンポーネントのプロパティの設定を見つけてオンにします。
プロパティのタイプ
作成者が利用できるプロパティには次の 4 種類があります。
- データ プロパティ: データ プロパティは、色やテキスト値などのデータに関係します。 データ プロパティは、入力 または 出力 に設定することができ、コンポーネントがアプリにデータを提供するか ( 出力) 、アプリがコンポーネントにデータを提供するか (入力) を示しています。 データ プロパティは、アプリ データ フローに参加する唯一のプロパティです。
- 機能プロパティ: 機能プロパティは、特定のパラメーターに基づいて計算を実行したり、テキストを変更したりするなど、ロジックに関連しています。 機能 プロパティは、入力 または 出力 に設定することができ、コンポーネントがアプリに機能を提供するか ( 出力) 、アプリがコンポーネントに機能を提供するか (入力) を示しています。 機能 プロパティはアプリのデータ フローに参加せず、コンポーネント変数またはアプリ変数を使用できません。
-
アクションのプロパティ: アクション プロパティは、ロジックを処理するプロパティの一種で、出力機能 のような動作をします。 したがって、コンポーネントにはロジックが定義されており、そのロジックは連鎖式を使用し、コレクションまたは変数 (「動作」) を操作できます。 たとえば、
Clear()アクション のプロパティは、コンポーネント内の値を消去するためにアプリが呼び出せる機能を提供したり、データソースを更新するSave()アクション プロパティを提供したりすることができます。 -
イベントのプロパティ: イベント プロパティは、ロジックを伴うプロパティのカテゴリーで、入力機能 として機能するものです。 このように、アプリはコンポーネントが呼び出すことのできるロジックを定義し、そのロジックは連鎖式を使用したり、コレクションや変数 (「動作」) を操作することができます。 通常、これらのプロパティの名前は、
OnSelectまたはOnChangedなどのイベントを反映しています。
データ プロパティ
データ プロパティの使用法は容易に想像できます。 通常、アプリの標準コントロールには、デフォルト値、テキストの色、サイズなどを設定するためのいくつかのデータ プロパティがあります。 コンポーネント内のコントロールのプロパティをホスティング アプリで使用できるようにする簡単な例を見てみましょう。 この例では、コンポーネントの名前は Component1 です。 コンポーネント内にスライダー コントロールを配置します。 使用するアプリから色を指定する Input プロパティと、コンポーネントがアプリにスライダーの現在の値を伝える Output プロパティを追加します。 この例では、コンポーネントに という名前のSlider コントロールがあることを前提としています。
- コンポーネントのプロパティ ペインで、新規カスタム プロパティ を選択します。
-
新規カスタムプロパティ ペインで、表示名
Slider Colorを入力します。 - プロパティ タイプ を データ とし、プロパティ定義 値を 入力 とします。
- 最後に、データ型 ドロップダウンから 色 を選択します。
- 作成 をクリックします。
続いて、Slider1 スライダー コントロールを選択します。
ValueFill を検索し、数式バーに Component1.SliderColor を入力します。
Component1 はコンポーネントの名前で、SliderColor は追加したプロパティの名前です。
以上で、コンポーネントには、SliderColor プロパティが追加されました。使用するアプリで設定してコンポーネントに色を渡し、スライダーの ValueFill プロパティを設定できるようになりました。
また、使用するアプリにスライダーの値を指定することもできます。 これを行うには、Outputプロパティを追加します。
- コンポーネントのプロパティ ペインで、新規カスタム プロパティ を選択します。
-
新規カスタムプロパティ ペインで、表示名
Slider Valueを入力します。 - プロパティ タイプ を データ とし、プロパティ定義 値を 出力 とします。
- 最後に、データ型 ドロップダウンから 数値 を選択します。
- 作成 をクリックします。
データ プロパティが 出力 の場合、コンポーネントは使用するアプリに値を提供します。 式を設定するには、コンポーネントの新しい SliderValue プロパティをスライダーの Value プロパティに設定します。
- コンポーネントのプロパティ ペインで、
Slider Valueプロパティをクリックします。 - 数式バーで、規定の値の
100を数式Slider1.Valueに置き換えます。
これで、コンポーネントの SliderValue プロパティにコンポーネント内のスライダーの値が反映され、使用するアプリが読み取ることができます。
機能プロパティ
関数のプロパティには、値を返す式が含まれています。 通常、関数は、返す値の計算に使用する引数を受け取ります。
注意
関数プロパティは現在、変数またはコンポーネントの値とプロパティにアクセスできず、データ フローをトリガーできません。 必要な値はすべて引数として渡す必要があります。
出力 関数は、 Power Apps のカスタム関数を作成する簡単な方法です。 このコンポーネントは、いくつかの引数を取り、値を返す式を含む 出力 関数を定義します。 この関数は、 Component1 を呼び出すことで、コンポーネントの名前 ( Component1.MyFunction(arg1, arg2) など) を使用してアプリ内で使用できます。
Input 関数を使用すると、利用するアプリは、関数ポインターやコールバック関数と同様に、コンポーネントにロジックを提供できます。 たとえば、このコンポーネントが人名を取り扱う場合、引数 firstname と lastname を持つ入力関数があり、文字列を返すことを想定します。 このアプリは、$"{firstname} {lastname}" または $"{lastname}, {firstname}" を返す関数式を定義できます。 コンポーネントは、アプリ作成者が提供する関数を呼び出し、返された文字列を使用します。
アクション プロパティ
アクション プロパティは、出力 タイプの関数プロパティに類似していますが、副作用の式や式の連鎖が可能です。 コンポーネントには、アプリがコンポーネント内のコレクションにレコードを追加できる AddRecord というアクション プロパティ、またはコンポーネント内の変数やコレクションをクリアする Reset アクションを設定できます。
前述のスライダーの Data プロパティの例では、ResetValue というアクション プロパティを追加して、スライダーを既定値に戻すことができます。 この場合は、式 Reset( Slider1 ) を使用します。 これで、アプリ内のコンポーネントのインスタンスは Component1.ResetValue() を呼び出して、スライダーを既定の値に戻すことができます。
イベントのプロパティ
多くの標準コントロールには、入力動作関数のプロパティである共通 Event 型のプロパティがあります。 ボタン コントロールの OnSelect は、よく使われる例です。 コンポーネントは、イベントプロパティを定義し、これらのイベントを関数のように呼び出すことができます。 たとえば、ボタン コントロールを持つコンポーネントには、OnButtonClicked というイベント プロパティを指定できます。 ボタン コントロールの OnSelect では、コンポーネントはその Component1.OnButtonClicked() プロパティを呼び出すことができます。 使用するアプリは、コンポーネント内のボタンが押されたときにこのプロパティが動作する独自のロジックを定義できます。
プロパティまたは引数の既定の値
既定値は、引数またはプロパティに値を指定します (何も設定されていない場合)。 これは、一部のタイプのプロパティでは意味がありません。 場合によっては、既定値を使用して、レコードの予想されるスキーマを表示することができます。 既定のレコードを指定することで、レコードの種類を想定されるスキーマとして設定します。
たとえば、 という名前の AddRecord プロパティは、ローカル コレクションに追加するレコードを受け取ります。 予想されるレコードのスキーマを表示するには、AddRecord プロパティの引数に既定値を追加します。