プログラムによりウィンドウを生成、管理する
フレームワーク・マネージャー上でメソッドavShowWindowを呼び出すことにより、ウィンドウを生成、管理することができます。例えば以下のようになります。
MYWINDOWという別のウィンドウに、フレームワーク全体の新しいインスタンスを開く:
#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(FRAMEWORK) WindowName(MYWINDOW)
DEMONSTRATIONアプリケーションを開く:
#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(APPLICATION) ofType(DEMO) WindowName(DEMO_WINDOW)
HRという名前のアプリケーション・ビューを開く:
#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(VIEW) ofType(HR) WindowName(DEMO_VIEW)
ビジネス・オブジェクトOrganizationsおよびResourcesを、それぞれ独立したウィンドウに開く:
#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(BUSINESSOBJECT) ofType(DEM_ORG) WindowName(DEMO_EMP)
#AvFrameworkManager.avShowWindow Caller(#Com_Owner) For(BUSINESSOBJECT) ofType(DEM_ORG_SEC_EMP) WindowName(DEMO_SECTION)
avShowWindowの呼び出しで、「OfType(XXXXXXX)」の形で指定できるのは、対応するオブジェクトのプロパティの識別子タブで、ユーザー オブジェクトタイプとして指定した値です。
avShowWindowメソッドの使い方
avShowWindowメソッドは、指定された名前のウィンドウが存在するかどうか確認します。
存在している場合、最小化されていればそれを解除した上で、他のフレームワーク・ウィンドウよりも前面に出します。
また、存在しなければ生成するようになっています。
いずれの場合も、次のように動作します。
· ウィンドウを開く際、情報プロパティやオブジェクト参照を、指定に応じて更新します(「ウィンドウを開く際に渡す情報」を参照)。
· 指定されたアプリケーションやビジネス・オブジェクトへの切り替えを、ウィンドウ内で実行します。
このメソッドの呼び出しは、端的に言うと、フレームワークに対して、「この名前でウィンドウを表示し、この情報を渡し、このアプリケーション/ビジネス・オブジェクトに切り替えよ」という指示を送ることに相当します。
ウィンドウの生成や切り替えは、プログラムの流れとは同期せずに起こります。したがって、avShowWindowを呼び出した直後に、開いているウィンドウをすべて列挙しようとしても、生成したはずのウィンドウが見つからないことがあります。
ウィンドウ名
先の例からも分かるように、ウィンドウにはシンボル名があります。ウィンドウ名については、次の点に注意してください。
· ALL、MAIN、CURRENTという名前は予約されており、使えません。
· エンド・ユーザーが開いたウィンドウには、自動的にUSER_で始まる一意的な名前が付きます。フレームワークにログオンし直したりバージョンを変えたりすると、この名前は変わってしまいます。
· エンド・ユーザーの目に触れる形でこの名前が表示されることはありません。プログラム処理のために使うものであり、大文字と小文字の区別はなく、長さは256字に達する可能性があります。英字は通常、大文字として扱われるので、'A'〜'Z'、'0'〜'9'の範囲の文字のみ使うようお勧めします。
· ウィンドウ名によりウィンドウを一意的に識別できるのは、同じフレームワーク・プロセス(LANSA X_RUN.EXEプロセス)の範囲内に限ります。したがって、X_RUN.EXEプロセスを複数立ち上げた場合、それぞれに同じTESTWINDOWという名前のウィンドウがあるかも知れません。TESTWINDOWというウィンドウにシグナルを送るまたは切り替えるなどの操作を施す場合、その対象は、現在のX_RUN.EXEプロセスに属するウィンドウになります。他のプロセスに属するウィンドウの操作はできません。