![]() |
||
| WideStudio Application Builder User's Guide(Java言語) | ||
|---|---|---|
EXIT トリガによる終了イベントプロシージャでダイアログを表示するにはウィンドウを閉じてアプリケーションを終了する場合、データの保存を行った り、終了するか否かをダイアログを表示したい場合があります。そのような場 合、WSCwindow / WSCmainWindow クラスの EXIT トリガでイベントプロシージャ を使うと便利です。WSCwindow/WSCmainWindow クラスは、ウィンドウが不可視 状態になった場合に、EXIT トリガをあげ、アプリケーションが終了する前に、 イベントプロシージャを実行する機能を持っています。まず、WSCwindow もしくは WSCmainWindow クラスのプロパティ "exit" を True にします。このプロパティは、アプリケーション中のウィンドウで特に メインで用いられるものに設定すると良いでしょう。そしてそのウィンドウに 対して、EXIT トリガでイベントプロシージャを張り付けます。 次のような機能を持つイベントプロシージャを作ってみます。
//in delayproc.java
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
import org.widestudio.mwt.*;
// オブジェクトを表示しなおすタイマープロシージャ
public class delayproc {
static WSCvtimer timer = null;
static WSCbase target = null;
protected static void delayproc(WSCbase object){
if (target != null){
target.setVisible((short)Mwt.True);
}
}
}
//in exit_ep.java
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
import org.widestudio.mwt.*;
// EXIT イベントプロシージャ本体
// 終了時にダイアログを表示する。
public class exit_ep {
protected static void exit_ep(WSCbase object){
if (object.getVisible() != Mwt.False){
return;
}
WSCmessageDialog msg = Mwt.WSGIappMessageDialog(); //A
msg.setProperty("width",500);
msg.setProperty("no",Mwt.True);
msg.setProperty("defaultPosition",Mwt.True);
msg.setProperty("labelString",
"Exit and save data?\n If you do not want to save and exit,push NO...");
// ダイアログの表示
long ret = msg.popup(); //B
// 初回実行時、タイマーを作成
if (delayproc.timer == null){
WSCbase parent = object.getParentWindow();
delayproc.timer = new WSCvtimer(parent,"objname");
delayproc.timer.init();
delayproc.timer.setVariantData("variable_name","delayproc.timer");
delayproc.timer.setProperty("interval",250);
delayproc.timer.setProperty("cont",Mwt.False);
delayproc.timer.addProcedure("delay-popup","delayproc.delayproc",Mwt.WSEV_ACTIVATE);
}
if (ret == Mwt.WS_DIALOG_OK){ // OKボタンがおされた場合 C
// saving some data ...
System.exit(0);
}else if (ret == Mwt.WS_DIALOG_NO){ // NOボタンがおされた場合 D
System.exit(0);
}else if (ret == Mwt.WS_DIALOG_CANCEL){ // CANCELボタンが押された場合 E
delayproc.target = object;
delayproc.timer.setProperty("running",Mwt.True); // タイマーの起動
}
}
}
A で、メッセージダイアログインスタンスを取得し、B でメッセージダイアログを
表示します。C、D、E でダイアログの結果を判定し、OKボタンがおされたならば C、NO ボ タンがおされたならば D、CANCEL ボタンがおされたならば E となります。 E の終了せずに再び、表示しなおす場合、タイマーを使って、少しタイミング を送らせる必要があります。これは、ウィンドウシステムに対し、既に画面終 了イベントが発生しているため、そのイベントの処理が確実に処理されてから、 表示を行わなければならないからです。 ![]() [終了確認ダイアログ] Document Release 3.80 for WideStudio ver 3.80, Jan 2005
|
||
![]() |
| バグ情報、ご質問等ございましたら、メーリングリストでご確認の上、 御気軽にこちらの方までよろしくお願いいたします。 |
|
Copyright©WideStudio Development Team,1999-2005
|


