フォーム要素

完了

先ほども説明しましたが、モデル駆動型フォームでは、編集または表示するためにデータを表示できます。 モデル駆動型アプリを使用する任意のデバイスでレンダリングするためのレスポンシブ デザインが用意されています。 新しいフォームを作成すると、そのフォーム タイプは Main になります。 メイン フォームのデザインの目的は、テーブルごとに、あらゆる場所で使用できるフォームを 1 つのみ用意することです。 ここでは、フォームに表示される要素について説明します。

フォーム組織

フォームはヘッダー、本文、およびフッターに整理されており、列などのフォーム要素を含むことができます。 フォームの本文は、セクションを含むタブと呼ばれる領域で構成されます。 タブおよびセクションは、コンテンツにさらなる構造を与えるフォーム要素の列をサポートするように構成できます。 フォームの最初のタブは最も重要なものであり、ユーザーが表示する必要のある優先順位データが含まれている必要があります。 複数のタブを設定することもできますが、データを論理的にグループ化することで、より少ない数にすると、ユーザーが頻繁にタブを使用して検索できなくなるため、パフォーマンスが向上します。 さらに、タブが多すぎると、フォームに負担がかかり、パフォーマンスに影響を与える可能性があります (特にモバイル ユーザーの場合)。

フォーム デザイナー

フォームの編集時に実行する最も一般的なタスクは、列コントロールをフォームに配置することです。 アプリでフォームを追加/変更するには、フォーム デザイナー インターフェイスを参照してください。 フォーム自体が画面の中央のキャンバス ウィンドウに表示されます。 上部のコマンド バーに、すぐに使用できる機能とナビゲーション リンクが表示されます。サイド メニューでは、各種オプション間を移動して左側のパネルに表示できます。

テーブルの列とプロパティ

最初は左側のパネルに表示されるテーブル列の一覧には、データ ソースの使用可能な列が表示されます。 まだ使用していない列のみを表示するか、すべての列を表示するかを選択できます。 画面の右側には、フォームの選択した部分のプロパティがパネルに表示されます。

フォーム フィールド ボタン、テーブル列、およびフォーム列のプロパティを強調表示するフォーム画面のスクリーンショット。

必要に応じて、同じ列をフォームに複数回追加することができます。表示される値は、発生するたびに同じになります。 フォームに追加されたテーブル列が、フォーム フィールドになります。 必須ではないフィールドを削除したり、フォーム上の必須フィールドを非表示にしたりすることもできます。データには影響を与えません。 それらのフィールドを削除すると、使用していないテーブル列の一覧に戻ります。

プロパティ タブでは、フィールド名の調整、表示設定、読み取り専用の切り替えなどの操作を行うことができます。 特別な構成がない場合、列のデータ型に応じて入力コントロールが列でレンダリングされます。 たとえば、[選択] 列には、ドロップダウン リストのデータが表示されます。

コンポーネント

サイド レールから "コンポーネント" フィールドを選択した場合や、コマンド バーから [コンポーネント] オプションを選択した場合、左側のパネルにコンポーネント メニューが表示されます。 コンポーネントを使用すると、フォームをさらにカスタマイズできます。 レイアウトの選択により、フォームの物理的な構造を整理できます。 グリッド コンポーネントを使用すると、グリッドからデータ入力ができるようになります。 表示コンポーネントを使用すると、カレンダー、外部 Web サイト、キャンバス アプリ、その他の項目をフォーム エクスペリエンスに挿入できます。 入力コンポーネントは、チェックボックス、オプション セット、トグル、ペン入力など、データを入力するユーザーに他の方法を提供します。 使用可能なコンポーネントの一覧で、Power BI レポートなどのオプションが展開されます。

追加コントロールの周囲に赤いボックスが付いた列のプロパティ ウィンドウのスクリーンショット。

コンポーネントの追加

追加するコンポーネントを選択すると、そのコンポーネントを適用するフィールドの指定と、どのプラットフォームにコンポーネントを表示するのかの注釈付けを求めるメッセージが Power Apps に表示されます。 コンポーネントを適用できるテーブル列がない場合は、その列を挿入することができません。 次の例では、リッチ テキスト エディター コントロールを選択しています。 テーブル列 (これは必須のフィールドであることに注意) を選択するように求められ、このコントロールを追加できる 2 つのフィールドがドロップダウンに表示されます。 その中から 1 つ選択すると、フォーム キャンバスにコントロールが追加されます。

