バージョン 6.3.3
 —  プログラミングガイド  —

ダイアログ、コントロール、および項目が階層的に関連付けられる仕組み

ダイアログおよびダイアログエレメントは階層的に構成されます。 通常、ダイアログウィンドウは多くのコントロールを含みます。 コントロールは、ウィンドウまたはコンテナとして機能できる他のコントロールの子です。 コントロールには、多くの項目を含めることができます。 例えば、リストボックスコントロールは、複数のリストボックス項目を含めることができ、 これら項目の親となります。

ダイアログ自体も階層的に構成されます。 OPEN DIALOG ステートメントを指定するたびに、新規作成するダイアログの親をパラメータとして指定する必要があります。 このパラメータは NULL-HANDLE または既存ダイアログのハンドルです。 NULL-HANDLE を指定すると、ダイアログは他のダイアログではなくデスクトップに属します。 つまり、ダイアログはアプリケーション内の他のダイアログに関係なく閉じたり、最小化したりできます。 既存ダイアログを親として持つダイアログは、親ダイアログが閉じたり最小化したりすると、親と同じように動作します。

アプリケーションの最初のダイアログは特別な役割を果たし、基本ダイアログと呼ばれることがあります。 基本ダイアログを閉じると、アプリケーション内の他のダイアログもすべて、基本ダイアログの子であるかどうかに関係なく閉じられます。

同一階層レベルの子はすべて生成順にソートされます。 したがって、各ダイアログエレメントは、自分の親、(同一階層レベルの)自分の前と後ろ、および最初と最後の子(存在する場合)を常に "認識" していることになります。 この情報は以下の属性を使用して知ることができます。

これらの属性はダイアログエレメントのハンドル値を含みます。 ハンドル値が NULL の場合、ダイアログエレメントは親、同レベルの前、後ろ、または子を持ちません。 以下の例は、ダイアログの全ダイアログエレメントの調べ方を示しています。

例 1

1 #CONTROL HANDLE OF GUI 
 
#CONTROL := #DLG$WINDOW.FIRST-CHILD 
REPEAT UNTIL #CONTROL = NULL-HANDLE 
  ... 
  #CONTROL := #CONTROL.SUCCESSOR 
END-REPEAT

リストボックスコントロールおよびリストボックス項目には、さらに 1 つの属性があります。

SELECTED-SUCCESSOR は、リストボックスコントロール自体またはリストボックス項目に対して設定できます。 これはリストボックスコントロール内の次に選択される項目を指します。 リストボックスコントロール自体の場合は、最初に選択される項目を示します。

例 2

1 #ITEM HANDLE OF LISTBOXITEM 
 
#ITEM := #LISTBOX.SELECTED-SUCCESSOR 
REPEAT UNTIL #ITEM = NULL-HANDLE 
  ... 
  #ITEM := #ITEM.SELECTED-SUCCESSOR 
END-REPEAT

例 2 は、複数選択(MULTI-SELECTION 属性)が可能なリストボックスコントロールで選択されたすべての項目を見つけるために必要なクエリです。

Top of page