エンティティコレクション型リストボックス:選択された項目の初期化について

リストボックスのプロパティで「選択された項目」に変数名:'select’を定義しました。
On loadで参照しようとしたところ変数名:selectはUndefinedでした。

初期化されないのは不具合だと思いますが、もしかして仕様でしょうか? :frowning:

「選択された項目」は,
ユーザー操作に応じて4Dが値をセットするものですので,
On Loadのタイミングでは未定義が正しいように思います。

実際には,変数ではなく,

Form.listbox.sel

のようなプロパティを使用するかと思いますが,
On Selection Change等のイベントが発生して4Dが値を代入するまでは,
参照することはないプロパティなので,
On Loadでは,とりあえずNullを代入しておくと良いのではないでしょうか。

また,コードでこのプロパティに値を代入するべきではありません。
飽くまで4Dが管理するRead-Onlyなプロパティです。

ご回答ありがとうございます。

On select changeイベントで何も選択されない状態はNullではなく、
0件のエンティティセレクションです。
なので初期状態も同様に0件のエンティティセレクションの方がのぞましいと思います。
nullと0件のエンティティセレクションが同義ということなら問題ないですが… :frowning:

もちろん,https://doc.4d.com/4Dv17/4D/17.1/dataClassnewSelection.305-4179693.ja.htmldataClass.newSelection()>をプリセットすることもできますが,
フォームイベントが発生するころには別のものが代入されているので,あまり重要視していませんでした。

Nullを代入する理由は,

プロパティリストに入力した式がForm.list.selectionのようなプロパティ値だった場合,
Form.list.selectionが存在しない場合,4Dがそれをわざわざ作ることはないからです。
Nullでも良いので,受け皿となるプロパティは_On Load_の時点で少なくとも存在しなければなりません。