Power Appsコンポーネント

【Power Apps】コンポーネントによるTeamsのようなタブ(サイドバー)の作り方

Power Apps

この記事では、

  • コンポーネントのメリット・デメリット
  • Teamsのようなタブ選択(サイドバー)コンポーネントを作成する手順
  • アプリへの導入方法

を解説します。

複数画面を持つアプリではほぼ必須である画面切り替え機能をよりモダンなデザインで、より簡単に実装することができます。

コンポーネントのメリット・デメリット

コンポーネントには以下のメリットがあります。

  • 頻繁に利用する数式やコントロールをまとめられるため、パフォーマンスや保守性が向上する
  • 汎用的な部品として作成すれば開発速度が向上する
  • zipファイルやコンポーネントライブラリとして共有可能

一方、以下のデメリットがあります。

  • コンポーネントの開発には中級以上のPower Apps開発スキルが求められる
  • 初心者が開発時にコンポーネントを利用する際には詳細な手順書を作成する必要がある
  • 汎用的な部品として開発するためには相応の開発工数がかかる

これらのメリット・デメリットを総合的に評価してコンポーネントを使用しましょう。

コンポーネントについては以下のMVPの方々の動画が非常に勉強になります。

またコンポーネントの作成にはプロパティの種類などを理解している必要があります。

タブ選択コンポーネントの完成イメージ

タブ選択コンポーネントは、複数の画面を切り替えるためのコンポーネント(Power Appsで再利用可能な共通部品)です。

縦向き・横向き両方に対応しているタブ選択コンポーネントの作成方法を説明します。

タブ選択コンポーネントの作成手順

Power Appsでタブ選択コンポーネントを作成する手順は以下の通りです。

コンポーネントを作成

コンポーネント→新しいコンポーネントより、コンポーネントを作成します。

追加されたコンポーネントの名前をComponentTabに変更します。

カスタムプロパティを追加

カスタムプロパティは追加したコンポーネントを選択し、新しいカスタムプロパティを選択することで追加できます。

以下の表に沿ってカスタムプロパティを追加して下さい。

表示名プロパティの型データ型
TabItems入力テーブル
IsVertical入力ブール値
Color入力

コンポーネントのプロパティに値を設定する

以下の表に沿ってプロパティを変更して下さい。

プロパティ
Width80
Height800
TabItemsTable(
{
Label: "SampleText",
Icon: Icon.Add,
Screen: App.ActiveScreen
}
)
IsVerticalSelf.Height > Self.Width
ColorRGBA(0, 0, 0, 1)
TabItems
IsVertical
Color

ギャラリーを追加・設定

挿入→レイアウト→空の垂直ギャラリー(GalleryTab)を追加し、以下の表に沿ってプロパティを入力します。

プロパティ
OnSelectNavigate(ThisItem.Screen)
ItemsParent.TabItems
DefaultLookUp(Parent.TabItems, App.ActiveScreen.Name = Screen.Name)
TemplateSizeIf(
Parent.IsVertical,
Min(80, IfError(Self.Height / CountRows(Self.AllItems), 1)),
Parent.Height - 10
)
WidthParent.Width - 2
HeightParent.Height
TemplateFillIf(
ThisItem.IsSelected,
ComponentTab.Color,
RGBA(0, 0, 0, 0)
)
WrapCountIf(
ComponentTab.IsVertical,
1, CountRows(Self.AllItems)
)

ギャラリーにアイコンとラベルを追加・設定

ギャラリー内に挿入→アイコン→任意のアイコン(IconTab)を追加します。アイコンのプロパティを以下の表に沿って入力します。

プロパティ
IconThisItem.Icon
ColorIf(
!ThisItem.IsSelected,
ComponentTab.Color,
RGBA(255, 255, 255, 1)
)
FillIf(
ThisItem.IsSelected,
ComponentTab.Color,
RGBA(255, 255, 255, 1)
)
WidthParent.TemplateWidth
HeightParent.TemplateHeight * 0.8
X, Y0
PaddingTop, Left, Right5
PaddingBottom2

同様に挿入→ディスプレイ→テキストラベル(LabelTab)を追加し、プロパティを以下の表に沿って入力します。

プロパティ
TextThisItem.Label
AlignAlign.Center
ColorIf(
!ThisItem.IsSelected,
ComponentTab.Color,
RGBA(255, 255, 255, 1)
)
FillIf(
ThisItem.IsSelected,
ComponentTab.Color,
RGBA(255, 255, 255, 1)
)
YParent.TemplateHeight * 0.8
WidthParent.TemplateWidth
HeightParent.TemplateHeight * 0.2
PaddingTop2

セパレーターを追加・設定

コンポーネント内に図形→四角形(RectangleTab)を追加し、以下の表に沿って入力します。

プロパティ
VisibleParent.IsVertical
Width2
XGalleryTab.Width
Y0
HeightParent.Height
ColorParent.Color

使い方

コンポーネントのエクスポート・インポート方法

アプリ内のコンポーネントからコンポーネントを作成した場合、ここで紹介する手順でエクスポート・インポートが可能ですが、現在は廃止済みとなっており利用可能ですが非推奨です。

単一のアプリでのみ使用するコンポーネントはアプリ内から、複数のアプリで使用するコンポーネントはコンポーネントライブラリから作成するようにしましょう。

作成したコンポーネントは以下の操作でエクスポートが可能です。

ダウンロードしたzipファイルを共有します。

インポートする際にはコンポーネントをインポートしますをクリックします。

ファイルのアップロードを選択してzipファイルを選択します。

インポートが完了し、他のアプリでも利用できるようになりました。

アプリでの利用方法

スクリーンで挿入→カスタムよりComponentTabを追加し、縦向きまたは横向きで画面の端に設置します。

App.OnStartでコレクションを宣言します。

ClearCollect(
    ColTab,
    {
        Label: "Screen1", 
        Icon: Icon.Items, 
        Screen: Screen1
    },
    {
        Label: "Screen2", 
        Icon: Icon.Bookmark, 
        Screen: Screen2
    }
)

OnStartを実行します。

コレクションで設定したアイコンに応じてタブが表示されます。

また、Colorプロパティを設定すれば色を変更することも可能です。

コメント

タイトルとURLをコピーしました