リストボックス
概要
リストボックスは複合アクティブオブジェクトで、同期化された複数列 (カラムとも呼びます) の形式でデータの表示・入力がおこなえます。 リストボックスは、エンティティセレクションやレコードセレクションなどのデータベースコンテンツのほか、コレクションや配列などのランゲージコンテンツと紐づけることができます。 データ入力、列の並べ替え、イベント管理、外観のカスタマイズ、 列の移動など、リストボックスには高度な機能が備わっています。
リストボックスには 1つ以上の列があり、その内容が自動的に同期化されます。 理論上、列数に制限はありません (マシンのリソースに依存します)。
基本のユーザー機能
実行中、リストボックスはリストとしてデータを表示し、入力を受け付けます。 セルを編集可能にするには (その列について入力が許可されていれば)、セル上で2回クリックしま す:
リストボックスのセルには、複数行のテキストを入力・表示できます。 セル内で改行するには、Ctrl+Return (Windows) または Command+Return (macOS) を押します。
セルにはブールやピクチャー、日付、時間、数値も表示することができます。 ヘッダーをクリックすると、列の値をソートできます (標準ソート)。 すべての列が自動で同期されます。
またそれぞれの列幅を変更できるほか、ユーザーはマウスを使用して 列 や 行 の順番を (そのアクションが許可されていれば) 入れ替えることもできます。 リストボックスは 階層モード で使用することもできます。
ユーザーは標準のショートカットを使用して 1つ以上の行を選択できます。Shift+クリック で連続した行を、Ctrl+クリック (Windows) や Command+クリック (macOS) で非連続行を選択できます。
リストボックスの構成要素
リストボックスオブジェクトは、以下4つの項目で構成されます:
- リストボックスオブジェクトの全体
- 列
- 列ヘッダー
- 列フッター
それぞれが独自のオブジェクト名や固有のプロパティを持ちます。 たとえば、列の数や、交互に使用する行の背景色などはリストボックスオブジェクトのプロパティで指定し、各列の幅は列プロパティ、ヘッダーのフォントはヘッダープロパティで指定します。
リストボックスオブジェクトやリストボックスの各列に対して、オブジェクトメソッドを設定することができます。 オブジェクトメソッドの呼び出しは、次の順でおこなわれます:
- 各列のオブジェクトメソッド
- リストボックスのオブジェクトメソッド
ヘッダー と フッター で発生したイベントは、その列のオブジェクトメソッドが受け取ります。
リストボックスの型
リストボックスには複数のタイプがあり、動作やプロパティの点で異なります。 リストボックスの型は データソースプロパティ で定義します:
- 配列: 各列に 4D 配列を割り当てま す。 配列タイプのリストボックスは 階層リストボックス として表示することができます。
- セレクション (カレントセレクション または 命名セレクション): 各列に式 (たとえばフィールド) を割り当てます。それぞれの行はセレクションのレコードを基に評価されます。
- コレクションまたはエンティティセレクション: 各列に式を割り当てます。各行の中身はコレクションの要素ごと、あるいはエンティティセレクションのエンティティごとに評価されます。
1つのリストボックス内に、複数のデータソースタイプを組み合わせて指定することはできません。 データソースは、リストボックス作成時に定義され、 プログラムによって後から変更することはできません。
リストボックスの管理
リストボックスオブジェクトはプロパティによってあらかじめ設定可能なほか、プログラムにより動的に管理することもできます。
4D ランゲージにはリストボックス関連のコマンドをまとめた "リストボックス" テーマが専用に設けられていますが、"オブジェクトプロパティ" コマンドや EDIT ITEM
、Displayed line number
コマンドなど、ほかのテーマのコマンドも利用することができま す。 詳細については 4D ランゲージリファレンスマニュアル のリストボックスコマンド一覧を参照してください。
リストボックスオブジェクト
配列リストボックス
配列リストボックスでは、それぞれの列に 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
コマンドを使用します。
データソースがエンティティセレクションの場合、リストボックス側に対しておこなった変更は自動的にデータベースに保存されます。 その一方で、データベース側に対しておこなった変更は、該当エンティティがリロードされてはじめてリストボックス側に反映されます。
データソースがコレクションの場合、リストボックス内の値に変更をおこなった場合、その変更はコレクションにも反映されます。 その一方で、コレクションに対して、たとえば コレクション テーマの様々なメソッドを使用して変更をおこなった場合、コレクション変数を自らに再代入することにより明示的に 4D に通知する必要があり、それによってリストボックスのコンテンツは更新されます。 例:
myCol:=myCol.push("new value") // リストボックスに new value を表示
プロパティ一覧
提供されるプロパティはリストボックスのタイプに依存します。
プロパティ | 配列リストボックス | セレクションリストボックス | コレクションまたはエンティティセレクションリストボックス |
---|---|---|---|
交互に使用する背景色 | ○ | ○ | ○ |
背景色 | ○ | ○ | ○ |
太字 | ○ | ○ | ○ |
背景色式 | ○ | ○ | |
境界線スタイル | ○ | ○ | ○ |
下 | ○ | ○ | ○ |
クラス | ○ | ○ | ○ |
コレクションまたはエンティティセレクション | ○ | ○ | |
カラム自動リサイズ | ○ | ○ | ○ |
カレントの項目 | ○ | ||
カレントの項目の位置 | ○ | ||
データソース | ○ | ○ | ○ |
詳細フォーム名 | ○ | ||
ヘッダーを表示 | ○ | ○ | ○ |
フッターを表示 | ○ | ○ | ○ |
行をダブルクリック | ○ | ||
ドラッグ有効 | ○ | ○ | ○ |
ドロップ有効 | ○ | ○ | ○ |
フォーカス可 | ○ | ○ | ○ |
フォント | ○ | ○ | ○ |
フォントカラー | ○ | ○ | ○ |
フォントカラー式 | ○ | ○ | |
フォントサイズ | ○ | ○ | ○ |
高さ (リストボックス) | ○ | ○ | ○ |
高さ (ヘッダー) | ○ | ○ | ○ |
高さ (フッター) | ○ | ○ | ○ |
追加の空白の行を非表示 | ○ | ○ | ○ |
フォーカスの四角を隠す | ○ | ○ | ○ |
セレクションハイライトを非表示 | ○ | ○ | ○ |
階層リストボックス | ○ | ||
ハイライトセット | ○ | ||
横揃え | ○ | ○ | ○ |
横線カラー | ○ | ○ | ○ |
横スクロールバー | ○ | ○ | ○ |
横方向サイズ変更 | ○ | ○ | ○ |
イタリック | ○ | ○ | ○ |
左 | ○ | ○ | ○ |
マスターテーブル | ○ | ||
メタ情報式 | ○ | ||
メソッド | ○ | ○ | ○ |
行の移動可 | ○ | ||
命名セレクション | ○ | ||
列数 | ○ | ○ | ○ |
スクロールしない列数 | ○ | ○ | ○ |
ドラッグしない列数 | ○ | ○ | ○ |
オブジェクト名 | ○ | ○ | ○ |
右 | ○ | ○ | ○ |
行背景色配列 | ○ | ||
行コントロール配列 | ○ | ||
行フォントカラー配列 | ○ | ||
行の高さ | ○ | ||
行高さ配列 | ○ | ||
行スタイル配列 | ○ | ||
選択された項目 | ○ | ||
選択モード | ○ | ○ | ○ |
シング ルクリック編集 | ○ | ○ | ○ |
ソート可 | ○ | ○ | ○ |
標準アクション | ○ | ||
スタイル式 | ○ | ○ | |
上 | ○ | ○ | ○ |
透過 | ○ | ○ | ○ |
タイプ | ○ | ○ | ○ |
下線 | ○ | ○ | ○ |
変数あるいは式 | ○ | ○ | |
縦揃え | ○ | ○ | ○ |
縦線カラー | ○ | ○ | ○ |
縦スクロールバー | ○ | ○ | ○ |
縦方向サイズ変更 | ○ | ○ | ○ |
表示状態 | ○ | ○ | ○ |
幅 | ○ | ○ | ○ |
リストボックスの列、ヘッダーおよびフッターにもそれぞれ固有のプロパティがあります。
リストボックス列
リストボックスは、それぞれ固有のプロパティを持つ 1つ以上の列オブジェクトから構成されています。 列を選択するには、フォームエディターでリストボックスオブジェクトが選択されているときに任意の列をクリックします:
リストボックスの各列毎に標準のプロパティ (テキスト、背景色など) を設定できます。設定すると、リストボックスに対する設定よりもこちらが優先されます。
配列型リストボックスのカラムについては、式タイプ (テキスト、数値、整数、ブール、ピクチャー、時間、日付、あるいはオブジェクト) を定義することができます。 オブジェクト配列を使用するためには、4D View Pro ライセンスが必要になります (カラム内でのオブジェクト配列の使用 (4D View Pro)参照)。
列特有のプロパティ
オブジェクト名 - 変数あるいは式 - 式タイプ (配列リストボックス列) - CSSクラス - デフォルト値 - 選択リスト - 式 - データタイプ (セレクションおよびコレクションリストボックス列) - 関連付け - 幅 - 自動行高 - 最小幅 - 最大幅 - サイズ変更可 - 入力可 - 入力フィルター - 指定リスト - 除外リスト - 表示タイプ - 文字フォーマット - 数値フォーマット - テキスト (True時)/テキスト (False時) - 日付フォーマット - 時間フォーマット - ピクチャーフォーマット - 非表示 - ワードラップ エリプシスを使用して省略 - 背景色 - 交互に使用する背景色 - 行背景色配列 - 背景色式 - フォント - 太字 - イタリック - 下線 - 行スタイル配列 - スタイル式 - フォントカラー - 行フォントカラー配列 - 行フォントカラー式 - 横 揃え - 縦揃え - マルチスタイル - メソッド
リストボックスヘッダー
リストボックスのヘッダープロパティにアクセスするためには、リストボックスのプロパティリストで ヘッダーを表示 オプションが選択されていなければなりません。
ヘッダーが表示されていれば、フォームエディターでリストボックスオブジェクトが選択されているときに、リストボックスヘッダーをクリックするとヘッダーを選択できます:
リストボックスの各列ヘッダー毎に標準のテキストプロパティを設定できます。設定すると、リストボックスや列に対する設定よりもこちらが優先されます。
さらに、ヘッダー特有のプロパティを設定することができます。 カスタマイズされた並び替え などの用途に、ヘッダーの列タイトルの隣、あるいはタイトルの代わりにアイコンを表示することができます。
ランタイムにおいてヘッダーで発生したイベントは、その列のオブジェクトメソッド が受け取ります。
ヘッダーに OBJECT SET VISIBLE
コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのヘッダーが対象になります。 たとえば、OBJECT SET VISIBLE(*;"header3";False)
という命令の場合、指定したヘッダーだけではなく、header3 が属するリストボックスの全ヘッダーを非表示にします。
ヘッダー特有のプロパティ
オブジェクト名 - 変数あるいは式 - タイトル - CSSクラス - パス名 - アイコンの場所 - 幅 - フォント - フォントサイズ - 太字 - イタリック - 下線 - フォントカラー - 横揃え - 縦揃え - ヘルプTips
リストボックスフッター
リストボックスのフッタープロパティにアクセスするためには、リストボックスのプロパティリストで フッターを表示 オプションが選択されていなければなりません。
リストボックスは、追加の情報を表示するための入力を受け付けない "フッター" を持つことができます。 表形式で表示されるデータについて、合計や平均などの計算値を表示するためにフッターは通常使用されます。
フッターが表示されていれば、フォームエディターでリストボックスオブ ジェクトが選択されているときにフッターをクリックすることで選択できます:
リストボックスの各列フッター毎に標準のテキストプロパティを設定できます。設定すると、リストボックスや列に対する設定よりもこちらが優先されます。 さらに、フッター特有のプロパティを設定することができます。 カスタムまたは自動計算 をフッターに挿入することができます。
ランタイムにおいてフッターで発生したイベントは、その列のオブジェクトメソッド が受け取ります。
フッターに OBJECT SET VISIBLE
コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのフッターが対象になります。 たとえば、OBJECT SET VISIBLE(*;"footer3";False)
という命令の場合、指定したフッターだけではなく、footer3 が属するリストボックスの全フッターを非表示にします。
フッター特有のプロパティ
オブジェクト名 - 変数あるいは式 - 式の型 - 変数の計算 - CSSクラス - 幅 - 文字フォーマット - 数値フォーマット - 日付フォーマット - 時間フォーマット - ピクチャーフォーマット - ワードラップ エリプシスを使用して省略 - 背景色 - フォント - フォント サイズ - 太字 - イタリック - 下線 - フォントカラー - 横揃え - 縦揃え - ヘルプTips
入力の管理
リストボックスのセルが入力可能であるには、以下の条件を満たす必要があります:
- セルが属する列が 入力可 に設定されている (でなければ、その列のセルには入力できません)。
On Before Data Entry
イベントで $0 が -1 を返さない。 カーソルがセルに入ると、その列のメソッドでOn Before Data Entry
イベントが生成されます。 このイベントのコンテキストにおいて、$0 に -1 を設定すると、そのセルは入力不可として扱われます。 Tab や Shift+Tab が押された後にイベントが生成された場合には、フォーカスはそれぞれ次あるいは前のセルに移動します。 $0 が -1 でなければ (デフォルトは 0)、列は入力可であり編集モードに移行します。
2つの配列で構築されるリストボックスを考えてみましょう。1つは日付でもう 1つはテキストです。 日付配列は入力不可ですが、テキスト配列は日付が過去でない場合に入力可とします。
arrText 列のメソッドは以下の通りです:
Case of
:(FORM event.code=On Before Data Entry) // セルがフォーカスを得たとき
LISTBOX GET CELL POSITION(*;"lb";$col;$row)
// セルの特定
If(arrDate{$row}<Current date) // 過去の日付なら
$0:=-1 // セルは入力不可
Else
// そうでなければ入力可
End if
End case
On Before Data Entry
イベントは On Getting Focus
より前に生成されます。
データの整合性を保つため、セレクション型とエンティティセレクション型のリストボックスにおいては、レコード/エンティティに対する変更はセル内の編集が確定されたときに自動的に保存されます。確定は、以下のような場合を指します:
- セルがアクティブでなくなったとき (ユーザーによるタブキー押下、クリック操作など)
- リストボックスからフォーカスが外れたとき
- フォームからフォーカスが外れたとき
データ入力・編集操作にともなって発生するイベントのシーケンスは次のようになります:
動作 | リストボックス型 | イベントシーケンス |
---|---|---|
セルが編集モードに切り替わったとき (ユーザー操作または EDIT ITEM コマンド) | すべて | On Before Data Entry |
すべて | On Getting Focus | |
セルの値が編集されたとき | すべて | On Before Keystroke |
すべて | On After Keystroke | |
すべて | On After Edit | |
ユーザーがセルを確定し、セルを移動したとき | セレクションリストボックス | 保存 |
レコードセレクションリストボックス | On saving an existing record トリガ ー (設定されていれば) | |
セレクションリストボックス | On Data Change(*) | |
エンティティセレクションリストボックス | エンティティはオートマージオプション、オプティミスティック・ロックモードで保存されます (entity.save( ) を参照ください)。 正常に保存できた場合には、エンティティは更新され最新の状態が表示されます。 保存処理が失敗した場合、エラーが表示されます。 | |
すべて | On Losing Focus |
(*) エンティティセレクションリストボックスでの On Data Change
イベントの場合:
- カレントの項目 オブジェクトには編集前の値が格納されます。
This
オブジェクトには、編集後の値が格納されます。
コレクション/エンティティセレクション型では、式が null に評価される場合にリストボックスでのデータ入力に制約があります。 この場合、セル内の null 値を編集・削除することはできません。
選択行の管理
選択行の管理は、リストボックスのタイプが配列か、レコードのセレクションか、あるいはコレクション/エンティティセレクションかによって異なります。
-
セレクションリストボックス: 選択行は、デフォルトで
$ListboxSetX
と呼ばれる変更可能なセットにより管理されます (X は 0 から始まり、フォーム内のリストボックスの数に応じて一つずつ増加していきます)。 このセットはリストボックスのプロパティリストで定義します。 このセットは 4D が自動で管理します。ユーザーがリストボックス中で 1つ以上の行を選択すると、セットが即座に更新されます。 他方、リストボックスの選択をプログラムから更新するために、"セット" テーマのコマンドを使用することができます。 -
コレクション/エンティティセレクションリストボックス: 選択項目は、専用のリストボックスプロパティを通して管理されます。
- カレントの項目 は、選択された要素/エンティティを受け取るオブジェクトです。
- 選択された項目 は、選択された項目のコレクションです。
- カレントの項目の位置 は、選択された要素あるいはエンティティの位置を返します。
-
配列リストボックス:
LISTBOX SELECT ROW
コマンドを使用して、プログラムからリストボックスの行を選択できます。 リストボックスオブジェクトに リンクされた変数 は、行選択の取得、設定、保存に使用します。 この変数はブール配列で、4Dが自動的に作成・管理します。 この配列のサイズは、リストボックスのサイズにより決定されます。つまり、各列に関連付けられた配列のうち、最も小さな配列と同じ数の要素を持ちます。 この配列の各要素には、対応する行が選択された場合にはtrue
が、それ以外の場合はfalse
が設定されます。 4D は、ユーザーの動作に応じてこの配列の内容を更新します。 これとは逆に、この配列要素の値を変更して、リストボックス中の選択行を変更することができます。 他方、この配列への要素の挿入や削除はできず、行のタイプ変更もできません。Count in array
コマンドを使用して、選択された行の数を調べることができます。 たとえば、以下のメソッドは配列タイプのリストボックスで、最初の行の選択を切り替えます:
ARRAY BOOLEAN(tBListBox;10)
// tBListBox はフォーム内にあるリストボックス変数の名前です
If(tBListBox{1}=True)
tBListBox{1}:=False
Else
tBListBox{1}:=True
End if
OBJECT SET SCROLL POSITION
コマンドは、最初に選択された行または指定された行を表示するようにリストボックスをスクロールします。
選択行の見た目のカスタマイズ
リストボックスの セレクションハイライトを非表示 プロパティにチェックを入れている場合には、他のインターフェースオプションを活用してリストボックスの選択行を可視化する必要があります。 ハイライトが非表示になっていても選択行は引き続き 4D によって管理されています 。つまり:
- 配列タイプのリストボックスの場合、当該リストボックスにリンクしているブール配列変数から選択行を割り出します。
- セレクションタイプのリストボックスの場合、特定行 (レコード) がリストボックスの ハイライトセット プロパティで指定しているセットに含まれているかを調べます。
特定された選択行は、それらの背景色やフォントカラー、フォントスタイルなどをプログラムによって調整することで、選択行を独自の方法で可視化することが可能です。 リストボックスのタイプによって、表示の管理は配列や式を使用しておこないます (後述参照)。
リストボックスの現アピアランス (フォントカラー、背景色、フォントスタイル等) を使うには
lk inherited
定数が使用できます。
セレクションリストボックス
選択行を特定するには、リストボックスの ハイライトセット プロパティで指定されているセットに対象行が含まれているかを調べます: 選択行のアピアランスを定義するには、プロパティリストにて カラー式またはスタイ ル式プロパティ を 1つ以上使います。
次の場合には式が自動的に再評価されることに留意ください:
- リストボックスのセレクションが変わった場合
- リストボックスがフォーカスを得た、あるいは失った場合
- リストボックスが設置されたフォームウィンドウが最前面になった、あるいは最前面ではなくなった場合
配列リストボックス
選択行を特定するには、当該リストボックスにリンクしているブール配列 変数 を調べます:
選択行のアピアランスを定義するには、プロパティリストにて 行カラー配列または行スタイル配列プロパティ を 1つ以上使います。
選択行のアピアランスを定義するリストボックス配列は、On Selection Change
フォームイベント内で再計算する必要があることに留意が必要です。また、フォーカスの有無を選択行の表示に反映させるには、次のフォームイベント内でもこれらの配列を変更することができます:
On Getting Focus
(リストボックスプロパティ)On Losing Focus
(リストボックスプロパティ)On Activate
(フォームプロパティ)On Deactivate
(フォームプロパティ) ...いずれを利用するかは、選 択のフォーカス変化を視覚的に表現するかどうか、またどのように表現するかによって異なります。
例題
システムのハイライトを非表示にして、リストボックスの選択行を緑の背景色で表しました:
配列タイプのリストボックスの場合、行背景色配列 をプログラムにより更新する必要があります。 JSON フォームにおいて、リストボックスに次の行背景色配列を定義した場合:
"rowFillSource": "_ListboxBackground",
リストボックスのオブジェクトメソッドに次のように書けます:
Case of
:(FORM event.code=On Selection Change)
$n:=Size of array(LB_Arrays)
ARRAY LONGINT(_ListboxBackground;$n) // 行背景色配列
For($i;1;$n)
If(LB_Arrays{$i}=True) // 選択されていれば
_ListboxBackground{$i}:=0x0080C080 // 背景色を緑にします
Else // 選択されていなければ
_ListboxBackground{$i}:=lk inherited
End if
End for
End case
セレクションタイプのリストボックスで同じ効果を得るには、ハイライトセット プロパティで指定されたセットに応じて 背景色式 が更新されるよう、メソッドを利用します。
JSON フォームにおいて、リストボックスに次のハイライトセットおよび背景色式を定義した場合:
"highlightSet": "$SampleSet",
"rowFillSource": "UI_SetColor",
UI_SetColor メソッドに次のように書けます:
If(Is in set("$SampleSet"))
$color:=0x0080C080 // 背景色を緑にします
Else
$color:=lk inherited
End if
$0:=$color
階層リストボックスにおいては、セレクションハイライトを非表示 オプションをチェックした場合には、ブレーク行をハイライトすることができません。 同階層のヘッダーの色は個別指定することができないため、任意のブレーク行だけをプログラムでハイライト表示する方法はありません。
ソートの管理
ヘッダーがクリックされると、リストボックスはデフォルトで標準的なカラムの並べ替えを自動的におこないます。 標準的な並べ替えとは、列の値を英数字順に並べ替え、続けてクリックされると昇順/降順を交互に切り替えます。 すべての列は常に自動で同期されます。
リストボックスの ソート可 プロパティの選択を解除すると、ユーザーによる標準の並べ替えを禁止することができます。
開発者は、LISTBOX SORT COLUMNS
コマンドを使用するか、または On Header Click
と On After Sort
フォームイベント (FORM Event
コマンド参照) を 4D の配列管理コマンドを組み合わせて 、独自の並べ替えを設定することができます。
ソート可 プロパティは、ユーザーによる標準の並べ替えにのみ影響します。
LISTBOX SORT COLUMNS
コマンドは、このプロパティを考慮しません。
列ヘッダー変数の値を使用すると、列の現在の並べ替え状況 (読み込み) や並べ替え矢印の表示など、追加情報を管理することができます。
-
変数が 0 のとき、列は並べ替えられておらず、矢印は表示されていません;
-
変数が 1 のとき、列は昇順で並べ替えられており、並べ替え矢印が表示されています;
-
変数が 2 のとき、列は降順で並べ替えられており、並べ替え矢印が表示されています。
変数の値を設定して (たとえば Header2:=2)、ソートを表す矢印の表示を強制することができます。 しかし、列のソート順は変更されません、これを処理するのは開発者の役割です。
OBJECT SET FORMAT
コマンドは、カスタマイズされた並べ替えアイコンをサポートする機能をリストボックスヘッダー用に提供しています。
スタイルとカラー、表示の管理
リストボックスの背景色、フォントカラー、そしてフォントスタイルを設定するためにはいくつかの方法があります:
- リストボックスオブジェクト のプロパティリストを使用
- 列 のプロパティリストを使用
- リストボックスまたは列ごとの 配列や式 プロパティを使用
- セルごとのテキストにて定義 (マルチスタイルテキスト の場合)