メインコンテンツまでスキップ
バージョン: 次へ

リストボックスオブジェクト

配列リストボックス​

配列リストボックスでは、それぞれの列に 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 を表示

Supported standard actions​

The addSubrecord, deleteSubrecord, displaySubrecord, and editSubrecord actions can affect selection list boxes, but are assigned to buttons or menu commands, not to the selection list box itself.

See the standard action compatibility table.

プロパティ一覧​

提供されるプロパティはリストボックスのタイプに依存します。

プロパティ配列リストボックスセレクションリストボックスコレクションまたはエンティティセレクションリストボックス
交互に使用する背景色XXX
背景色XXX
太字XX○
背景色式XX
境界線カラーXXX
境界線スタイルXXX
下XXX
クラスXX○
コレクションまたはエンティティセレクションXX
カラム自動リサイズX○X
カレントの項目X
カレントの項目の位置X
データソースX○X
詳細フォーム名X
ヘッダーを表示XXX
フッターを表示X○X
行をダブルクリックX
ドラッグ有効XXX
ドロップ有効XXX
フォーカス可XXX
フォントXXX
フォントカラーXX○
フォントカラー式XX
フォントサイズXXX
高さ (リストボックス)XXX
高さ (ヘッダー)XXX
高さ (フッター)XXX
追加の空白の行を非表示XXX
フォーカスの四角を隠すXXX
セレクションハイライトを非表示X○X
階層リストボックスX
ハイライトセットX
横揃えXXX
横線カラーXXX
横方向パディングXXX
横スクロールバーXXX
横方向サイズ変更XXX
イタリックXXX
左X○X
マスターテーブルX
メタ情報式X
メソッドX○X
行の移動可X
命名セレクションX
列数XXX
スクロールしない列数XXX
ドラッグしない列数XXX
オブジェクト名XXX
右X○X
行背景色配列X
行コントロール配列X
行フォントカラー配列X
行の高さX
行高さ配列X
行スタイル配列X
選択された項目X
選択モードXXX
シングルクリック編集XXX
ソート可X○X
標準アクション○
スタイル式XX
上XXX
透過XXX
タイプXXX
下線XX○
変数あるいは式XX
縦揃えXXX
縦線カラーXXX
縦方向パディングXXX
縦スクロールバーXXX
縦方向サイズ変更XXX
表示状態XXX
幅○○○

リストボックスの列、ヘッダーおよびフッターにもそれぞれ固有のプロパティがあります。

サポートされるフォームイベント​

フォームイベント返される追加のプロパティ(主なプロパティについては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

追加プロパティ​

リストボックスやリストボックス列オブジェクトにて発生するフォームイベントは、次の追加プロパティを返すことがあります:

プロパティ型説明
areatextリストボックスオブジェクトエリア ("header", "footer", "cell")
areaNametextエリアの名称
columnlongint列番号
columnNametext列の名称
footerNametextフッターの名称
headerNametextヘッダーの名称
horizontalScrolllongint右方向スクロールの場合は正の数値、左方向の場合は負の数値
isRowSelectedboolean行が選択されていれば true、でなければ false
newPositionlongint列あるいは行の変更後の位置
newSizelongint列または行の変更後のサイズ (ピクセル単位)
oldPositionlongint列あるいは行の変更前の位置
oldSizelongint列または行の変更前のサイズ (ピクセル単位)
rowlongint行番号
verticalScrolllongint下方向スクロールの場合は正の数値、上方向の場合は負の数値

"偽" カラムや存在しないカラムにてイベントが発生した場合には、主に空の文字列が返されます。