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


샘플 이벤트 프로시저:입력 필드편



Enter키로 특정의 이벤트 프로시저를 실행하기에는

이벤트 프로시저에서 특정의 이벤트 프로시저를 기동하도록 해법시다. 여기서는 Enter키의 입력으로 "입력확정"이라는 명칭을 가지는 이벤트 프로시저를 기동하는 예를 들입니다.

# WSEV_KEY_HOOK 트리거(trigger)로 WSCvifield  인스턴스에 설정합니다.
def cbop(object)
  # (A) 입력되여있는 키를 취득.
  key = Mwt::WSGIappKeyboard().getKey()
  # (B) 키가 Enter키이며는
  if key == Mwt::WSK_Return
    # "입력확정"이란 명칭을 가지는 이벤트 프로시저를 실행.
    object.execProcedure("입력확정")
  end
end

(A)에서 자판 전역 인스턴스에서 지금 입력되여있는 키를 취득합니다.

(B)에서 Enter키인지를 판별해서,그랫더라면 (C)에서 "입력확정"이란 EP명칭을 가지는 EP를 실행시킵니다. 그 입력확정 실행 이벤트 프로시저는 Enter키에위한 입력확정 동작을 할 경우에 자주 이용됩니다.

초기때 입력으로 전에 입력문자열을 치우기에는

새로 초점이 맞아서 입력을 시작할 경우나 새로 마우스로 클릭되여서 입력을 시작하는 경우에 전에 입력한 문자열을 치우는 이벤트프로시저를 작성해봅시다. 주로의 흐름은 다음과 같습니다.

# 초점이 맞아있으면 입력 필드를 보지할 변수
focus_if = nil

# WSEV_FOCUS_CH 트리거(trigger)로 기동될 서브EP
def _focus_ch_(object)
  # (A) 초점이 이동되여서 왔는가를 조사
  if focus_if != nil &&
     focus_if.getInstanceName() != object.getInstanceName() &&
     object.getFocus() != Mwt::False

    # (B)다른 객체에서 초점이 이동해온 경우,
    # 치울 타이밍을 프래그(flag)에 외어놓다
    object.setVariantData("CLEAR TIMING",1)
    # (C)새로 초점이 맞은것이 자신.
    focus_if = object
  end
end

#WSEV_MOUSE_PRESS 트리거(trigger)로 기동되는 서브EP
def _btn_press_(object)
  # (D) 마우스로 클릭되며는
  # 치울 타이밍을 프래그(flag)에 외어놓다
  object.setVariantData("CLEAR TIMING",1)
  object.setProperty("cursorPos",0)
  # (E)새로 초점이 맞은것이 자신.
  focus_if = object
end

# WSEV_KEY_PRESS 트리거(trigger)로 기동되는 서브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 &&
       key != Mwt::WSK_Up &&
       key != Mwt::WSK_Down &&
       key != Mwt::WSK_Left &&
       key != Mwt::WSK_Right 
      # (H)지우다
      object.setProperty("labelString","")
    else
      return
    end
  end
  # (I)치울 타이밍 프래그(flag)를 치운다.
  object.setVariantData("CLEAR TIMING",0)
end

# 전에 입력된 문자열을 치울 본체
# WSEV_INITIALIZE  트리거(trigger)로 입력 필드에 설정합니다.
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)
end

먼저 초점관련의 서브EP에관하여 설명합니다. 초점이 새로 맞은것을 알기위해 전에 초점이 맞았던 객체를 정적(static)변수에 보지해놓겠습니다.

(A)에서는 우선 보지해놓은 객체와 자신이 다른 객체인가를 조사합니다. 다르면 새로 초점이 맞은것을 의미해서, (B)에서 치울 프래그(flag)를 세워놓습니다. 그 다음에 (C)에서 자신을 그 정적(static) 변수에 보지합니다.

다음에는 마우스의 클릭관련에 서브EP에관에서 설명합니다. (D)에서 치울 프래그를 세워서 입력 카설을 선두로 설정합니다. 그후에 (E)에서 자신을 초점보지의 정적(static) 변수에 보지합니다.

다음에는 키 입력관련의 서브EP에 대해서 설명합니다. 키 입력관련의 서브EP에서는 치울 프래그(flag)를 세울 경우, 문자열를 치워서 그 치울 프래그(flag)를 치웁니다. 우선 (F)에서 치울 프래그(flag)가 세워저있는가를 조사합니다. (G)에서는 이동 키를 입력한것으로 치워지지않도록 그 키를 판별해서, (H)로 치워서 (I)로 치울 프래그(flag)를 치웁니다.

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