フォームエディターでリストボックスオブジェクトを選択すると、プロパティリストには専用のテーマやプロパティが表示されます。リストボックス列(リストボックス列特有のプロパティ参照)や列ヘッダー (リストボックスヘッダー特有のプロパティ参照)や列フッター(リストボックスフッター特有のプロパティ参照)を選択すると追加の専用プロパティが利用できるようになります。
このテーマにはデータソースプロパティがあり、リストボックスのタイプを設定できます:
- カレントセレクションオプションを選択すると、指定したテーブルのカレントセレクションの各レコードごとに式、フィールド、メソッドが評価されます。
- 命名セレクションオプションを選択すると、指定した命名セレクションに含まれる各レコードごとに式、フィールド、メソッドが評価されます。
- 配列オプションを選択すると、リストボックスの各行に配列要素を表示することができます。
SQLクエリーの結果をリストボックスに取得するためには、配列タイプを選択しなければなりません (リストボックスにSQLクエリの結果を表示する参照)。
このテーマはセレクションタイプのリストボックスの場合にのみ表示されます。カレントセレクションの場合マスターテーブルプロパティが表示され、命名セレクションの場合命名セレクションプロパティが表示されます。
- マスターテーブル: 使用するカレントセレクションが属するテーブルを指定します。このテーブルとそのテーブルのカレントセレクションが、リストボックスの列に割り当てられたフィールドの参照を形成します (フィールド参照やフィールドを含む式)。ある列が他のテーブルのフィールドを参照しているとしても、表示される行の数はマスターテブルのカレントレコード数となります。
このプロパティに割り当てられるメニューには、データベースのすべてのテーブルが表示されます。フォームがどのテーブルに属しているか (テーブルフォームの場合) あるいは属していないか (プロジェクトフォーム) は関係ありません。デフォルトでデータベースの最初のテーブルがプロパティに表示されます。このプロパティの動作に関する詳細はリストボックスにフィールドを表示するを参照してください。 - 命名セレクション: 使用する命名セレクションの名前を指定します。有効な命名セレクションの名前を入力しなければなりません。使用できるのはプロセスあるいはインタープロセス命名セレクションです。リストボックスの内容はこの命名セレクションに含まれるセレクションに基づきます。選択された命名セレクションは、リストボックスが表示される時点で存在し、有効でなければなりません。そうでない場合、リストボックスは空で表示されます。名前エリアを空にしても、リストボックスは空で表示されます。
注: 命名セレクションはソート済みのレコードリストです。これはセレクション中のカレントレコードと並び順をメモリーに保持するために使用されます。詳細は4Dランゲージリファッレンスの命名セレクションを参照してください。
このテーマには、基本的なオブジェクトプロパティがすべて集められています。
- 列数: リストボックスに表示される列の数 (デフォルトは1)。コンテキストメニューを使用して (列または列ヘッダをクリック)、列数を変更することができます (列の追加、複製、削除):
- スクロールしない列数: ユーザーがリストボックスを横にスクロールしても、リストボックスの左側に常に表示される列の数を指定します。スクロールしない列は通常の列と同様、幅の リサイズ、セルへの入力などが可能です。リストボックス中での位置が固定されるだけであり、これは例えば第一列に行のタイトル (名前など) が表示されている場合に便利です。
横スクロールしない列がプログラムで削除されると、横スクロールしない列数は1減少します。同様に横スクロールしないエリアに列がプログラムで挿入されると、この列は自動で横スクロールしない列になります。 - ドラッグしない列数: 実行時にドラッグで移動できない列の数。この値は、リストボックスの一番目の列から数えた固定列の数を表わします。すべての列の移動を禁止するに は、この値と列の合計数とを同じにしなくてはなりません。このプロパティは非表示の列も計算に入れる点に注意してください。
このプロパティのデフォルト値は、階層モードが無効の (階層リストボックスオプションがチェックされていない) 場合0であり、これはすべての列が移動可能であることを意味します。階層モードが有効の場合 (配列タイプのリストボックスのみ)、このオプションは常に1以上です。
注: これらの機能の違いについては後述の"横スクロールしない列とドラッグしない列"を参照してください。 - 列のヘッダを表示: 列ヘッダの表示/非表示を指定します (デフォルトは表示)。
- ハイライトセット: このプロパティはセレクションタイプのリストボックスでのみ利用できます。このプロパティを使用して、リストボックス中でハイライトされたレコードを管理するために使用するセット名を指定します (配列データソースが指定されている場合、リストボックスに割り当てた変数と同じ名前のブール配列を使用します)。
4DはListBoxSetN (N は 0 から始まり、フォーム上のリストボックスオブジェクトの数に従い増分されます) という名前のデフォルトセットを作成しますが、必要に応じてこの名前を変更できます。セットはローカル、プロセスおよびインタープロセスセットを使用でき ます (ネットワークトラフィックを制限するため、"$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) で非連続行を選択できます。
- 行をダブルクリック(セレクション型のリストボックスのみ): ユーザーがリストボックスの列をダブルクリックした際に実行されるアクションを設定します。選択可能なオプションは以下の通りです:
- 何もしない(デフォルト): 行をダブルクリックしても自動アクションは何も発動しません。
- レコード編集: 行をダブルクリックすると、リストボックスに対して定義された詳細フォーム内の対応するレコードが表示されます(以下の「詳細フォーム」セクションを参照して下さい)。レコードは読み書き可能モードで開かれるので、編集が可能です。
- レコード表示: レコード編集と同様の挙動をしますが、レコードは読み出し専用モードで開かれるので編集はできません。
注: 空の行へのダブルクリックは無視されます。
選択されているアクションに関わらず、On Double clicked フォームイベントが生成されます。
「レコード編集」・「レコード表示」のアクションに関してはOn Open Detail フォームイベントも生成されます。リストボックスに関連付けられた詳細フォームに表示されたレコードが閉じられる際にはOn Close Detail フォームイベントが生成されます(レコードが編集されたかどうかは問いません)。
詳細フォーム(セレクション型のリストボックスのみ): リストボックスの個々のレコード編集・表示の際に使用するフォームを指定します。
指定されたフォームは以下のタイミングで表示されます:
- リストボックスに関連付けられているサブレコード追加またはサブレコード編集の標準アクションを使用したとき(標準アクションの使用を参照して下さい)。
- 行をダブルクリックのプロパティが「レコード編集」か「レコード表示」になっている行をダブルクリックしたとき(前述の「行をダブルクリック」のセクションを参照して下さい)。
リストボックスの横スクロールしない列とドラッグしない列はそれぞれ独立して動作します:
- 横スクロールしない列は常にリストボックスの左側に表示されます。横スクロールされません。
- ドラッグしない列はリストボックス中でドラッグ&ドロップによる列の移動ができません。
注: 横スクロールしない列とドラッグしない列を設定できます。詳細は4Dランゲージリファレンスのリストボックスを参照してください。
これらのプロパティは以下のように相互作用します:
- 列をドラッグしないのみに設定した場合、その列は移動することができません。
- 列を横スクロールしないのみに設定した場合、横スクロールしないエリア内ではドラッグで列を移動することができます。しかしエリアを越えて移動することはできません。
- 横スクロールしない列とドラッグしない列を同じ数に設定した場合、スクロールしないエリア内ではドラッグで移動することもできません。
- 必要に応じて横スクロールしない列数とドラッグしない列数をそれぞれ設定できます。例えば横スクロールしない列を 3、ドラッグしない列を 1に設定した場合、ユーザーは横スクロールしないエリア内で右側 2 つの列を入れ替えることができます。
これらのテーマではリストボックス列のヘッダーとフッターの表示と高さを管理します。ヘッダーとフッターにはフォーム実行中、ユーザーが直接入力を行うことはできません。表示内容は常に計算で求められます。
- ヘッダーを表示 / フッターを表示: 列ヘッダーやフッターの表示/非表示を設定します。このプロパティを選択していない場合、このエリア内のその他のプロパティを設定することはできません。
リストボックス中でこれらのエリアが表示されたら、クリックして選択し、プロパティリストから個別のプロパティを設定できます (リストボックスヘッダー特有のプロパティとリストボックスフッター特有のプロパティ参照)。列には1つのヘッダー1つのフッターを表示できます。それぞれは個別に設定できます。 - デフォルトで非表示: 他のフォームオブジェクトと同様、この設定を使用してOBJECT SET VISIBLEコマンドを使用したオブジェクトの表示に関する制御を容易にできます。
OBJECT SET VISIBLEコマンドは対応する"ヘッダーを表示"や"フッターを表示"オプションがリストボックスのプロパティリストで選択されていない場合、効果がありません。 - 高さ: ヘッダーやフッターの高さを設定するために使用します。まず高さの単位を設定できます (行またはピクセル)。この点に関する詳細は高さの単位 (ピクセルまたは行)を参照してください。
デフォルトでヘッダーとフッターの高さは1行です。
警告: ピクセル単位でのヘッダーの最小高さはシステムにより異なります。最小値よりも小さな値を指定した場合、最小値で置き換えられます。行とフッターには最小値がありません。
互換性に関する注意: Windows 7とWindows Vistaではヘッダーの最小高さは24ピクセルです。変換されたデータベースで高さがこれよりも小さな値に設定されていた場合、自動でリサイズされます。この場合、それに応じてフォームを変更する必要があるかもしれません。
ヘッダーやフッターの高さはLISTBOX SET HEADERS HEIGHTやLISTBOX SET FOOTERS HEIGHTコマンドを使用して設定することもできます。
ヘッダー、フッター、および行の高さをピクセルまたはテキスト行単位で設定できます。プロパティリストで高さフィールドのボタンを使用して単位を変更できます。
または高さを入力するエリアに直接単位を入力することもできます。行単位の場合は "L"、ピクセル単位の場合は "P" を入力します ( 例えば "17 P")。ボタンラベルは入力に基づき更新されます。
同じリストボックス内でヘッダーとフッター異なる単位を使用することもできます:
- "ピクセル" を使用した場合、指定された値は関連する行に対し直接適用されます。列に使用されるフォントサイズ等は考慮されません。フォントが行の高さに対して大きい場合、テキストは切り取られます。ピクチャーはフォーマットに基づき切り取られるかリサイズされます。
- "行" を使用した場合、高さは関連する行のフォントサイズに合わせて計算されます。複数の異なるサイズが設定されている場合、4D はもっとも大きなものを使用します。
例えば行に "Verdana 18", "Geneva 12" そして "Arial 9" が設定されている場合、4D は行の高さの決定に "Verdana 18" を使用します。複数行の場合はこの高さの倍数が使用されます。
注 : この計算にはピクチャーのサイズやフォントに適用されるスタイルは考慮されません。
単位の変換: 単位を変更した場合、4D は自動で値を再計算し、結果をプロパティリストに表示します。例えば使用されるフォントが "Lucida grande 24" で高さが "1 行 " に設定されていれば "30 ピクセル " に、"2 行" なら "60 ピクセル " になります。
単位の変更を繰り返すと、4D が自動で計算を行うため、最初の値とは結果が異なってしまうこともあります。例えば以下のようになります :
(Arial 18): 52 ピクセル -> 2 行 -> 40 ピクセル
(Arial 12): 3 ピクセル -> 0.4 行が 1 行に変換される -> 19 ピクセル
このテーマにはリストボックス中に表示されるグリッドラインに関連するプロパティが集められています。
- 水平線: リストボックスの水平線の表示/非表示を設定します (デフォルトで表示)。
- 水平線カラー: リストボックスの水平線のカラーを設定します (デフォルトでグレー)。
- 垂直線: リストボックスの垂直線の表示/非表示を設定します (デフォルトで表示)。
- 垂直線カラー: リストボックスの垂直線のカラーを設定します (デフォルトでグレー)。
このテーマはリストボックスのデータソースが配列である場合にのみ利用できます。この設定を使用してリストボックスの階層表示を設定します。リストボックスオブジェクトのポップアップメニューを使用して階層を定義すると、自動でこれらのプロパティは更新されます (階層リストボックスの作成と利用参照)。
- 階層リストボックス: リストボックスを階層形式で表示する場合、選択します。
- 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
この原則は階層がひとつだけ設定されている場合には適用されません。この場合、同じ値はグループ化されます。
注: 既存のリストボックスで階層を設定した場合、(最初のものを除き) これらの列を削除または隠さなければなりません。そうしないとそれらはリストボックス中で重複して表示されます。エディターのポップアップメニューを使用して階層を設定すると (階層リストボックスの作成と利用参照)、不要な列は自動でリストボックスから取り除かれます。
このテーマにはリストボックスの座標や幅、高さに関するプロパティが集められています。
行の高さプロパティは特別です。このプロパティはリストボックス行の高さを設定します。ヘッダーやフッターの高さはそれぞれのプロパティリストテーマで別に設定します。
高さはピクセルまたは行単位で設定できます。
単位の選択については上記"高さの単位 (ピクセルまたは行)"を参照してください。
デフォルトで行の高さはプラットフォームとフォントサイズに基づき設定されます。
このテーマには行の背景色と境界線スタイルに関連するプロパティが集められています。
- 背景色: リストボックスの背景色を設定します。この色はヘッダー部を除くオブジェクト船体に使用されます。
- 奇数行背景色: リストボックスの奇数行に異なるカラーを設定するために使用します。奇数行背景色を設定することで、配列を読みやすくなります。
- 境界線スタイル: リストボックスの境界線のスタイルを設定します。
このテーマにはリストボックスに表示されるテキストの定義に関する標準のプロパティ(スタイルシート、フォント、スタイル)がグループ化されています。また、リストボックスのセル毎のテキスト表示の設定に使用されるいくつかのプロパティがあります:
- 行スタイル配列 (配列タイプリストボックス) / 行スタイル (セレクションタイプリストボックス): リストボックスの各行にカスタマイズされた文字スタイルを適用するために使用します。
- 配 列タイプのリストボックスの場合、倍長整数配列名を入力します。この配列の各要素がリストボックスの行に対応します。この配列のサイズは列に割り当てた配 列と同じでなければなりません。(メソッドを使用して) 配列を埋めるためには、“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) で非連続行を選択できます。
- 横揃え: セルの内容を左、中央、または右に揃えるために使用されます。
デフォルトオプションを選択した場合、各列のデータ型に基づき整列方向が決定されます。テキストやピクチャーは左、数値は右です。 - 縦揃え: セルの内容を上、中央、または下に揃えるために使用されます。
デフォルトオプションを選択した場合、各列のデータ型に基づき整列方向が決定されます。ピクチャーを除き、すべて下です。ピクチャーは上です。
整列プロパティはリストボックスレベルで全体に、またはそれぞれの列ごとに個々に適用できます(スタイルとカラーの管理を参照して下さい)。さらに、横揃え/縦揃えのプロパティはヘッダー/フッターエリアにも設定できます。
このテーマではリストボックスの動作に関連するプロパティを設定します。
- メソッド (編集...): このボタンをクリックすると、リストボックスオブジェクトのメソッドがメソッドエディターで開かれます (各列にもオブジェクトメソッドを記述できる点に留意してください)。
- ドラッグ可とドロップ可: リストボックスのドラッグ&ドロップ機能を有効にします。これによりリストボックス行と他のリストボックスあるいは他の4Dオブジェクト間のドラッグ&ドロップが可能になります。リストボックスの行だけが関連します。列をドラッグ&ドロップすることはできません (リストボックス内で列を移動することはできます)。
リストボックス内でのドラッグ&ドロップは4D標準のドラッグ&ドロップメカニズムを使用して管理されます (On DropとOn Drag Overフォームイベント、DRAG AND DROP PROPERTIESとDrop positionコマンド)。 - 行の移動可 (配列タイプのリストボックスのみ): 実行時に行の移動を許可します。このオプションはデフォルトでチェックされています。セレクションタイプや (階層リストボックスオプションがチェックされている) 階層リストボックスではこのオプションを使用できません。
- 並び替え可: ヘッダーのクリックによる列データの並び替えを有効にします。このオプションはデフォルトで選択されています。
ピクチャー型配列 (列) はこのメカニズムではソートできません。
レコードのセレクションに基づくリストボックスの場合、標準の並び替え機能は以下の場合のみ有効です:
- データソースがカレントセレクションであり、
- その列にフィールドが割り当てられていること (文字、数値、日付、時間、およびブール型)。
他の場合 (命名セレクションに基づくリストボックスや式が割り当てられた列)、標準の並び替え機能は動作しません。
標準のリストボックス並び替えは、データベースのカレントセレクションの順番を変更します。しかしハイライトされたレコードと、カレントレコードは変更されません。
標準の並び替えは、式が割り当てられた列も含め、リストボックスのすべての列を同期します。
このテーマにあるスクロールエリアオプションを使用して、以前のスクロールエリアの動作をエミュレートできます。以前のスクロールエリアはv13以降に変換すると自動でリストボックスに変換されます。なおこの互換性チェックボックスはすべてのリストボックスで利用できます:
リストボックスでこのオプションが選択されていると以下の特別な動作を行うようになります:
- リストボックス列配列に非表示プロパティが設定されていると、リストボックス全体が非表示になります。
- リストボックス列の配列変数に数値を代入すると、当該行が選択されます ( 例 : MyArray:=5 とするとリストボックス中 5 番目の要素が選択されます )。
- 逆に行をクリックすると列配列の現在値が更新されます。
- リストボックス行から他のオブジェクトにドロップが行われたとき、このオブジェクト内で実行されるDRAG AND DROP PROPERTIESコマンドは (リストボックス自身ではなく) リストボックス列への配列を返します。
グループ化されたスクロールエリアがリストボックスに変換されると、それらは接続されます。接続されたリストボックスは連携して動作します:
- ひとつのリストボックス上で行を選択すると、接続されたグループに属するすべてのリストボックスの同じ行が選択されます。
- リストボックスをスクロールすると、接続されたグループに属するすべてのリストボックスがスクロールされます。
注: 変換されたリストボックスはフォーム上でグループ化されています。
フォームエディターのオブジェクトメニューから、新しい接続および切断メニューを使用して、これらのリストボックスの接続 / 切断を切り替えることができます:
これらのコマンドはフォームエディター上で適切なリストボックスが選択されている場合に有効となります。接続されたリストボックスが選択されている場合、そのリストボックスに接続されたすべてのリストボックス上に特別なバッジが表示されます :
互換性に関する注意: この動作原理を用いて、グループ化されたスクロールエリアの動作を再現します。しかしこの動作を標準のリストボックスに置き換えることを推奨します。