おそらく、これまでにも LISTBOX SELECT ROWコマンドを何度も使って、エンティティを選択するために、各エンティティをループしていました。 4D v18 R3では、このプロセスを簡略化するために新しい LISTBOX SELECT ROWSコマンドで簡略化されました。
エンティティ選択 リストボックス
この新しい LISTBOX SELECT ROWSコマンドは、パラメータとしてエンティティの選択を受け付けます。エンティティ選択に一致する行は、たった1行のコードで選択できます。また、選択された行への追加や行からの削除も簡単に行えます。
例
次のコードは、現金払いの顧客のエンティティセレクションを作成し、リストボックスでエンティティセレクションの行を選択するものです。
C_OBJECT($selection)
$selection :=ds.Invoices.query("payment=:1"; "Cash")
LISTBOX SELECT ROWS (*; "Invoices";$selection;lk replace selection)
出来上がったリストボックスはこちらです。
コレクションリストボックス
新しい LISTBOX SELECT ROWSコマンドも同じ、簡単な原理を使用しています!単純に、選択したいオブジェクト参照を含むコレクションをコマンドに渡します。
例
次のコードでは、Form.payments コレクションを使用して、指定した支払範囲内のクライアントの行を選択します。
Form.payments コレクションを使用します。
[ {name:Cash,min:100,max:500}, {name:Cheque,min:200,max:1200}, {name:Credit card,min:700,max:1500}, {name:Gift card,min:800,max:900} ]
C_COLLECTION($collection)
$collection :=Form.payments.query("min <= :1 and max >= :1";250)
LISTBOX SELECT ROWS (*; "Payments";$collection;lk replace selection)
出来上がったリストボックス。
この新しいコマンドの詳細については、上記のHDIをダウンロードし、ドキュメントセンターを参照してください。