リストボックスを階層表示にするよう指定することができます。階層リストボックスは左の列が階層状に表示されます。このタイプの表示方法は、繰り返される値や、階層に依存するデータの表示などに適用できます (国/地域/都市など)。
配列タイプのリストボックスのみを階層にできます。
階層リストボックスはデータを表示する特別な方法ですが、データの構造 (配列) は変更しません。階層リストボックスは通常のリストボックスと全く同じ方法で管理されます。
階層リストボックスと指定するには、3つの方法があります:
この節では4Dのフォームエディターで階層リストボックスを作成する方法と、実行時にそれがどのように動作するかについてその基礎を説明します。階層リストボックスのプログラムによる管理 (選択やブレーク、On ExpandやOn Collapseフォームイベントの利用方法等) については、4Dランゲージリファレンスマニュアルの階層リストボックスの管理を参照してください。
プロパティリストの"階層"テーマで階層モードを設定できます。詳細はリストボックス特有のプロパティを参照してください。
フォームエディターのリストボックスの列エリアを右クリックして表示されるコンテキストメニューから、階層を作成や階層をキャンセルコマンドにアクセスできます。
フォームエディター中で配列タイプのリストボックスオブジェクトの一番目から任意の数の列を選択すると、階層を作成コマンドがコンテキストメニューから利用できるようになります:

このコマンドを選択すると、以下のアクションが実行されます:
- そのオブジェクトのプロパティリストで"階層リストボックス"オプションが選択されます。
- その列の変数が階層を指定するために使用されます。既に設定されていた内容は新しい内容で置き換えられます。
- (最初の列を除き) 選択された列はリストボックス内に表示されなくなります。
例: 左から国、地域、都市、人口列が設定されたリストボックスがあります。国、地域、都市が (下図の通り) 選択され、コンテキストメニューから階層を作成を選択すると、最初の列に3レベルの階層が作成され、二番目と三番目の列は取り除かれます。人口列が二番目になります:
階層リストボックスとして定義されたリストボックスで最初の列を選択すると、階層をキャンセルコマンドを使用できます。このコマンドを選択すると以下のアクションが実行されます:
- そのオブジェクトの"階層リストボックス"オプションの選択が解除されます。
- 2番目以降の階層レベルが削除され、通常の列としてリストボックスに追加されます。
階層リストボックスを含むフォームが最初に開かれる際、デフォルトですべての行が展開されています。
配列中で値が繰り返されていると、ブレーク行と階層"ノード"が自動でリストボックスに追加されます。例えばリストボックスに都市に関する4つの配列が含まれていて、それぞれ国、地域、都市名、人口データが含まれているとします:

リストボックスが階層形式で表示されると (先頭3つの配列が階層化されている場合)、以下のように表示されます:

階層を正しく構築するためには、事前に配列をソートしなければなりません。例えば配列中にデータがAAABBAACCの順で含まれていると、階層は以下のようになります:
> A
> B
> A
> C
階層"ノード"を展開したり折りたたんだりするには、ノード上をクリックします。ノード上をAlt+クリック (Windows) または Option+クリック (Mac OS) すると、すべてのサブ要素が同時に展開されたり折りたたまれたりします。
階層モードのリストボックスにおいて、(リストボックス列のヘッダーをクリックして実行される) 標準の並び替えは常に以下のように行われます:
- まず階層列 (一番目の列) のすべてのレベルが自動で昇順にソートされます。
- 次にクリックされた列の値を使用して昇順または降順にソートが実行されます。
- すべての列が同期されます。
- その後の非階層列のソート時には、一番目の最後のレベルのみがソートされます。この列のソートはそのヘッダーをクリックすることで行えます。
まだソートされていない以下のリストボックスがあります:

"Population"ヘッダーをクリックして人口に基づき昇順あるいは降順でソートを行うと、データは以下のように表示されます:

通常のリストボックスと同様、リストボックスの"ソート可"オプションの選択を解除することで標準のソートメカニズムを無効にし、プログラムでソートを管理できます。
階層リストボックスに日付や時間型の値を表示する際、それらは標準フォーマットで表示されます:
- 日付はShort system formatで表示されます (例えば2009年5月30日の場合、日本語システム上では09/05/30と表示されます)。
- 時間もShort system formatで表示されます (システムパラメターに基づき"12:15:30"または"12:15"で表示されます)。