このドキュメントでは、次のトピックについて説明します。
ダイアログエレメントを操作するために、Natural ではハンドル属性オペランドが提供されています。 Natural ステートメントでオペランドを指定する場合は常に、ハンドル属性オペランドを使用します。 これは、イベントハンドラコードにおける最も重要なプログラミング手法です。
重要:
あらかじめハンドルを定義しておく必要があります。
注意:
ActiveX コントロールの操作方法は、以下に説明する標準の方法とは少し異なります。 これについては、「ActiveX コントロールの操作」に記載されています。
ハンドル属性オペランドは以下のように指定します。
handle.name - attribute.name [(index-specification)] |
handle-name は DEFINE DATA
ステートメントの HANDLE
定義で定義した、dialog-element-type のハンドルです。
attribute-name は、ハンドルの dialog-element-type に対して有効でなければならない属性の名前です。
例
1 #PB-1 HANDLE OF PUSHBUTTON /* #PB-1 is a handle-name of the /* dialog-element-type PUSHBUTTON RESET #PB-1.STRING... /* #PB-1.STRING is the handle attribute operand /* where STRING is a valid attribute-name of the /* dialog-element-type PUSHBUTTON 1 #RB-1(1:5) HANDLE OF RADIOBUTTON /* #RB-1 is an array of five RADIOBUTTONs IF #RB-1.CHECKED(3) = CHECKED /* If the third radio-button control is THEN... /* checked ...
ほとんどのアプリケーションで、以下のことを行う必要があります。
ダイアログエレメントを作成する前に属性値を設定する。
ダイアログエレメントを作成した後に値を変更する。
属性値をクエリする。
場合によっては、例えば、ラジオボタンコントロールのチェック状態をクエリしたり、メニュー項目を使用不可に変更したりするために、処理中にいくつかの属性を変更およびクエリする必要があります。
これは、ASSIGN
、MOVE
、または CALLNAT
ステートメントなどで実行できます。
例
1 #PB-1 HANDLE OF PUSHBUTTON /* #PB-1 is a handle-name of the ... /* dialog-element-type PUSHBUTTON #PB-1.STRING:= 'MY BUTTON' /* Set or modify the value of the STRING /* attribute to 'MY BUTTON' #TEXT:= #PB-1.STRING /* Query the value of the STRING attribute /* and assign the value to #TEXT CALLNAT 'SUBPGM1' #PB-1.STRING /* Query the value of the STRING attribute /* and pass it on to the subprogram
上記の例の 3 つのステートメントの 1 番目のように handle-name 変数をステートメントの左辺だけに使用すると、属性値が設定または変更されます。つまり、指定した operand の値が属性値に割り当てられます。
2 番目のステートメントのように handle-name 変数をステートメントの右辺に使用すると、属性値がクエリされます。つまり、属性値が operand に割り当てられます。
ハンドルは、(指定した Natural コードで明示的に、またはダイアログエディタで暗黙的に)いったん定義すると、ほとんどの Natural ステートメントで使用できます。 ただし、特定のダイアログエレメントに対しては、特定の属性だけをクエリ、設定、または変更できます。 属性に定義できる値については、『ダイアログコンポーネントリファレンス』の「属性」を参照してください。
ほとんどの属性値には正確なデータタイプを指定しますが、ハンドル属性オペランドには MOVE での互換性のある値を指定すれば十分です。 この規則は Natural 変数の場合と同じです。
以下のステートメントでは、ハンドル属性オペランドを使用しないでください。
AT BREAK
、FIND
、HISTOGRAM
、INPUT
、READ
、READ WORK FILE
代わりに、ユーザー定義変数を使用できます。
英数字属性に数値オペランドを割り当てると、これらの属性の値は非表示形式になります。 Natural の算術代入規則が適用されます。
表示形式にする場合は、MOVE EDITED
を使用できます。
例
#PB-1.STRING:= -12.34 /* Non-displayable format MOVE EDITED #I4 (EM = -Z(9)9) TO #PB-1.STRING /* Displayable format
以下の編集マスクを使用して、さまざまなフォーマット/長さの数値オペランドを定義できます。
フォーマット/長さ | 編集マスク |
---|---|
I1 | -ZZ9 |
I2 | -Z(5)9 |
I4 | -Z(9)9 |
Nn.m/Pn.m | -Z(n).9(m) |