リストボックスオブジェクト
配列リストボックス
配列リストボックスでは、それぞれの列に 4D の 1次元配列を割り当てなければなりません。 ポインター配列を除きすべてのタイプの配列を使用できま す。 行数は配列の要素数により決定されます。
デフォルトで 4D は各列に “ColumnX” という名前を割り当てます。 これは他のカラムプロパティ同様、 カラムプロパティ 内で変更することができます。 それぞれのカラムにおける表示フォーマットは、 OBJECT SET FORMAT コマンドを使用することで定義することもできます。
配列タイプのリストボックスは、特別なメカニズムをもつ 階層モード で表示することができます。
配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 カラムに 選択リスト を割り当てて、データ入力を制御することもできます。
リストボックスのハイレベルコマンド (LISTBOX INSERT ROWS や LISTBOX DELETE ROWS 等) や配列操作コマンドを使用して、カラムの値を管理します。 たとえば、列の内容を初期化するには、以下の命令を使用できます:
ARRAY TEXT(varCol;size)
リストを使用することもできます:
LIST TO ARRAY("ListName";varCol)
警告: 異なる配列サイズの列がリストボックスに含まれる場合、もっとも小さい配列サイズの数だけを表示します。 そのため、各配列の要素数は同じにしなければなりません。 リストボックスの列が一つでも空の場合 (ランゲージにより配列が正しく定義またはサイズ設定されなかったときに発生します)、リストボックスは何も表示しません。
セレクションリストボックス
このタイプのリストボックスでは、列ごとにフィールド (例: [Employees]LastName) や式を割り当てます。 式は 1つ以上のフィールド (たとえば [Employees]FirstName+“ ”[Employees]LastName) または単にフォーミュラ (たとえば String(Milliseconds)) を使用できます。 式にはプロジェクトメソッド、変数、あるいは配列項目も指定できます。 またLISTBOX SET COLUMN FORMULA や LISTBOX INSERT COLUMN FORMULA コマンドを使用して、カラムをプログラムで変更することもできます。
それぞれの行はセレクションのレコードを基に評価されます。セレクションは カレントセレクション または 命名セレクションです。
デー タソースがカレントセレクションである場合、データベースに対しておこなわれた変更はリストボックスに自動で反映され、またリストボックスへの変更も自動で データベースに適用されます。 つまりカレントセレクションは常に両方で同じです。
コレクションまたはエンティティセレクションリストボックス
このタイプのリストボックスでは、各カラムに式が割り当てられている必要があります。 各行の中身はコレクション要素ごと、あるいはエンティティセレクションのエンティティごとに評価されます。
コレクションの各要素、またはエンティティセレクションの各エンティティは、This キーワードを用いてオブジェクトとして取得します。 カラムの式にはプロパティパス、プロジェクトメソッド、変数、あるいはフォーミュラが指定可能で、This を通して得た各エンティティあるいはコレクション要素オブジェクトが利用できます。例: This.<propertyPath> (あるいはスカラー値のコレクションの場合は This.value)。 カラムをプログラムで変更するには、LISTBOX SET COLUMN FORMULA および LISTBOX INSERT COLUMN FORMULA コマンドを使用します。
データソースがエンティティセレクションの場合、リストボックス側に対しておこなった変更は自動的にデータベースに保存されます。 その一方で、データベース側に対しておこなった変更は、該当エンティティがリロードされてはじめてリストボックス側に反映されます。
エンティティが削除されると、その参照は undefined の値とともにエンティティセレクションに 残り、リストボックスには空白の行が表示されます。 この場合、.clean() 関数を呼び出すことで、削除されたエンティティ参照が含まれないエンティティセレクションを新規に取得することができます。
データソースがコレクションの場合、リストボックス内の値に変更をおこなった場合、その変更はコレクションにも反映されます。 その一方で、コレクションに対して、たとえば Collection クラスの様々な関数を使用して変更をおこなった場合、コレクション変数を自らに再代入することにより明示的に 4D に通知する必要があり、それによってリストボックスのコンテンツは更新されます。 例:
myCol:=myCol.push("new value") // リストボックスに new value を表示
プロパティ一覧
提供されるプロパティはリストボックスのタイプに依存します。
| プロパティ | 配列リストボックス | セレクションリストボックス | コレクションまたはエンティティセレクションリストボックス |
|---|---|---|---|
| 交互に使用する背景色 | X | X | X |
| 背景色 | X | X | X |
| 太字 | X | X | X |
| 背景色式 | X | X | |
| 境界線スタイル | X | X | X |
| 下 | X | X | X |
| クラス | X | X | X |
| コレクションまたはエンティティセレクション | X | X | |
| カラム自動リサイズ | X | X | X |
| カレントの項目 | X | ||
| カレントの項目の位置 | X | ||
| データソース | X | X | X |
| 詳細フォーム名 | X | ||
| ヘッダーを表示 | X | X | X |
| フッターを表示 | X | X | X |
| 行をダブルクリック | X | ||
| ドラッグ有効 | X | X | X |
| ドロップ有効 | X | X | X |
| フォーカス可 | X | X | X |
| フォント | X | X | X |
| フォントカラー | X | X | X |
| フォントカラー式 | X | X | |
| フォントサイズ | X | X | X |
| 高さ (リストボックス) | X | X | X |
| 高さ (ヘッダー) | X | X | X |
| 高さ (フッター) | X | X | X |
| 追加の空白の行を非表示 | X | X | X |
| フォーカスの四角を隠す | X | X | X |
| セレクションハイライトを非表示 | X | X | X |
| 階層リストボックス | X | ||
| ハイライトセット | X | ||
| 横揃え | X | X | X |
| 横線カラー | X | X | X |
| 横方向パディング | X | X | X |
| 横スクロールバー | X | X | X |
| 横方向サイズ変更 | X | X | X |
| イタリック | X | X | X |
| 左 | X | X | X |
| マスターテーブル | X | ||
| メタ情報式 | X | ||
| メソッド | X | X | X |
| 行の移動可 | X | ||
| 命名セレクション | X | ||
| 列数 | X | X | X |
| スクロールしない列数 | X | X | X |
| ドラッグしない列数 | X | X | X |
| オブジェクト名 | X | X | X |
| 右 | X | X | X |
| 行背景色配列 | X | ||
| 行コントロール配列 | X | ||
| 行フォントカラー配列 | X | ||
| 行の高さ | X | ||
| 行高さ配列 | X | ||
| 行スタイル配列 | X | ||
| 選択された項目 | X | ||
| 選択モード | X | X | X |
| シングルクリック編集 | X | X | X |
| ソート可 | X | X | X |
| 標準アクション | X | ||
| スタイル式 | X | X | |
| 上 | X | X | X |
| 透過 | X | X | X |
| タイプ | X | X | X |
| 下線 | X | X | X |
| 変数あるいは式 | X | X | |
| 縦揃え | X | X | X |
| 縦線カラー | X | X | X |
| 縦方向パディング | X | X | X |
| 縦スクロールバー | X | X | X |
| 縦方向サイズ変更 | X | X | X |
| 表示状態 | X | X | X |
| 幅 | X | X | X |
リストボックスの列、ヘッダーおよびフッターにもそれぞれ固有のプロパティがあります。
サポートされるフォームイベント
| フォームイベント | 返される追加のプロパティ(主なプロパティについてはForm event を参照してください) | コメント |
|---|---|---|
| On After Edit | ||
| On After Keystroke | ||
| On After Sort | 複合フォーミュラはソート不可 (例: This.firstName + This.lastName) | |
| On Alternative Click | 配列リストボックスのみ | |
| On Before Data Entry | ||
| On Before Keystroke | ||
| On Begin Drag Over | ||
| On Clicked | ||
| On Close Detail | カレントセレクション&命名セレクションリストボックスのみ | |
| On Collapse | 階層リストボックスのみ | |
| On Column Moved | ||
| On Column Resize | ||
| On Data Change | ||
| On Delete Action | ||
| On Display Detail | ||
| On Double Clicked | ||
| On Drag Over | ||
| On Drop | ||
| On Expand | 階層リストボックスのみ | |
| On Footer Click | 配列、カレントセレクション&命名セレクションリストボックスのみ | |
| On Getting Focus | 追加プロパティの取得はセル編集時のみ | |
| On Header Click | ||
| On Load | ||
| On Losing Focus | 追加プロパティの取得はセル編集完了時のみ | |
| On Mouse Enter | ||
| On Mouse Leave | ||
| On Mouse Move | ||
| On Open Detail | カレントセレクション&命名セレクションリストボックスのみ | |
| On Row Moved | 配列リストボックスのみ | |
| On Scroll | ||
| On Selection Change | ||
| On Unload | ||
| On Validate |
追加プロパティ
リストボックスやリストボックス列オブジェクトにて発生するフォームイベントは、次の追加プロパティを返すことがあります:
| プロパティ | 型 | 説明 |
|---|---|---|
| area | text | リストボックスオブジェクトエリア ("header", "footer", "cell") |
| areaName | text | エリアの名称 |
| column | longint | 列番号 |
| columnName | text | 列の名称 |
| footerName | text | フッターの名称 |
| headerName | text | ヘッダーの名称 |
| horizontalScroll | longint | 右方向スクロールの場合は正の数値、左方向の場合は負の数値 |
| isRowSelected | boolean | 行が選択されていれば true、でなければ false |
| newPosition | longint | 列あるいは行の変更後の位置 |
| newSize | longint | 列または行の変更後のサイズ (ピクセル単位) |
| oldPosition | longint | 列あるいは行の変更前の位置 |
| oldSize | longint | 列または行の変更前のサイズ (ピクセル単位) |
| row | longint | 行番号 |
| verticalScroll | longint | 下方向スクロールの場合は正の数値、上方向の場合は負の数値 |
"偽" カラムや存在しないカラムにてイベントが発生した場合には、主に空の文字列が返されます。