こんにちは、あんこ先生です。
新規にレコードを追加したとき、ギャラリーコントロールは追加前に選択していたレコードになっていた。
それで困ったことはありませんか?
これは、レコードの追加修正に関わらずギャラリーコントロールが選択情報を維持しているためです。
例えば、商品コード130番を選択した状態で、新たに200番を新規に追加したとします。
すると、ギャラリーコントロールに200番の商品が追加されますが、130番が選択状態を維持し続けます。
これでは先ほど追加した商品の明細をフォームに表示させられないばかりか、130番を200番の内容だと誤認してしまい、不便ですよね。
そこで、今回の記事では、最後に更新したレコードをギャラリーコントロールで選択状態とさせる方法を紹介します。
実際にコードをコピペして、動作を確認してみましょう!
そもそもギャラリーがなにかわからない、ちょっと復習したいって人はこの記事をどうぞ。
なぜギャラリーコントロールの選択情報を更新するのか
答えはひとつ、ギャラリーコントロールが選択しているレコードを他コントロール等に参照させるためです。
ギャラリーコントロールが選択しているレコードはGalleryxx.Selectedとして多様な活用ができます。
フォームコントロールのItemプロパティをはじめ、グラフへの展開、条件判定など非常に使い勝手がよいレコードです。
そのため、選択情報を操作できることは大きなアドバンテージにつながります。
ギャラリーコントロールの選択初期値について
ギャラリーコントロールの初期値は、Defaultプロパティで設定できます。
通常空欄のため、アプリ起動直後は先頭のレコードになります。
ここにレコードを指定すれば、該当するレコードが選択状態になります。
//レコード選択例
LookUp(M_PriceList,Code=106)
DropDown.Selected
ただし、初期値なので他を選択すると元には戻りません。
その場合、Reset関数を実行することで、再度Defaultプロパティを参照させることができます。
なお、指定したレコードが存在しない場合は先頭レコードが選択されます。
フォームコントロールの最終更新レコードについて
フォームコントロールの最終更新レコードは、LastSubmitプロパティで取得できます。
LastSubmitプロパティは、フォームコントロールで更新したレコードを戻り値として保持します。
つまり、ギャラリーコントロールのDefaultプロパティに次のコードを埋め込めば実現できるわけです。
Formxx.LastSubmit
とても簡単でしたね。
フォームコントロール以外で更新した場合
注意点がひとつあります。
LastSubmitプロパティをPatch関数などの参照元として使用、レコード更新した場合でも、更新前の値を保持します。
この時、フォームコントロールのItemプロパティをGalleryxx.Selectedにした場合は、更新後の値を表示します。
//実行した更新コード
Patch(M_PriceList,Formxx.LastSubmit,{PurchasePrice:400})
該当レコードを削除した場合
Formxx.LastSubmitで保持しているレコードをRemove関数などで削除した場合は空になります。
次にレコードを更新すると、そのレコードを保持します。
活用事例
最後に追加したデータを削除する
Remove(M_PriceList,Formxx.LastSubmit)
レコードを追加のみしていく前提の運用ですが、上記のアイコンを押せば最後に追加したレコードのみ確実に削除できます。
2回目以降はFormxx.LastSubmitの中身が空になるため、それ以上削除されることはありません。
一時的なレコード修正のログを取得する
Collect(_Log,Formxx.LastSubmit)
フォームコントロールのOnSuccessプロパティに上記コードを埋め込めばログが取得できます。
コレクションなのでアプリを終了すると消えます。
必要ならリストなどに書き込みましょう。
まとめ
今回は最後に更新したレコードをギャラリーコントロールで選択させる方法を紹介しました。
Defaultプロパティに1行埋め込むだけなので簡単でしたね。
さっそくアプリに組み込んで動作させてみましょう!
つまり、ここにフォームで最後に更新したレコードを指定すればよいのね!