両方のオブジェクトが同じユーザーアクション("コマンド")を表すとみなされるような 2 つのコントロール("オブジェクト")の間の等価関係を指定します。 これにより、Natural でユーザーインターフェイスの整合性が暗黙的に保証されます。 整合性とは、同じコマンドを表しているすべてのユーザーインターフェイス要素が常に同じ状態であるということを意味しています。 例えば、メニュー項目とツールバー項目が同じコマンドを表している場合は常に、両方とも有効にされるか、または両方とも無効にされます。 さらに Natural では、コマンドが呼び出されるとき、それを呼び出したメニューまたはツールバー項目に関係なく、同じイベントハンドリングコードが実行されます。
参照されるオブジェクトは、シグナルまたはメニュー項目です。 参照しているオブジェクトはツールバー項目またはメニュー項目です。 2 つのメニュー項目間の SAME-AS 関係は許可されません。 2 ステップアプローチは、ツールバー項目がメニュー項目を参照する方法で、メニュー項目自体はシグナルを参照します。この方法は可能ですが、お勧めしません。 代わりに、ツールバー項目が、メニュー項目と同様にシグナルを直接参照するようにしてください。 各種ダイアログに属しているオブジェクト間の SAME-AS 関係が許可されます。 従って、MDI 子ダイアログのオブジェクトは MDI フレームダイアログのオブジェクトを参照できます。
各コマンドに対して、SAME-AS 関係は従属ツリーを形成します。 別のオブジェクトへの SAME-AS 関係を持たないツリー内のオブジェクトは、root オブジェクトです。 1 つ以上の SAME-AS 関係が存在するツリーのあらゆるオブジェクトは referenced オブジェクトと呼ばれ、それを(直接または間接に)参照するオブジェクトはそのオブジェクトの dependent オブジェクトと呼ばれます。
反映とは、属性設定が反映される各オブジェクトに対して、同じ属性は暗黙的に同じ値に設定されることを意味します。 さらに、SAME-AS 関係が NULL-HANDLE 以外の値に設定されると、上記のすべての属性の値は、参照されるオブジェクトから参照しているオブジェクトに直ちにコピーされます。 SAME-AS 属性を NULL-HANDLE に設定するとこの関係が破壊され、オブジェクトの作成時の属性値が復元されます。
さらに、非ルートオブジェクトに対してクリックを受け取ると、代わりにルートオブジェクトに対して CLICK イベントが発生します。 これにより、コマンドがアクセスされる方法に関係なく、同じコードが実行されるようになります。
例として、コマンドが、メニュー項目、コンテキストメニュー項目、またはツールバー項目からアクセスできる場合を考えます。 これら 3 つのオブジェクトのそれぞれに対して一連の状態属性を管理するよりも、コマンドを表すシグナルを作成し、3 つのオブジェクトすべての SAME-AS 属性をこのシグナルのハンドルに設定する方が容易です。 現在は、シグナルの属性だけをプログラムによって管理する必要があります。 例えば、シグナルの CHECKED 属性を TRUE に設定すると、メニュー項目とツールバー項目の CHECKED 属性がどちらも暗黙で TRUE に設定され、ともにチェックされます。 さらに、ユーザーがメニュー項目とツールバー項目のどちらをクリックしたかに関係なく、代わりに CLICK イベントがシグナルに対して受け取られます。
対象 | メニュー項目、ツールバー項目。 |
---|---|
データタイプ | HANDLE |
デフォルト値 | NULL-HANDLE |
設定可能値 | NULL-HANDLE/任意のシグナルまたは(ツールバー項目についてのみ)メニュー項目ハンドル |