ギャラリーの選択に合わせて、詳細を並べて表示し、選択アイテムを次々切り替えながら確認する際は、ギャラリーでアイテムを選択していくよりも、ボタンで上下移動できたほうが便利な場合があります。
動画でも解説しました
気に入ったら高評価・チャンネル登録お願いします。用意したリスト
ギャラリーに行番号を付ける
ギャラリーのItemsプロパティに以下
With({_list: test_list1},
ForAll(Sequence(CountRows(_list)),//リストの行数分繰り返し
Patch(Index(_list, Value),{Row:Value})//現在行の番号をRow列に追加
)
)
これで行番号としてRow列が追加されます。
この右側のボタンのOnSelectプロパティに選択行を移動する数式を入れていきます。
最初の行を選択する
ボタンのOnSelectプロパティに以下
Select(Gallery1,1)
Select関数は画面内のコントロールを選択する関数ですが、
対象がギャラリーの場合は第2引数に数字を入れることでその行を選択することができます。
最後の行を選択する
ボタンのOnSelectプロパティに以下
Select(Gallery1,Gallery1.AllItemsCount)
第2引数にギャラリーの全行数を入れることで、最後の行を選択することができます。
現在の選択行から上に移動
現在の選択行を取得するために、はじめに追加したRowの値を活用します。
ボタンのOnSelectプロパティに以下
With({_selectrow:Gallery1.Selected.Row - 1},//現在行より1少ない番号を設定
If(_selectrow > 0, //0より大きい場合のみ実行
Select(Gallery1,_selectrow)) //設定した行番号を選択
)
現在行を取得して、-1することで目的の行番号を取得します。
Select関数でエラーにならないように、目的の行が0より大きい場合のみ実行
現在の選択行から下に移動
With({_selectrow:Gallery1.Selected.Row + 1},//現在行より1多い番号を設定
If(_selectrow <= Gallery1.AllItemsCount,//ギャラリーの最大行数より少ない場合のみ実行
Select(Gallery1,_selectrow) //設定した行番号を選択
)
)
上に移動する場合とほぼ同じで、現在行に+1しています。
If文も最大行数と同じか小さい場合のみ実行して、エラーを回避しています。
10行移動する
先ほど+1・-1した箇所の数字を大きくすれば、その数値の行数分移動することが可能です。
##注意
今回紹介した方法は、ギャラリーの順序を並び替えない前提です。
どうしても並び替える場合は、行番号を付け直すなどの対策が必要ですね。