フォームエディターでリストボックスオブジェクトを選択すると、プロパティリストには専用のテーマやプロパティが表示されます。リストボックス列 (リストボックス列特有のプロパティ参照) や列ヘッダー (リストボックスヘッダー特有のプロパティ参照) を選択すると追加の専用プロパティが利用できるようになります。
このテーマにはデータソースプロパティがあり、リストボックスのタイプを設定できます:

- カレントセレクションオプションを選択すると、指定したテーブルのカレントセレクションの各レコードごとに式、フィールド、メソッドが評価されます。
- 命名セレクションオプションを選択すると、指定した命名セレクションに含まれる各レコードごとに式、フィールド、メソッドが評価されます。
- 配列オプションを選択すると、リストボックスの各行に配列要素を表示することができます。
SQLクエリーの結果をリストボックスに取得するためには、配列タイプを選択しなければなりません (リストボックスにSQLクエリの結果を表示する参照)。
このテーマはセレクションタイプのリストボックスの場合にのみ表示されます。カレントセレクションの場合マスターテーブルプロパティが表示され、命名セレクションの場合命名セレクションプロパティが表示されます。
- マスターテーブル: 使用するカレントセレクションが属するテーブルを指定します。このテーブルとそのテーブルのカレントセレクションが、リストボックスの列に割り当てられたフィールドの参照を形成します (フィールド参照やフィールドを含む式)。ある列が他のテーブルのフィールドを参照しているとしても、表示される行の数はマスターテブルのカレントレコード数となります。
このプロパティに割り当てられるメニューには、データベースのすべてのテーブルが表示されます。フォームがどのテーブルに属しているか (テーブルフォームの場合) あるいは属していないか (プロジェクトフォーム) は関係ありません。デフォルトでデータベースの最初のテーブルがプロパティに表示されます。このプロパティの動作に関する詳細はリストボックスにフィールドを表示するを参照してください。 - 命名セレクション: 使用する命名セレクションの名前を指定します。有効な命名セレクションの名前を入力しなければなりません。使用できるのはプロセスあるいはインタープロセス命名セレクションです。リストボックスの内容はこの命名セレクションに含まれるセレクションに基づきます。選択された命名セレクションは、リストボックスが表示される時点で存在し、有効でなければなりません。そうでない場合、リストボックスは空で表示されます。名前エリアを空にしても、リストボックスは空で表示されます。
注: 命名セレクションはソート済みのレコードリストです。これはセレクション中のカレントレコードと並び順をメモリーに保持するために使用されます。詳細は4Dランゲージリファッレンスの命名セレクションを参照してください。
このテーマには、基本的なオブジェクトプロパティがすべて集められています。
- 列数: リストボックスに表示される列の数 (デフォルトは1)。コンテキストメニューを使用して (列または列ヘッダをクリック)、列数を変更することができます (列の追加、複製、削除):
- 固定列の数: 実行時にドラッグで移動できない列の数。この値は、リストボックスの一番目の列から数えた固定列の数を表わします。すべての列の移動を禁止するに は、この値と列の合計数とを同じにしなくてはなりません。このプロパティは非表示の列も計算に入れる点に注意してください。
このプロパティのデフォルト値は、階層モードが無効の (階層リストボックスオプションがチェックされていない) 場合0であり、これはすべての列が移動可能であることを意味します。階層モードが有効の場合 (配列タイプのリストボックスのみ)、このオプションは常に1以上です。 - 列のヘッダを表示: 列ヘッダの表示/非表示を指定します (デフォルトは表示)。
- ハイライトセット: このプロパティはセレクションタイプのリストボックスでのみ利用できます。このプロパティを使用して、リストボックス中でハイライトされたレコードを管理するために使用するセット名を指定します (配列データソースが指定されている場合、リストボックスに割り当てた変数と同じ名前のブール配列を使用します)。
4DはListBoxSet1という名前のデフォルトセットを作成しますが、必要に応じてこの名前を変更できます。セットはローカル、プロセスおよびインタープロセスセットを使用できます (ネットワークトラフィックを制限するため、"$LBSet"のような名前のローカルセットの使用を推奨します)。指定されたセットは4Dが自動で管理します。ユーザーが1つ以上の行を選択すると、セットは即座に更新されます。プログラムを使用して行を選択したい場合、" セット"テーマのコマンドをこのセットに適用できます。
注:
- リストボックス行のハイライトステータスとテーブルレコードのハイライトステータスは完全に独立しています。
- “ハイライトセット”プロパティに名前が指定されていない場合、リストボックス中で行を選択することはできません。
- 行スタイル配列 (配列タイプリストボックス) / 行スタイル (セレクションタイプリストボックス): リストボックスの各行にカスタマイズされた文字スタイルを適用するために使用します。
- 配 列タイプのリストボックスの場合、倍長整数配列名を入力します。この配列の各要素がリストボックスの行に対応します。この配列のサイズは列に割り当てた配 列と同じでなければなりません。(メソッドを使用して) 配列を埋めるためには、“Font Styles”テーマの定数を使用します。定数を加算することでスタイルを合成できます。リストボックスのプロパティで設定したスタイルを行に適用するた めには、配列の対応する要素に値-255を渡します。
- セレクションタイプのリストボックスの場合、式または変数 (配列を除く) を入力します。式や変数は各行が表示される際に評価されます。式を指定する際にフォーミュラエディターを使用することができます。これを行うには、エリア を選択したときに表示される[...]ボタンをクリックします。“Font Styles”テーマの定数を使用することができます。
以下の例は変数名を使用しています。行スタイルエリアにCompanyStyleと入力され、フォームメソッドにOn Display Detailで実行される以下のコードが書かれています:
- 行フォントカラー配列 (配列タイプリストボックス) / 行フォントカラー (セレクションタイプリストボックス): リストボックスの各行にカスタマイズしたフォントカラーを適用するために使用します。RGBカラーを使用しなければなりません。この点に関する詳細は4D ランゲージリファレンスマニュアルのOBJECT SET RGB COLORSコマンドの説明を参照してください。
- 配列タイプのリストボックスの場合、倍長整数配列名を入力します。この配列の各要素がリストボックスの行に対応します。この配列のサイズは列に割り当てた配列と同じでなければなりません。“SET RGB COLORS”テーマの定数を使用できます。リストボックスプロパティで設定したフォントカラーを行に適用するには、配列の対応する要素に値-255を渡します。
- セ レクションタイプのリストボックスの場合、式または変数 (配列を除く) を入力します。式や変数は各行が表示される際に評価されます。式を指定する際にフォーミュラエディターを使用することができます。これを行うには、エリア を選択したときに表示される[...]ボタンをクリックします。“SET RGB COLORS”テーマの定数を使用することができます。
以下の例は変数名を使用しています。行フォントカラーエリアにCompanyColorと入力され、フォームメソッドにOn Display Detailで実行される以下のコードが書かれています:
CompanyColor:=Choose([Companies]ID;Default background color;Default light shadow color;Default foreground color;Default dark shadow color)
- 行背景色配列 (配列タイプリストボックス) / 行背景色 (セレクションタイプリストボックス): リストボックスの各行にカスタマイズされた背景色を適用するために使用します。RGBカラー値を使用しなければなりません。この点に関する詳細は4Dラン ゲージリファレンスマニュアルのOBJECT SET RGB COLORSコマンドの説明を参照してください。
- 配列タイプのリストボックスの場 合、倍長整数配列名を入力します。この配列の各要素がリストボックスの行に対応します。この配列のサイズは列に割り当てた配列と同じでなければなりませ ん。“SET RGB COLORS”テーマの定数を使用できます。リストボックスプロパティで設定した背景色を行に適用するには、配列の対応する要素に値-255を渡します。
- セレクションタイプのリストボックスの場合、式または変数 (配列を除く) を入力します。式や変数は各行が表示される際に評価されます。式を指定する際にフォーミュラエディターを使用することができます。これを行うには、エリア を選択したときに表示される[...]ボタンをクリックします。“SET RGB COLORS”テーマの定数を使用することができます。
- 非表示行配列 (配列タイプリストボックスのみ): リストボックスの任意の行を非表示にするために使用します。ブール配列名を入力しなければなりません。この配列サイズはリストボックスの行数と同じでなければなりません。配列の各要素はリストボックス行の表示/非表示ステータスを表します:
- 行を隠すにはTrueを渡します。
- 行を表示するにはFalseを渡します。
配列が指定されていないか、配列が空の場合、リストボックスのすべての行が表示されます。デフォルトでつきあされた行は表示されます。
行の非表示はリストボックスの表示にのみ影響します。非表示行は依然として配列に存在し、プログラムで管理可能です。ランゲージコマンド、特にLISTBOX Get number of rowsやLISTBOX GET CELL POSITIONはリストボックス行の表示/非表示の影響を受けません。例えば10行あるリストボックスで先頭の9行が隠されている場合、LISTBOX Get number of rowsは10を返します。
ユーザーの視点から見た場合、リストボックス中に非表示行があることは視認できません。表示されている行だけが選択できます (例えばすべてを選択コマンドを使用して)。 - 選択モード: リストボックス行の選択モードを指定するために使用します。3つのモードから選択できます:
- なし: 行を選択することはできず、データを入力することもできません。選択とデータ入力はプログラムからのみ可能です。リスト中でクリックやダブルクリックしても (たとえ入力可オプションが選択されていても) 何も効果はありませんが、On ClickedやOn Double Clickedイベントは生成されます。このモードでは、開発者が (ハイライトセットを使用して) セレクションに関して、(EDIT ITEMコマンドを使用して) データ入力に関して完全なコントロールを持ちます。On Selection ChangeとOn Before Data Entryイベントは生成されません。他方On After EditイベントはユーザーがEDIT ITEMコマンドを通してデータを入力した際に生成されます。
- 単一: 一度に一行のみ選択できます。
- 複数: 標準のショートカットを使用して複数行を選択できます。Shift+クリックで連続した行を、Ctrl+クリック (Windows) や Command+クリック (Mac OS) で非連続行を選択できます。
このテーマにはリストボックス中に表示されるグリッドラインに関連するプロパティが集められています。
- 水平線: リストボックスの水平線の表示/非表示を設定します (デフォルトで表示)。
- 水平線カラー: リストボックスの水平線のカラーを設定します (デフォルトでグレー)。
- 垂直線: リストボックスの垂直線の表示/非表示を設定します (デフォルトで表示)。
- 垂直線カラー: リストボックスの垂直線のカラーを設定します (デフォルトでグレー)。
このテーマはリストボックスのデータソースが配列である場合にのみ利用できます。この設定を使用してリストボックスの階層表示を設定します。リストボックスオブジェクトのポップアップメニューを使用して階層を定義すると、自動でこれらのプロパティは更新されます ([#title id="1010"/]参照)。
- 階層リストボックス: リストボックスを階層形式で表示する場合、選択します。
- Variable 1 ... 10: これら追加のオプションは階層リストボックスオプションが選択されると表示されます。入力欄に値が入力されると、新しい入力欄が追加されます。10個までの変数を指定できます。
これらの変数は先頭の列に表示される階層のレベルを設定します。

Variable 1は常に、リストボックスの最初の列の変数名に対応します (2つの値が自動でバインドされます)。このVariable 1欄は常に表示され、入力できます。例: country
Variable 2も常に表示され、入力できます。これは二番目の階層レベルを指定します。例: regions
三番目以降の欄は、その前の番号の欄が入力されると表示されます。例えば: counties、cities等。最大10レベルまで指定できます。
ある階層レベルの値を削除すると、そのあとの階層レベルが調整されます。
最後の変数に複数の同じ値が存在しても、この変数が階層になることはありません。例えばarr1にA A A B B B、arr2に1 1 1 2 2 2、そしてarr3にX X Y Y Y Zが値として設定されています。この場合、A、B、1、そして2は階層で表示できますが、XとYは階層になりません:
+ A
+ 1
X
X
Y
+ B
+ 2
Y
Y
Z
この原則は階層がひとつだけ設定されている場合には適用されません。この場合、同じ値はグループ化されます。
注: 既存のリストボックスで階層を設定した場合、(最初のものを除き) これらの列を削除または隠さなければなりません。そうしないとそれらはリストボックス中で重複して表示されます。エディターのポップアップメニューを使用して階層を設定すると (階層リストボックスの作成と利用参照)、不要な列は自動でリストボックスから取り除かれます。
このテーマにはリストボックスの座標や幅、高さに関するプロパティが集められています。
行の高さプロパティは特別です。このプロパティはリストボックス行の高さを設定します (ピクセル単位)。この高さはヘッダーにも適用されます。行の高さはデフォルトでプラットフォームとフォントサイズに基づき決定されます。
このテーマには行の背景色と境界線スタイルに関連するプロパティが集められています。
- 背景色: リストボックスの背景色を設定します。この色はヘッダー部を除くオブジェクト船体に使用されます。
- 奇数行背景色: リストボックスの奇数行に異なるカラーを設定するために使用します。奇数行背景色を設定することで、配列を読みやすくなります。
- 境界線スタイル: リストボックスの境界線のスタイルを設定します。
このテーマではリストボックスの動作に関連するプロパティを設定します。
- メソッド (編集...): このボタンをクリックすると、リストボックスオブジェクトのメソッドがメソッドエディターで開かれます (各列にもオブジェクトメソッドを記述できる点に留意してください)。
- ドラッグ可とドロップ可: リストボックスのドラッグ&ドロップ機能を有効にします。これによりリストボックス行と他のリストボックスあるいは他の4Dオブジェクト間のドラッグ&ドロップが可能になります。リストボックスの行だけが関連します。列をドラッグ&ドロップすることはできません (リストボックス内で列を移動することはできます)。
リストボックス内でのドラッグ&ドロップは4D標準のドラッグ&ドロップメカニズムを使用して管理されます (On DropとOn Drag Overフォームイベント、DRAG AND DROP PROPERTIESとDrop positionコマンド)。 - 行の移動可 (配列タイプのリストボックスのみ): 実行時に行の移動を許可します。このオプションはデフォルトでチェックされています。セレクションタイプや (階層リストボックスオプションがチェックされている) 階層リストボックスではこのオプションを使用できません。
- 並び替え可: ヘッダーのクリックによる列データの並び替えを有効にします。このオプションはデフォルトで選択されています。
ピクチャー型配列 (列) はこのメカニズムではソートできません。
レコードのセレクションに基づくリストボックスの場合、標準の並び替え機能は以下の場合のみ有効です:
- データソースがカレントセレクションであり、
- その列にフィールドが割り当てられていること (文字、数値、日付、時間、およびブール型)。
他の場合 (命名セレクションに基づくリストボックスや式が割り当てられた列)、標準の並び替え機能は動作しません。
標準のリストボックス並び替えは、データベースのカレントセレクションの順番を変更します。しかしハイライトされたレコードと、カレントレコードは変更されません。
標準の並び替えは、式が割り当てられた列も含め、リストボックスのすべての列を同期します。