Sequence関数とForAllの組み合わせでループを実現で実現することができます。
サンプルについて
このサンプルは明細登録画面を作成するの作成例内での実装になります。
本サンプルの処理概要
- ①行追加ボタンを押下した時、正しく行が挿入される
- 本サンプルでは途中の行での挿入機能は設けておりません。
常に一番下に新しい番号が採番されるイメージになります。 - ②行削除を行ったとき
- 1行目から最後の行まで連番で採番しなおすようにします。
実装について
- 採番用に変数を宣言
- 採番用に変数COUNT_LINNOを宣言します。COUNT_LINNOは明細画面生成時に1として宣言され、行追加ボタンを押下するごとに1カウントアップしていく変数です。
- ①行挿入の機能の実装について
- 行追加ボタンのOnSelectプロパティでCOUNT_LINNOをカウントアップし、コレクションにPatchをかけます。
- ②行削除の機能の実装について
- 行削除を実行させるボタンのOnSelectプロパティで以下を記述。
ForAll関数で実行している処理はコレクションに保存した明細レコード全ての行番号をパッチしなおしています。
コード中のValueプロパティは、Sequence関数を作成で作成された連番のうち「何番目をForAllが実行しているのか?」を示しています。
ForAll関数の中で行数カウント用の変数に更新をかけることはできないためサンプルのようなコードとなっています。
… したがって、UpdateContext、Clear、および ClearCollect 関数は、効果の影響を受けやすい変数を保持するために簡単に使用できるため、 ForAll 関数で使用することはできません。