最近、4Dは、新しいタイプの変数であるコレクションと、それを操作するための多くのメソッドを導入しました。4D v17では、コレクションの内容を簡単に表示することができるようになり、コレクションの可能性が広がりました。どのように?コレクションタイプのリストボックスです。
コレクションを使う大きなメリットは、 異種データを同じカラムに表示できることです。例えば、エンドユーザー向けの「フリー」フィールドを持つコレクションがあるとします。コンテキストによっては、ユーザーが数字を入力することもあれば、テキストを入力することもあり、また、日付を入力することもあります。これで、強制的にキャストすることなく、リストボックスのカラムにすべてを表示することができます。
コレクションを配列に変換する必要はありません。コードもありません。簡単です。
リストボックスの設定方法
まず、リストボックスの種類を「コレクション」にします。次に、データソースとして、コレクションを返す変数または式を入力します。
次に、リストボックスの各列のデータソースを定義する必要があります。簡単です。現在の選択タイプのリストボックスと同じように、プロパティリストの各列に式を入力するだけです。
これを行うには、新しい This コマンドを使います。これは、現在再描画されている要素を含むオブジェクトを返します。リストボックスでは、このコマンドは各行ごとに評価され、現在のコレクション要素のすべての属性にアクセスすることができます。
コンテンツ 式を使用した書式設定
選択型のリストボックスでは、フォントカラー、背景色、フォントスタイル、選択可能および有効の状態を定義する式を入力できますが、各アクションに対してプロジェクトメソッドまたは式を指示する必要があります。コレクションタイプのリストボックスでは、さらに簡単で、これらのパラメータをすべて 1つのプロジェクトメソッド、つまりメタ情報式で定義することができます。
meta式は、表示されている各行に対して評価され、以下の属性を含むオブジェクトを返します。
- fill背景色を定義するCSSカラーを入力します。
- strokeフォントカラーを定義するCSSカラーを指定します。
- fontStyle: 値を “italic “に設定すると斜体スタイルが適用され、そうでなければ “normal “に設定されます。
- fontWeight太字にする場合は “bold”、そうでない場合は “normal “とします。
- textDecorationアンダーラインのスタイルを適用するには、値を “アンダーライン “とし、それ以外は “ノーマル “とします。
- unselectable行を選択可能にするかどうかを指定するブーリアンを入力します。
- disabled行の有効/無効を指定するブール値を入力する.
属性が存在しない場合、4Dはデフォルト値を使用します。
例えば、リストボックスに「Decorate」というメタ式をバインドすることができます。Decorateメソッドには、次のコードが含まれています。
If (This. >10) := ("fill"; "red"; "stroke"; "white"; "fontWeight"; "bold") := ("fill"; "blue")value
$0New object
Else
$0New object
End if
この例では、”value “属性が10より大きい場合、行の背景は赤、文字は白で、太字になります。value “属性が10より小さい場合、行の背景は青になります。
選択した要素を取得する
現在の項目” と “現在の項目の位置”プロパティで、コレクションの現在の要素のオブジェクトとその位置を取得できます。
Selected items” プロパティを使用すると、リストボックスから選択されたアイテムのコレクションを取得することができます。この新しいコレクションを、別のリストボックスのデータソースとして定義することもできます。このように、1行のコードも書かずに、あるリストボックスのサブセットを別のリストボックスに表示することができます。
4Dコマンド側で
リストボックス」テーマの4Dコマンドは、コレクションタイプをサポートするように更新されました。いくつかの例を挙げます。 LISTBOX SORT COLUMN, LISTBOX INSERT COLUMN FORMULA, LISTBOX SET COLUMN FORMULAなどです。詳しくは、4D List box コマンドの完全なリストをご覧ください。