EventListenerクラスはイベントを受信するためのクラスですが、EventListenerクラス固有のイベントは定義されていません。
PostExternalEventメソッドで指定されたイベントが発生します。例えば、以下の例のようになります。
送り側
EventSender sender {
Function sendEvent() {
PostExternalEvent("Test", "P1", "Sample", "hello");
}
}
受け側
EventListener listener {
Service = "Test";
PortId = "P1";
StartListen();
Function OnSample(e) {
MessageBox(e.param);
}
}
この例の場合、PostExternalEventメソッドの第3パラメータeventNameにより"Sample"が渡されているので、受け手にはSampleイベントが発生します。このイベントはOnSampleイベントハンドラで受け取ることができます。
PostExternalEventで送付されたイベントには、paramというString型、またはUString型の子オブジェクトが含まれています。paramには、PostExternalEventの第4パラメータparamで指定した文字列が格納され、アプリケーションの自由な用途で利用することができます。
よりEventListenerのValueTypeの指定をUStringに指定することにより、paramをUString型として受け取ることが可能になりました。
複数のパラメータをイベントハンドラに渡したい場合、以下のようにデリミタを使って1個の文字列にまとめて送付する必要があります。
送り側
Number NumData1;
Number NumData2;
String StrData1;
String StrData2;
:
var param;
param = str(NumData1) + "//" + str(NumData2) + "//" + StrData1 + "//" + StrData2;
sender.PostExternalEvent("Test", "P1", "Sample", param);
受け側
Function OnSample(e) {
var param = e.param.Split("//");
var NumData1 = val(param[0]);
var NumData2 = val(param[1]);
var StrData1 = param[2];
var StrData2 = param[3];
}
この例ではデリミタに"//"を使用しましたが、アプリケーションで利用される文字列の特性に合わせて、適切なデリミタを選択してください。