WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


输入字段事件过程范例



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

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

// 在 WSCvifield 实例中设置 WSEV_KEY_HOOK 触发器
public class chop {
  protected static void chop(WSCbase object){
    // (A)获得输入的键值
    long key = Mwt.WSGIappKeyboard().getKey();
    // (B)如果输入的是回车键
    if (key == Mwt.WSK_Return){
      // 执行"输入确定"事件处理过程
      object.execProcedure("输入确定");
    }
  }
}

(A)通过键盘取得正在输入的文字。

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

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

接着制作当光标处开始输入新的文字时,该区域中既有字符自动删除的事件过程。具体步骤如下所示。

// in focus_ch.java
// 保存获得输入焦点的输入字段的变量
public class focus_ch {
  static WSCbase focus_if = null;
  // WSEV_FOCUS_CH 触发器启动的事件过程
  protected static void focus_ch(WSCbase object){
    // (A) 判断是否获得输入焦点
    if (focus_if != null &&
        focus_if.getInstanceName() != object.getInstanceName() &&
       object.getFocus() != Mwt.False){

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

//in btn_press.java
//WSEV_MOUSE_PRESS 触发器启动的事件过程
public class btn_press {
  protected static void btn_press(WSCbase object){
    // (D) 鼠标点击后,清除标志位置位
    object.setVariantData("CLEAR TIMING",1);
    object.setProperty("cursorPos",0);
    // (E)保存当前获得输入焦点的对象
    focus_ch.focus_if = object;
  }
}

//in key_hook.java
// WSEV_KEY_PRESS 触发器启动的事件过程
public class key_hook {
  protected static void key_hook(WSCbase object){
    // (F) 键盘输入时,清除标志位置位
    WSCvariant fl = object.getVariantData("CLEAR TIMING");
    if (fl.getLong() == 1){
      long key = Mwt.WSGIappKeyboard().getKey();
      // (G)如果不是光标键,则清除输入内容
      if (key != Mwt.WSK_Tab &&
          key != Mwt.WSK_Up &&
          key != Mwt.WSK_Down &&
          key != Mwt.WSK_Left &&
          key != Mwt.WSK_Right){
        // (H)清除
        object.setProperty("labelString","");
      }else{
        return;
      }
    }
    // (I)清除标志位复位
    object.setVariantData("CLEAR TIMING",0);
  }
}

//in ifdclr.java
// 清除前次输入内容
// 设置 WSEV_INITIALIZE 触发器
public class ifdclr {
  protected static void ifdclr(WSCbase object){
    // 获得输入焦点后,启动事件过程
    object.addProcedure("ac1","focus_ch.focus_ch",Mwt.WSEV_FOCUS_CH);

    // 鼠标点击后,启动事件过程
    object.addProcedure("ac2","btn_press.btn_press",Mwt.WSEV_MOUSE_PRESS);

    // 键盘输入后,启动事件过程
    object.addProcedure("ac3","key_hook.key_hook",Mwt.WSEV_KEY_HOOK);
  }
}

首先对光标关联的子项目EP进行说明。为了知道光标是否改变了位置, 以静态变量预先保持上次光标位置。

(A),判断现位置与预先保持的位置是否不同。如果不同,即可知道光标被改变, 在(B)处启动删除处理。然后在(C)处将该静态变量赋予自身。

然后对鼠标点击相关的事件过程进行说明。在(D)处启动删除处理,并设定输入光标于前头。 然后在(E)处将新的值赋予光标保持的静态变量中。

然后对键入关联的事件过程进行说明。该事件过程中,如果删除处理已被启动,将删除字符串, 并结束删除处理。首先,在(F)处判断删除处理是否启动中。在(G)处辨别新输入文字。 在(H)删除既有文字。在(I)处结束删除处理。

Document Release 3.90 for WideStudio/MWT ver 3.90, Jul 2005


WideStudio/MWT documents index | Table of contents

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005