![]() |
![]() |
![]() |
![]() |
WideStudio Application Builder User's Guide(Python言語) | ||
---|---|---|
EXIT トリガによる終了イベントプロシージャでダイアログを表示するにはウィンドウを閉じてアプリケーションを終了する場合、データの保存を行った り、終了するか否かをダイアログを表示したい場合があります。そのような場 合、WSCwindow / WSCmainWindow クラスの EXIT トリガでイベントプロシージャ を使うと便利です。WSCwindow/WSCmainWindow クラスは、ウィンドウが不可視 状態になった場合に、EXIT トリガをあげ、アプリケーションが終了する前に、 イベントプロシージャを実行する機能を持っています。まず、WSCwindow もしくは WSCmainWindow クラスのプロパティ "exit" を True にします。このプロパティは、アプリケーション中のウィンドウで特に メインで用いられるものに設定すると良いでしょう。そしてそのウィンドウに 対して、EXIT トリガでイベントプロシージャを張り付けます。 次のような機能を持つイベントプロシージャを作ってみます。 #---------------------------------------------------------- #Function for the event procedure #---------------------------------------------------------- # オブジェクトを表示しなおすタイマープロシージャ import mwt import sys timer = None target = None def delayproc(object): if (target != None): target.setVisible(mwt.True); return mwt.WSGFfunctionRegister("delayproc",delayproc) # EXIT イベントプロシージャ本体 # 終了時にダイアログを表示する。 def exit_ep(object): if (object.getVisible() != mwt.False): return; 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..."); # ダイアログの表示 ret = msg.popup(); #B # 初回実行時、タイマーを作成 global timer if (timer == None): timer = mwt.WSCvtimer(object,"objname"); timer.initialize(); timer.setProperty("interval",250); timer.setProperty("cont",mwt.False); timer.addProcedure("delay-popup","delayproc",mwt.WSEV_ACTIVATE); if (ret == mwt.WS_DIALOG_OK): # OKボタンがおされた場合 C # saving some data ... mwt.WSGIappDev().exit(0); elif (ret == mwt.WS_DIALOG_NO): # NOボタンがおされた場合 D mwt.WSGIappDev().exit(0); elif (ret == mwt.WS_DIALOG_CANCEL): # CANCELボタンが押された場合 E global target; target = object; timer.setProperty("running",mwt.True); # タイマーの起動 return mwt.WSGFfunctionRegister("exit_ep",exit_ep)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
|
![]() |