このコンポーネントを表示するフォーム ファクターを決定できる点に注目してください。これにより、異なるフォーム ファクターの同じフィールドに別のコンポーネントを使用することができます。

[リッチ テキスト エディター コントロールを追加する] テーブル列の選択を示すポップアップ ウィンドウのスクリーンショット。

フォームの設定

フォームの設定により、ユーザーの通知なしにバックグラウンドで動作するフォームにコントロールをインストール、ユーザーに表示されるフォームを定義できます。 フォームに対するセキュリティ ロールを定義して、アクセス、フォームの順序、フォールバック フォームなどを制御できます。 また、フォームの設定を使用すると、特定のセキュリティ グループがフォームにアクセスできるのを確認することができます。 次の図は、セキュリティ ロール タブを示しています。

[セキュリティ ロール] タブを示すフォームの設定のスクリーンショット。

フォームの順序を使用すると、セキュリティ ロールに応じて最初と次に表示されるフォームを決定できます。 これにより、ユーザーごとに異なるフォームを表示できます。 フォールバック フォームを使用すると、セキュリティ ロールに選択していないフォームがある場合に特定のフォームを有効にしたり、選択したフォームがある場合に特定のフォームを無効にしたりできます。

フォーム要素の表示または非表示

各要素のプロパティ パネルを使って、要素の表示/非表示を切り替えることもできます。 このオプションは、タブ、セクション、行、iFrame、および Web リソースによって実現されます。 フォーム スクリプトまたはビジネス ルールを使用すると、これらの要素の可視性を調整して、フォームの条件に対応するユーザー インターフェイスを提供する動的フォームを作成することができます。

可視性オプションを制御するスクリプトに依存するフォームをデザインするのではなく、ビジネス ルールを適用 (または別のフォームに切り替え) して要件を満たすこともできます。 スクリプトを使用する場合は、表示しない要素が既定で非表示になっていることを確認してください。 ロジックがスクリプトを呼び出すときにのみ表示します。 こうすると、スクリプトをサポートしていないプレゼンテーションでは表示されません。

フォームのイベント ハンドラー

フォームのイベント ハンドラーでは、ユーザーがフォームと対話するときに実行される開発ロジックを構成できます。 イベント ハンドラーには、右側のパネルでその要素のイベント タブからアクセスできます。ただし、使用する前にライブラリを追加する必要があります。

フォームのイベント ハンドラーは、フォームの次の領域に対して構成できます。

要素 イベント 説明
フォーム OnLoad フォームが読み込まれたときに発生します。
OnSave データが保存されたときに発生します。
タブ TabStateChange タブが展開または折りたたまれたときに発生します。
OnChange 列のデータが変更され、コントロールがフォーカスを失った場合に発生します。
IFrame OnReadyStateComplete IFrame の内容が読み込まれたときに発生します。

イベント ハンドラーは、JavaScript Web リソースへの参照と、イベントが発生したときに実行される Web リソース内で定義される関数で構成されます。 各要素には、最大 50 の個別のイベント ハンドラーを構成できます。

ほとんどの場合、開発者はイベント ハンドラーを作成します。ただし、フォームに構成されている内容を確認する必要がある場合もあります。

右側のパネルのイベント タブからイベント ハンドラーを追加する以外に、フォーム ライブラリ パネルを使ってフォームに読み込むこともできます。 左側のナビゲーション レールやコマンド バーからアクセスできます。 ライブラリの追加を選択すると、JavaScript ライブラリの追加が表示され、Web リソースを選択してフォームに適用できます。

JavaScript ライブラリの追加のスクリーンショット。

概要

Power Apps フォーム デザイナーを使用すると、フィールド、コンポーネント、設定、およびイベント ハンドラーを通じてフォームのすべての側面を作成および制御できます。 基本フォームは、データ テーブル列から簡単にデザインできます。 さらに、ユーザーのセキュリティ ロールに合わせて調整されるかなり複雑なフォームをデザインしたり、ユーザー操作時にスクリプトを実行したり、データにグラフィック インターフェイスを提供したりすることもできます。

次のユニットでは、複数のフォームを構成する方法について説明します。