タブ - タブ間連携
タブ間でデータ連携をしたい
ApplicationクラスのpostInterContextMessageメソッドを利用したタブ間のデータ連携が
可能となります。
上記メソッドを実行すると、RootクラスのInterContextMessageイベントが発生しこのイベントを
捕捉する事でデータが取得可能です。
連携を行う場合は、事前にsetCurrentContextInfoメソッドを利用して連携先の目印となる
サービスID、ポートIDを指定します。
サービスID、ポートIDは、新たにタブを開くタイミングでセットする事も可能です。
【サンプル実行方法】
「1)データ送信側プログラム」を「Tab-006-0011.crs」
「2)データ受信側プログラム」を「Tab-006-0012.crs」
として作成し「Tab-006-0011.crs」から実行してください。
1)データ送信側プログラム
Form Form1 { width = 441; height = 281; Button button1 { x = 32; y = 40; width = 312; height = 88; title = "新しくタブを開き、開いた画面上に\n連携したデータを表示します。"; Function onTouch(e) { # 新しいタブを開いて、サービスIDとポートIDを一緒に引き渡す。 Application.login("Tab-006-0012.crs",Application.TARGET_NEWTAB,"serviceid=S101&portid=P022"); var m = new Map; m["製品カテゴリ"] = 1; m["製品名"] = "Biz/Browser DT"; m["製品概要"] = "Biz/Browser DTは、CRSスクリプトで開発したアプリケーションの実行環境です。"; # 新しく開いたタブにメッセージを送付 Application.postInterContextMessage("S101", "P022", m); } } }
2)データ受信側プログラム
if( !Application.DESIGNTIME ){ # 起動時に受け取るサービスIDとポートID String ServiceID = Application.getProperty("serviceid"); String PortID = Application.getProperty("portid"); # サービスID、ポートIDをセット (セットしない場合、連携不可) Application.setCurrentContextInfo(ServiceID, PortID); } # コンテキスト間メッセージ受信イベント ハンドラ Function onInterContextMessage(e) { # タブを選択状態にセット root.setWindowState(WindowObject.STATE_FRONT); /*パラメータ全て出力*/ form2.editbox1 += e.param._toString(); /*パラメータを個々に取得して出力*/ form2.editbox2 += e.param["製品カテゴリ"] + "\n"; form2.editbox2 += e.param["製品名"] + "\n"; form2.editbox2 += e.param["製品概要"] + "\n"; } Form form2 { width = 441; height = 473; EditBox editbox1 { x = 40; y = 40; width = 336; height = 168; value = "【パラメータ全て出力】\n"; } EditBox editbox2 { x = 40; y = 256; width = 336; height = 168; value = "【パラメータを個々に取得して出力】\n"; } }
Biz-Collections Bizの宝箱 トップへ
Biz/Browser DT・Biz/Designer DT TIPS集 トップへ