実行時、.NETオブジェクトはイベントを発行させることができます。Magic xpaのイベントハンドラはこれらのイベントを処理することができます。
大部分の.NETコントロールで利用できる一般的なイベント(例えばOnMouseClick)があり、そのコントロールを指定することができます。Magic xpa内で、.NETイベントを補足し、それに対する処理を定義することができます。これによって、.NETオブジェクトを使用した操作を異なるレベルで実現することができます。
.NETイベントを処理するために、イベント用のロジックユニットを作成し、[イベントタイプ]を「.NET」に設定してください。
.NET項目か.NETクラスを定義することで.NETイベントを選択することができます。
各コントロールに対応したロジックユニットを作成する代わりに、ロジックなしで[.NET]コントロールとMagic xpaのデータ項目を同期させることができます。.NETモデルを作成して、バインディング特性を設定することによって実現できます。
[イベント]ロジックユニットが.NET項目で定義された場合、指定された項目に対応するロジックユニットになります。
[イベント]ロジックユニットが.NETクラスで定義された場合、タスクや実行時のタスクツリー内に定義されているオブジェクトの任意のインスタンスに対する汎用的なロジックユニットになります。これは、メインプログラムのロジックユニットで役立ちます。これは、様々なオブジェクトのオブジェクトレベルのイベントに対して適用されます。
処理するイベントを選択すると、Magic xpaは、オブジェクトがパラメータを受け取るかどうかをチェックします。パラメータを受け取る場合は、自動的にパラメータ項目を作成するかどうかを確認するメッセージを表示します。
有効なイベントの選択リスト内には、Magic xpaの内部イベント(例えばOnDoubleClick)と同じような名前が表示されています。これらは、Magic xpaのイベントと同じように動作します。[.NET]コントロールを使用する場合、.NETイベントを使用してください。Magic xpaのイベントではありません。
伝播とイベント処理規則
Magic xpaでは、イベントを処理し、実行時のタスクツリー内の親タスクにそのイベントを伝播することができます。.NETオブジェクトをフォームのコントロールとしている場合は、同じように動作します。
親タスクでイベントを処理するには、.NETオブジェクトに対応したロジックユニットを定義します。フォーム上のコントロールとして配置されていない.NETオブジェクトを持っている場合、.NETオブジェクトは異なるタスク内の異なるデータ項目を参照することができます。たとえば、タスクのパラメータとしてデータ項目を渡すような場合があります。イベントが.NETオブジェクトによって発行されると、そのオブジェクトを参照しているデータ項目を持つすべてのタスクで処理することができます。これらのイベントには伝播されないため、親タスクでイベントを処理したい場合、親タスクで同じようにそのオブジェクトを参照できるようにする必要があります。
Magic xpaは、2つのタイプの.NETオブジェクトとその応答を区別して処理します。
フォームに配置される.NETオブジェクトの場合:
[.NET]コントロール上のイベントは、Magicイベントとして処理されます。
これは、親タスクでオブジェクトタイプを選択するだけで、[伝播]特性を使用できることを意味しています。
フォームに配置されない.NETオブジェクトの場合:
.NETオブジェクトがイベントを発行した場合、2つの異なる.NET項目が同じ.NETオブジェクトを参照することができるため、Magic xpaは、項目が定義されている各タスク内でイベントを発行します。
例えば、タスク1に項目Aが、タスク2に項目Bが定義されている場合、項目Bが項目Aで更新され、両方のタスクに.NETイベントに対するロジックユニットが定義されているとすると、.NETオブジェクトがイベントを発行すると、それは両方のタスクでイベントが処理されます。
オンラインタスクの場合は、イベントは全てのコンテキスト内で発生します。リッチクライアントタスクの場合は、現在のコンテキス内でのみ発生します。
[伝播]特性は、このようなイベントには関係しません。
タスクが項目を定義しないで定義されたハンドラのみを持っている場合、イベントは処理されず使用されないことを意味しています。
タスク内の.NETクラス用の一般的なハンドラを使用することができますが、それを作動させるためには、そのクラスに対応する項目をタスク内に定義する必要があります。
イベントパラメータ
Magicイベントと同じように.NET イベントにもパラメータが必要なものがあります。
イベントによってはほとんどの場合、.NETイベントに対応するロジックユニットを定義する際、2つのパラメータ(senderとe)がロジックユニットに追加されます。senderは、イベントが発行されたオブジェクトで、eはイベントパラメータです。senderは、「オブジェクト」という.NETタイプが定義されています。これは汎用的なオジェクトであり、簡単に処理することはできません。
DNCast関数を使用してオブジェクトタイプを特定の.NETオブジェクトに変換することができます。例えば、System.Windows.Forms.TextBoxはこのオブジェクトを参照し、System.Windows.Forms.TextBoxのすべてのプロパティとメソッドにアクセスすることができます。
DNCast関数を使用することで、以下のように.NETオブジェクトタイプを直接指定することができます。
DNCast(A,DotNet.System.Windows.Forms.TextBox).Text |
注意: |
.NETイベントは非同期で処理されます。これは、イベントパラメータを更新しても、イベントを発行したオブジェクトには影響しないことを意味します。 |