| WideStudio Programming Guide | WideStudio Index Table of contents

> ## 输入字段事件过程范例

> ### 使用回车键实行特定的事件过程

> 在事件过程中启动特定的事件处理。这里，我们将启动名为”输入确定”的事件过程。

>     import mpfc
>     #在 WSCvifield 实例中设置 WSEV_KEY_HOOK 触发器
>     void cbop(object):
>       # (A)获得输入的键值
>       key = mpfc.WSGIappKeyboard().getKey();
>       # (B)如果输入的是回车键
>       if (key == mpfc.WSK_Return):
>         # 执行"输入确定"事件处理过程
>         object.execProcedure("输入确定");
>       return
>     mpfc.WSGFfunctionRegister("chop",chop)

> (A)通过键盘取得正在输入的文字。
> (B)判断输入值是否为回车键，如果是，在(C)启动名为”输入确定”的事件过程。 这种通过输入确认是否实行事件过程的方法，常常被使用于通过输入回车键 确定动作的场合。

> ### 输入文字时自动删除既有字符

> 接着制作当光标处开始输入新的文字时，该区域中既有字符自动删除的事件过程。具体步骤如下所示。
> - (1)移动到光标处，启动删除处理。
> - (2)点击鼠标时，启动删除处理。
> - (3)文字被键入时，如果删除处理已经被启动，删除既有文字。
> - (1)，(2)，(3)的事项过程的子对象被初期化。

>     import mpfc
>     # 保存获得输入焦点的输入字段的变量
>     focus_if = None

>     # WSEV_FOCUS_CH 触发器启动的事件过程
>     def _focus_ch_(object):
>       # (A) 判断是否获得输入焦点
>       global focus_if
>       if (focus_if != None and
>          focus_if.getInstanceName() != object.getInstanceName() and
>          object.getFocus() != mpfc.False ):

>         # (B)输入焦点从其他对象处移动过来时，清除标志位置位
>         object.setVariantData("CLEAR TIMING",1);
>         # (C)保存当前获得输入焦点的对象
>         focus_if = object;
>       return
>     mpfc.WSGFfunctionRegister("_focus_ch_",_focus_ch_)

>     #WSEV_MOUSE_PRESS 触发器启动的事件过程
>     def _btn_press_(object):
>       # (D) 鼠标点击后，清除标志位置位
>       object.setVariantData("CLEAR TIMING",1);
>       object.setProperty("cursorPos",0);
>       # (E)保存当前获得输入焦点的对象
>       global focus_if
>       focus_if = object;
>       return
>     mpfc.WSGFfunctionRegister("_btn_press_",_btn_press_)

>     # WSEV_KEY_PRESS 触发器启动的事件过程
>     def _key_hook_(object):
>       # (F) 键盘输入时，清除标志位置位
>       fl = object.getVariantData("CLEAR TIMING");
>       if (fl.getLong() == 1):
>         key = mpfc.WSGIappKeyboard().getKey();
>         # (G)如果不是光标键，则清除输入内容
>         if (key != mpfc.WSK_Tab and
>            key != mpfc.WSK_Up and
>            key != mpfc.WSK_Down and
>            key != mpfc.WSK_Left and
>            key != mpfc.WSK_Right ):
>           # (H)清除
>           object.setProperty("labelString","");
>         else:
>           return;
>       # (I)清除标志位复位
>       object.setVariantData("CLEAR TIMING",0);
>       return
>     mpfc.WSGFfunctionRegister("_key_hook_",_key_hook_)

>     # 清除前次输入内容
>     #设置 WSEV_INITIALIZE 触发器
>     def ifdclr(object):
>       # 获得输入焦点后，启动事件过程
>       object.addProcedure("ac1","_focus_ch_",mpfc.WSEV_FOCUS_CH);

>       # 鼠标点击后，启动事件过程
>       object.addProcedure("ac2","_btn_press_",mpfc.WSEV_MOUSE_PRESS);

>       # 键盘输入后，启动事件过程
>       object.addProcedure("ac3","_key_hook_",mpfc.WSEV_KEY_HOOK);
>     mpfc.WSGFfunctionRegister("ifdclr",ifdclr)

> 首先对光标关联的子项目EP进行说明。为了知道光标是否改变了位置， 以静态变量预先保持上次光标位置。
> (A)，判断现位置与预先保持的位置是否不同。如果不同，即可知道光标被改变， 在(B)处启动删除处理。然后在(C)处将该静态变量赋予自身。
> 然后对鼠标点击相关的事件过程进行说明。在(D)处启动删除处理，并设定输入光标于前头。 然后在(E)处将新的值赋予光标保持的静态变量中。
> 然后对键入关联的事件过程进行说明。该事件过程中，如果删除处理已被启动，将删除字符串， 并结束删除处理。首先，在(F)处判断删除处理是否启动中。在(G)处辨别新输入文字。 在(H)删除既有文字。在(I)处结束删除处理。

Document Release 3.70 for WideStudio ver 3.70, May 2004

WideStudio documents index | Table of contents

Copyright(C) WideStudio Development Team, 1999-2004 | Last modified: May 25, 2004