PL-200 学習メモ (2) :  キャンバス アプリ（一覧画面、詳細画面）

# はじめに
この投稿は PL-200: Microsoft Power Platform 業務コンサルタントの学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/f25bd707921c421cee03

# 前の投稿

https://qiita.com/atsmin77/items/641445ee60d7271f23c3

# キャンバス アプリ
* キャンバスにボタンやテキストを配置することでコードを書かずにアプリが作れる
* アプリの作成時にレイアウトを「タブレット」向けか「携帯 (スマホ)」向けかを指定する
  * 「タブレット」を選ぶと、設定からサイズも変更できる
    * 16:9 (既定)
    * 4:3 iPad など
* Dataverse のデータから自動的にアプリを作ることができる
* 既定で 2 分ごとに自動保存される

# キャンバス アプリの作成

## Dataverse から作成

1. [作成] - [Dataverse] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/8654bc41-c75f-804e-b527-26a7829e012e.png)

2. [新しい接続] から Dataverse を選び、サンプルデータのテーブルを選択して [接続]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3badd362-7bd8-7747-a57b-c2561eff9368.png)

3. 自動的に一覧画面、編集画面、新規作成画面の 3 つの画面をもつアプリが作成される
3. ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5d59fe32-d121-135a-c7b3-1003f681d43a.png)

## 空のアプリから作成

同じキャンバスアプリを空のアプリから作成してみます。

### 一覧画面

1. [作成] - [空のアプリ] をクリック

2. [空のキャンバスアプリ] をクリックし、形式で [タブレット] か [携帯] を選択して [作成]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c8ab097f-dada-4dbc-6e71-32a2a82f440f.png)

3. [挿入] - [垂直ギャラリー] をクリック
※[レイアウト] 配下からそのほかのギャラリーも選択できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/dd2e5d47-f56f-0363-92d1-e78bf6e2ff8e.png)

4. [データソース] を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4d7f5be5-5926-2361-bbd6-a81377bd9381.png)

5. ギャラリーが追加される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/1570f7d0-634f-0722-c4d2-62f0588acb7e.png)

6. 表示する項目の配置は [プロパティ] の [レイアウト]、各項目に表示する内容は [フィールド] から指定できる
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/daa17fae-d1be-0e97-1203-9f2ac727c97c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ae796bd8-ace0-a272-8086-9c0fa4c73b4b.png)

7. ギャラリー内のラベルの文字の色やサイズといったプロパティも任意に変更できる
※ ギャラリーでは 1 行目の項目についてプロパティを変更すれば、すべての行に反映される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/005baec6-33c9-0e30-683e-311d1774823c.png)

### 詳細画面

1. [新しい画面] から空の画面を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/46cc75cc-3de9-b794-2144-5daf39954421.png)

2. [挿入] - [表示フォーム] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/25dd8cfd-c708-048f-0cee-929105ba7bbb.png)

3. 一覧画面と同様にデータソースを選択し、[フィールド] から表示する列を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/48633893-acce-e05a-474c-bd769bb075db.png)

4. [詳細設定] - [Item] に以下を入力することにより、一覧画面で選択した行を表示することができる
```
Item 欄：
【一覧画面のギャラリーの名前】.Selected

例：
Gallery1.Selected
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f1ea9734-8c71-1f9e-a058-50e9b225c0ff.png)

### 一覧画面からの画面遷移

一覧画面をクリックした際に、詳細画面に遷移するように変更します。
画面をクリックした際の動作は onSelect プロパティで制御します。

1. 一覧画面の Garallery の onSelect に以下を設定する
```
Navigate(DetailScreen)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5d9db806-8fe9-3aeb-28c2-5b44d6e1bfb9.png)
2. Garallery 配下のラベルなどの onSelect に以下を設定する
※ 初めから設定されています。
```
Select(Parent)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/faaa031c-9f05-88d5-2eda-90fab6b815f0.png)

これで Garallery 内のどこをクリックしても、Garallery の onSelect に設定されている Navigation により、詳細画面に遷移するようになります。

![Animation1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/39c2abe7-6c54-8147-f215-ba7abda45945.gif)

### 戻るボタン

詳細画面から一覧画面に戻るためのボタンを追加します。

1. [挿入] - [図形] - [戻る矢印] をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b3c4931b-c33c-2a55-c141-f1fa820b07d6.png)
2. 配置した 戻る矢印 の onSelect プロパティに以下を設定する
```
Back()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/aea6ef98-4e67-10c7-66d1-a5c6841487d2.png)

これで一覧画面から詳細画面に遷移した後で、戻るボタンで元の一覧画面に戻ることができるようになりました。

![Animation2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4cdb0a47-c935-4db9-4adb-ba103642618b.gif)

### 画面遷移におけるアニメーション

Navigation() / Back() ではクリックした際のアニメーションを設定することもできます。

例：
Grallery と 戻る矢印 の onSelect を以下に変更すると、ページがスライドして遷移する効果を設定できます。

```
Navigate(DetailScreen, ScreenTransition.Cover)
```

```
Back(ScreenTransition.UnCover)
```

![Animation3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/68baa42f-d975-735b-fb02-297a40dfa893.gif)

https://learn.microsoft.com/ja-jp/power-platform/power-fx/reference/function-navigate

# 次の投稿

https://qiita.com/atsmin77/items/aca397c0f2c6aa615422