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

ダイアログエレメントを操作する方法

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


はじめに

ダイアログエレメントを操作するために、Natural ではハンドル属性オペランドが提供されています。 Natural ステートメントでオペランドを指定する場合は常に、ハンドル属性オペランドを使用します。 これは、イベントハンドラコードにおける最も重要なプログラミング手法です。

重要:
あらかじめハンドルを定義しておく必要があります。

注意:
ActiveX コントロールの操作方法は、以下に説明する標準の方法とは少し異なります。 これについては、「ActiveX コントロールの操作」に記載されています。

ハンドル属性オペランドは以下のように指定します。

handle.name - attribute.name [(index-specification)]

handle-nameDEFINE 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 ...

Top of page

属性値のクエリ、設定、および変更

ほとんどのアプリケーションで、以下のことを行う必要があります。

場合によっては、例えば、ラジオボタンコントロールのチェック状態をクエリしたり、メニュー項目を使用不可に変更したりするために、処理中にいくつかの属性を変更およびクエリする必要があります。

これは、ASSIGNMOVE、または 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 変数の場合と同じです。

Top of page

制限

以下のステートメントでは、ハンドル属性オペランドを使用しないでください。

AT BREAKFINDHISTOGRAMINPUTREADREAD WORK FILE

代わりに、ユーザー定義変数を使用できます。

Top of page

数値/英数字割り当て

英数字属性に数値オペランドを割り当てると、これらの属性の値は非表示形式になります。 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)

Top of page