Power Apps のギャラリーコントロールで躓いてしまわないために 


# はじめに

Power Apps のギャラリーコントロールでは、以下のように、指定したデータソースのデータを一覧表示することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5939e1ef-4e0d-f413-79ae-ba06b604d327.png)

※以下の SharePoint リストのデータを参照

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d1df71df-037c-e9bc-b8bf-8ab1bbd09e42.png)

上記だと簡素な感じがしますが、実は、これまで本ブログで時々画面ショットで出てきた、以下のアプリの以下の部分はすべてギャラリーで出来ています (というかギャラリーだらけです)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/00ed0776-604e-66bb-f7e6-41a055d768b6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a7965b2e-9cba-de07-ea54-59e56a06a817.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/22e7fe6e-35f6-50bc-27a9-393d9e6066a6.png)

個人的に、ギャラリーコントロールは非常に強力で、使い方次第で結構色々なことが出来るのですが、**初めて利用する場合、データソースを指定した後何をすればいいの？なんか見たい列の情報が見えない、レイアウトを変更したいんだけどどうすればいいの？**、みたいな疑問を感じる人もいると思っています。

そのため、今回は、ギャラリーで躓いてしまわないために、個人的に最低限おさえておきたいこと思うことについて説明します。

# レイアウトの変更

ギャラリーのレイアウトは以下から変更できます。
デフォルトでは、「画像、タイトル、サブタイトル」となっており、また、データソースの列から勝手に描画してくれますが、恐らくそのまま使えるというケースはいないと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8908038c-1b7d-525b-501a-2e8eab83ba12.png)

個人的には空白を選ぶことが多いですが、一旦、「タイトル、サブタイトル、本文」に変更してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/47d6caf3-5c3f-c31f-dbf4-a7165ccb4e5b.png)

とりあず 3 つの列が縦に並んでいる感じになりました。

いずれにせよ、レイアウトの変更だけで完成することはないので、一旦、ここでは、レイアウトは変更できる、もし、いずれかのレイアウトにして、何となくしっくりくるものがあれば、そこを起点に次の作業にとりかかるという点を認識しておいてください。

:::note warn
空白以外のレイアウトで自動で追加されたコントロール、例えば、Title という名前のラベルを削除するとエラーが表示される場合があります。

これは、その他の自動で追加された部品の位置やサイズが Title ラベルを参照しているためです。

このようなエラーが出た場合は、**赤いエラーのマークの[数式バーで編集]を選択し**、適当な位置、サイズの数値に変更します。複数個所あるため、一つずつエラーを消していきます。もしくは、一度エラーが出ているコントロールも削除し、位置からラベルを追加します。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4b5535a1-a38e-447c-6722-9a5db4fe450d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/84b31f0d-4201-4048-6603-be1a4e589c51.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5b123349-d945-5874-622e-9c3b2939eae0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/041e2cec-7ab1-c9dd-643d-a547158f0cdd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2f2af40a-dcb1-b8b8-c063-c4c57456c426.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0b4bf111-3dc5-676e-cde2-d35fbe13c609.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/83fe31b8-0e7c-a918-d730-02cdbc7da61d.png)


# ギャラリーのサイズの変更

ギャラリーのサイズ自体を調整したいと思います。

ギャラリーでは部品が色々と入れ子になっているため、間違って違う箇所を選んでしまう場合があると思いますが、ギャラリー自体のサイズを変更する場合は、スクロールバーの辺りか、ツリービューからギャラリーコントロールの名前を選択した状態でサイズを調整します。
選択さえできれば、サイズの調整は、PowerPoint みたいな感じで出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/13ee3852-532c-2cd0-ea5c-856bdbc9f2ec.png)

今回は、一旦こんな感じで伸ばしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/547e39af-35c8-49f3-f85b-863736be8b6e.png)

# 各コントロールの位置、サイズを変更する

各コントロールの位置やサイズを調整したい場合があると思います。

この場合は、**一番上のデータの該当のコントロールを選択するか**、ツリービューでコントロール名をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3c2a186f-b927-cda0-ee1e-7db268a88995.png)

そうするとコントロールが選択できるため、サイズ調整や移動が可能になります。
今回は、サイズだけ少し小さくしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/87f7af48-a52a-c382-2e49-8594f9e188db.png)

# ギャラリーにコントロールを追加する、削除する

ギャラリーに他のコントロールを追加したり、既定のコントロールを削除したい場合があると思います。

まず、削除は、ツリービューまたは**一番上のデータの該当のコントロールを選択**すれば削除できます。
今回は、この矢印みたいなアイコンを消してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6bcdd411-ca53-757d-94ef-9ff0fcadc6cf.png)

追加をする際は、ツリービューでいずれかのコントロールを追加した状態で挿入したいコントロールを選びます。

:::note warn
最近は大丈夫と思いますが、コントロールが上手くギャラリーに入らない場合は、ツリービューでギャラリー内の一番下のコントロールを選択した状態で挿入してみてください。
:::

無事にボタンが追加できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b1f0eff5-c770-acf9-4c4c-6185602c4f34.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0525c859-3b6b-7139-73f1-32281fbf3c4a.png)

