![]() |
||
| WideStudio Application Builder User's Guide(Python言語) | ||
|---|---|---|
サンプルイベントプロシージャ・インプットフィールド編リターンキーで特定のイベントプロシージャを実行するにはイベントプロシージャにおいて、特定のイベントプロシージャを起動するこ とをしてみましょう。ここでは、リターンキーを入力で、"入力確定"なる名 称を持つイベントプロシージャを起動する例をあげます。
import mwt
# WSEV_KEY_HOOKトリガで WSCvifield インスタンスに設定します。
def cbop(object):
# (A)入力されつつあるキーを取得。
key = mwt.WSGIappKeyboard().getKey();
# (B)キーがリターンキーであれば
if (key == mwt.WSK_Return):
# "入力確定"なる名称をもつイベントプロシージャを実行。
object.execProcedure("入力確定");
return
mwt.WSGFfunctionRegister("chop",chop)
(A)でキーボードグローバルインスタンスから、入力されつつあるキーを取得します。(B)でリターンキーかどうか判別し、もしそうだったら(C)で、"入力確定"な るEP名称をもつEPを実行させます。 この入力確定実行イベントプロシージャ は、リターンキーによる入力確定動作を行いたい場合によく用いられます。 初期時入力で前回入力文字列をクリアするには新たらにフォーカスがあたって入力を開始する場合や新たらにマウスでクリッ クされて入力を開始する場合に前回入力文字列をクリアするイベントプロシー ジャを作成してみましょう。大きな流れとしては次の様になります。
import mwt
# フォーカスがあたっていたインプットフィールドを保持する変数
focus_if = None
# WSEV_FOCUS_CH トリガで起動するサブEP
def _focus_ch_(object):
# (A) フォーカスが移動して来たのかを調査
global focus_if
if (focus_if != None and
focus_if.getInstanceName() != object.getInstanceName() and
object.getFocus() != mwt.False ):
# (B)他のオブジェクトからフォーカスが移動してきた場合、
# クリアするタイミング。そのことをフラグに覚えておく
object.setVariantData("CLEAR TIMING",1);
# (C)新たにフォーカスがあたったのは、自分。
focus_if = object;
return
mwt.WSGFfunctionRegister("_focus_ch_",_focus_ch_)
#WSEV_MOUSE_PRESS トリガで起動するサブEP
def _btn_press_(object):
# (D) マウスでクリックされたら
# クリアするタイミング。そのことをフラグに覚えておく
object.setVariantData("CLEAR TIMING",1);
object.setProperty("cursorPos",0);
# (E)新たにフォーカスがあたったのは、自分。
global focus_if
focus_if = object;
return
mwt.WSGFfunctionRegister("_btn_press_",_btn_press_)
# WSEV_KEY_PRESS トリガで起動するサブEP
def _key_hook_(object):
# (F) キー入力時に、クリアタイミングかどうか調査
fl = object.getVariantData("CLEAR TIMING");
if (fl.getLong() == 1):
key = mwt.WSGIappKeyboard().getKey();
# (G)クリアタイミングで、移動キーでなければ
if (key != mwt.WSK_Tab and
key != mwt.WSK_Up and
key != mwt.WSK_Down and
key != mwt.WSK_Left and
key != mwt.WSK_Right ):
# (H)クリア。
object.setProperty("labelString","");
else:
return;
# (I)クリアタイミングフラグを落とす。
object.setVariantData("CLEAR TIMING",0);
return
mwt.WSGFfunctionRegister("_key_hook_",_key_hook_)
# 前回入力文字列クリア本体
# WSEV_INITIALIZE トリガでインプットフィールドに設定します。
def ifdclr(object):
# フォーカスがあたったときに起動するサブEPを設定
object.addProcedure("ac1","_focus_ch_",mwt.WSEV_FOCUS_CH);
# マウスがクリックされたときに起動するサブEPを設定
object.addProcedure("ac2","_btn_press_",mwt.WSEV_MOUSE_PRESS);
# キー入力されたときに起動するサブEPを設定
object.addProcedure("ac3","_key_hook_",mwt.WSEV_KEY_HOOK);
mwt.WSGFfunctionRegister("ifdclr",ifdclr)
まずフォーカス関連のサブEPについて説明します。フォーカスが新たにあたっ たことを知るために、前回フォーカスがあたっていたオブジェクトを静的変 数で保持しておきます。 Document Release 3.80 for WideStudio ver 3.80, Jan 2005
|
||
![]() |
| バグ情報、ご質問等ございましたら、メーリングリストでご確認の上、 御気軽にこちらの方までよろしくお願いいたします。 |
|
Copyright©WideStudio Development Team,1999-2005
|

