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

List Box Object

配列リストボックス

配列リストボックスでは、それぞれの列に 4D の 1次元配列を割り当てなければなりません。 ポインター配列を除きすべてのタイプの配列を使用できま す。 行数は配列の要素数により決定されます。

デフォルトで 4D は各列に “ColumnX” という名前を割り当てます。 You can change it, as well as other column properties, in the column properties. 列ごとの表示フォーマットを指定するには、OBJECT SET FORMAT コマンドも使用できます。

配列タイプのリストボックスは、特別なメカニズムをもつ 階層モード で表示することができます。

配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 列に 選択リスト を割り当てて、データ入力を制御することもできます。 リストボックスのハイレベルコマンド (LISTBOX INSERT ROWSLISTBOX 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 コマンドを使用します。

データソースがエンティティセレクションの場合、リストボックス側に対しておこなった変更は自動的にデータベースに保存されます。 その一方で、データベース側に対しておこなった変更は、該当エンティティがリロードされてはじめてリストボックス側に反映されます。

データソースがコレクションの場合、リストボックス内の値に変更をおこなった場合、その変更はコレクションにも反映されます。 その一方で、コレクションに対して、たとえば Collection クラスの様々な関数を使用して変更をおこなった場合、コレクション変数を自らに再代入することにより明示的に 4D に通知する必要があり、それによってリストボックスのコンテンツは更新されます。 例:

myCol:=myCol.push("new value") // リストボックスに new value を表示

プロパティ一覧

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

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

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

フォームイベント

フォームイベント取得される追加プロパティ (メインプロパティについてはForm event 参照)コメント
On After Edit
  • column
  • columnName
  • row
  • On After Keystroke
  • column
  • columnName
  • row
  • On After Sort
  • column
  • columnName
  • headerName
  • 複合フォーミュラはソート不可
    (例: This.firstName + This.lastName)
    On Alternative Click
  • column
  • columnName
  • row
  • 配列リストボックスのみ
    On Before Data Entry
  • column
  • columnName
  • row
  • On Before Keystroke
  • column
  • columnName
  • row
  • On Begin Drag Over
  • column
  • columnName
  • row
  • On Clicked
  • column
  • columnName
  • row
  • On Close Detail
  • row
  • カレントセレクション&命名セレクションリストボックスのみ
    On Collapse
  • column
  • columnName
  • row
  • 階層リストボックスのみ
    On Column Moved
  • columnName
  • newPosition
  • oldPosition
  • On Column Resize
  • column
  • columnName
  • newSize
  • oldSize
  • On Data Change
  • column
  • columnName
  • row
  • On Delete Action
  • row
  • On Display Detail
  • isRowSelected
  • row
  • On Double Clicked
  • column
  • columnName
  • row
  • On Drag Over
  • area
  • areaName
  • column
  • columnName
  • row
  • On Drop
  • column
  • columnName
  • row
  • On Expand
  • column
  • columnName
  • row
  • 階層リストボックスのみ
    On Footer Click
  • column
  • columnName
  • footerName
  • 配列、カレントセレクション&命名セレクションリストボックスのみ
    On Getting Focus
  • column
  • columnName
  • row
  • 追加プロパティの取得はセル編集時のみ
    On Header Click
  • column
  • columnName
  • headerName
  • On Load
    On Losing Focus
  • column
  • columnName
  • row
  • 追加プロパティの取得はセル編集完了時のみ
    On Mouse Enter
  • area
  • areaName
  • column
  • columnName
  • row
  • On Mouse Leave
    On Mouse Move
  • area
  • areaName
  • column
  • columnName
  • row
  • On Open Detail
  • row
  • カレントセレクション&命名セレクションリストボックスのみ
    On Row Moved
  • newPosition
  • oldPosition
  • 配列リストボックスのみ
    On Selection Change
    On Scroll
  • horizontalScroll
  • verticalScroll
  • On Unload

    追加プロパティ

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

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

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