位置をずらしてついでにラベルを二つほど追加してみます。
既にある部品を「Ctrl+C」、「Ctrl+V」でコピーして追加することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c819b156-7e78-a426-caa3-803d4f59898f.png)

# テンプレートのサイズを変更する

ギャラリー一つ一つのデータのサイズを変更したいということがあると思います。
例えば、以下の場合、縦幅をもう少し小さくしたい、みたいなイメージです。

この場合、以下の画面のようにギャラリー全体を選択した後に表示される編集アイコンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/65a13c03-1587-4b49-c8b5-0f7666998552.png)

そうすると、以下のように一番上だけが選択された状態になります。
こちらの一番上のデータが **テンプレートとなり、下のデータにも反映されることになります。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/61060ff2-2b7f-0147-24b8-3e55a5019b95.png)

:::note
ギャラリーの一番上のデータ、つまりテンプレ―ト内のコントロールの変更も、テンプレートの変更として下のデータにも反映されることになります
:::

今回は少し幅を小さくしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b81e2163-2b78-d00d-271f-b1a9de91177a.png)

# ギャラリーに表示される列の情報を変更する

既定で表示された列のまま使えるということはないと思いますし、各コントロールに表示される列の情報を変更したいと思います。

とりあえず、Subtitle2 となっているラベルコントロールに表示される情報を変えたいと思います (Subtitle2 という名前がついていますがラベルです)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d2190a26-ba04-f500-2b3f-c5a99f8c646b.png)

上のように選択して、`[Text]` プロパティを見てみると、**ThisItem.Address** となっていることが確認できます。

この ThisItem について、ギャラリーでは、データソースのそれぞれのレコード (行) が以下のようなイメージになるのですが、各行のことを ThisItem と表現しています (強いて言えば、この行のデータ、みたいなイメージでしょうか)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b113da0e-1ab7-9522-9614-16aa197efb89.png)

例えば、後述もしますが、アプリを利用している際、いずれかの行を選択することがあります。この際、選択された行のデータを他の画面などに渡したい時、 以下のように、ThisItem (この行のデータ) を利用することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4b76a500-8cbf-fe43-9f22-799f821a9c8a.png)

今回は、以下のように **ThisItem.Date (この行のデータの Date 列)** に変えてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/bffd4bb9-eecf-833d-3a61-da42cbf5eb7c.png)

```
"注文日：" & ThisItem.Date
```

:::note
ダブルクォーテーションで囲った文字と & を利用することで、自分で入力した文字と、列のデータ (文字) を連結することが出来ます。
:::

各ラベルコントロールに表示する列名、文字のサイズ、位置などを整えていきます。
また、必要に応じて以下のように PowerPoint みたいにコントロール同士の配置を整えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3e515c64-0437-e248-439e-128c99f92a16.png)

:::note
アップデートがあり、ギャラリー内に表示する列について、以下のようにして指定できるようになりました。
こちらの方が圧倒的に分かりやすいですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/337c22b3-5c78-6ae9-8369-6c7bef956ec9.png)


:::

# 折り返しの数

今回は一旦このままでいこうと思いますが、折り返しの数を変更することで、一列のデータから、2 列や 3 列のデータにすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6192fd18-64cf-2213-5d3f-017e54026e0c.png)

# スクロールバーの表示

データの行数が多くなった際にスクロールバーを表示させるかさせないか変更する場合は以下のトグルを使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a20d9451-3e20-bfd8-b188-f28a8ba8b0d7.png)

# Gallery.selected/フォームとの連携

ギャラリーで気を付けたいのは、ギャラリーにデータソースの全部の列を表示させようとすると見た目が窮屈になってしまうことです。

そのため、一覧表示する際には代表的な列に留めて置き、詳細を確認したいとき、編集したいときなどにはフォームコントロールと連携するのが良いかと思います。

フォームコントロールの基本は以下の記事を参考になさってください。

https://qiita.com/Takashi_Masumori/items/62637ba0c37d8e60cbf3

今回は、簡易的ですが、別ページに以下のようなフォームコントロールを追加しておき、データソースを同じにしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f34ad394-040f-99c5-3ca1-49137d803f28.png)

そして、`[Items]`プロパティに、**ギャラリー名.Selected** とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8b50867c-7775-4487-99b5-20d4710e9eff.png)

今回は、以下のような感じです。

```
Gallery1.Selected
```

こちらは、ギャラリーで選択された行を意味します。

:::note
上述したように、ThisItem を変数に格納し、変数名を`[Items]`プロパティに設定することも可能です。
```
Set(varSelectedItem,ThisItem)
```
:::

ギャラリー側のボタンの`[OnSelect]`プロパティを以下のようにページを移動するようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b6563068-032a-4f49-98c3-4cefdcdadc3f.png)

ボタンを押すとページを移動し、ギャラリー内の選択した行のデータがフォームに表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ee41745f-973d-a3f3-d2c1-7d3f5c1cdfd1.png)

# まとめ

今回は、ギャラリーで躓いてしまわないために、個人的に最低限おさえておきたいと思うことについて説明しました。

上述の通り使い方次第で色々なことが出来ますし、頻繁に利用するコントロールだと思いまので、少しでも参考になれば幸いです。

また、次回は、ギャラリーの見た目を少し良くする (個人的に良いと思っている) 方法について説明します。