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

ダイアログエレメントを定義する方法

このドキュメントでは、次のトピックについて説明します。


はじめに

ダイアログエレメントはハンドルによって一意に識別されます。 ハンドルとは、ダイアログエレメントの作成時に返されるバイナリ値のことです。 ハンドルは、ダイアログの 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 つのハンドル変数から別のハンドル変数に割り当てられます。

Top of page

GUI のハンドル

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

Top of page

NULL-HANDLE

HANDLE 定数 NULL-HANDLE は、HANDLENULL 値をクエリ、設定、または変更するために使用できます。 この NULL 値は、ダイアログエレメントが(明示的に作成された場合でも)存在しないことを意味します。

例:

DEFINE DATA PARAMETER 
  1 #PUSH HANDLE OF PUSHBUTTON 
END-DEFINE 
... 
IF #PUSH = NULL-HANDLE 
...

HANDLE 定数 NULL-HANDLE は、HANDLE 変数または HANDLE 形式の属性の NULL 値を表します。 HANDLE 変数の場合は、この値は、式 handle.attribute がグローバル属性リストを指すことを示します。 属性の場合は、値が現在設定されていないことを示します。

Top of page