このドキュメントでは、次のトピックについて説明します。
ダイアログエレメントはハンドルによって一意に識別されます。 ハンドルとは、ダイアログエレメントの作成時に返されるバイナリ値のことです。 ハンドルは、ダイアログの DEFINE DATA
ステートメントに定義する必要があります。
ダイアログエディタでダイアログまたはダイアログエレメントを作成します。この場合、ハンドル定義が生成されます。
ダイアログのグローバル、ローカル、またはパラメータの各データエリアに定義を明示的に入力します。
サブプログラムまたはサブルーチンに定義を明示的に入力します。
注意:
ActiveX コントロールのハンドルの定義方法は、以下に説明する標準のハンドル定義方法とは少し異なります。 これについては、「ActiveX コントロールの操作」に記載されています。
ハンドルは DEFINE DATA
ステートメント内に以下のように定義されます。
level handle-name [(array-defintion)] HANDLE OF dialog-element-type
|
ハンドルは任意の level に定義できます。
Handle-name は、ハンドルに割り当てる名前です。ユーザー定義変数の命名規則が適用されます。
Dialog-element-type は、ダイアログエレメントのタイプです。 設定可能値は、TYPE
属性の値です。 これは再定義できず、グループの再定義に含めることができません。
例
1 #SAVEAS-MENUITEM HANDLE OF MENUITEM 1 #OK-BUTTON (1:10) HANDLE OF PUSHBUTTON
ハンドルを定義すると、オペランドを指定できる Natural ステートメントのハンドル属性オペランドに handle-name を使用できます。 ハンドル属性オペランドを使用すると、定義された dialog-element-type に対し、例えば属性値のクエリ、設定、または変更をダイナミックに実行できます。 これは、ダイアログエディタにおける最も重要なプログラミング手法です。 詳細については、「ダイアログエレメントを操作する方法」を参照してください。
2 つの異なるダイアログに同じダイアログエレメントのハンドル名があっても、PARENT
属性(異なる 2 つの PARENT
値)によって、Natural では 2 つのハンドルを確実に区別できます。 ハンドルはパラメータとして渡されるか、または 1 つのハンドル変数から別のハンドル変数に割り当てられます。
1 つのダイアログエレメントを指すハンドルタイプの他に、総称的なハンドルタイプ HANDLE OF GUI
があります。 イベントハンドラコードで HANDLE OF GUI
を使用すると、任意のタイプのダイアログエレメントのハンドルを参照できます。
例えば、あるレベルですべてのダイアログエレメントの属性値に対してクエリを実行している場合、すなわち複数のダイアログエレメントに順番にクエリをする場合、このクエリ中に、どのタイプのダイアログエレメントに対して次にクエリが実行されるかわからないときにこれが役に立つことがあります。 GUI ハンドルを使うと、タイプに関係なく、次のダイアログエレメントをクエリできます。 その結果、各ダイアログエレメントの属性値を個別にクエリする必要がなくなるため、コーディングを大幅に削減できます。
例:
... 1 #CONTROL HANDLE OF GUI ... #CONTROL := #DLG$WINDOW.FIRST-CHILD REPEAT UNTIL #CONTROL = NULL-HANDLE ... #CONTROL := #CONTROL.SUCCESSOR END-REPEAT
HANDLE
定数 NULL-HANDLE
は、HANDLE
の NULL
値をクエリ、設定、または変更するために使用できます。 この NULL
値は、ダイアログエレメントが(明示的に作成された場合でも)存在しないことを意味します。
例:
DEFINE DATA PARAMETER 1 #PUSH HANDLE OF PUSHBUTTON END-DEFINE ... IF #PUSH = NULL-HANDLE ...
HANDLE
定数 NULL-HANDLE
は、HANDLE
変数または HANDLE
形式の属性の NULL
値を表します。 HANDLE 変数の場合は、この値は、式 handle.attribute がグローバル属性リストを指すことを示します。 属性の場合は、値が現在設定されていないことを示します。