| WideStudio Programming Guide | WideStudio Index Table of contents

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

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

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

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

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

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

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

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

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

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

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

>     # 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 &&
>            key != Mpfc::WSK_Up &&
>            key != Mpfc::WSK_Down &&
>            key != Mpfc::WSK_Left &&
>            key != Mpfc::WSK_Right
>           # (H)清除
>           object.setProperty("labelString","")
>         else
>           return
>         end
>       end
>       # (I)清除标志位复位
>       object.setVariantData("CLEAR TIMING",0)
>     end

>     # 清除前次输入内容
>     # 设置 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)
>     end

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

Document Release 3.70 for WideStudio ver 3.70, Feb 2004

WideStudio documents index | Table of contents

Copyright(C) T. Hirabayashi, 2000-2004 | Last modified: Feb 25, 2004