WideStudio Programming Guide

| WideStudio Programming Guide | WideStudio Index Table of contents

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

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

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

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

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

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

> 새로 초점이 맞아서 입력을 시작할 경우나 새로 마우스로 클릭되여서 입력을 시작하는 경우에 전에 입력한 문자열을 치우는 이벤트프로시저를 작성해봅시다. 주로의 흐름은 다음과 같습니다.
> - (1) 초점이 새로 맞은 경우, 치울 프래그(flag)를 세운다.
> - (2) 마우스가 클릭된 경우, 치울 프래그(flag)를 세운다.
> - (3) 키 입력된 경우, 치울 프래그(flag)가 세워져있으면 치운다.
> - (1),(2),(3)의 서브 이벤트 프로시저를 붙여놓고 초기화한다.

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

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

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

>     #WSEV_MOUSE_PRESS 트리거(trigger)로 기동되는 서브EP
>     def _btn_press_(object):
>       # (D) 마우스로 클릭되며는
>       # 치울 타이밍을 프래그(flag)에 외어놓다
>       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 트리거(trigger)로 기동되는 서브EP
>     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)치울 타이밍 프래그(flag)를 치운다.
>       object.setVariantData("CLEAR TIMING",0);
>       return
>     mpfc.WSGFfunctionRegister("_key_hook_",_key_hook_)

>     # 전에 입력된 문자열을 치울 본체
>     # WSEV_INITIALIZE  트리거(trigger)로 입력 필드에 설정합니다.
>     def ifdclr(object):
>       # 초점이 맞은 경우에 기동되는 서브EP를 설정
>       object.addProcedure("ac1","_focus_ch_",mpfc.WSEV_FOCUS_CH);

>       # 마우스가 클릭되였을때 기동되는 서브EP를 설정
>       object.addProcedure("ac2","_btn_press_",mpfc.WSEV_MOUSE_PRESS);

>       # 키 입력되였을때 기동되는 서브EP를 설정
>       object.addProcedure("ac3","_key_hook_",mpfc.WSEV_KEY_HOOK);
>     mpfc.WSGFfunctionRegister("ifdclr",ifdclr)

> 먼저 초점관련의 서브EP에관하여 설명합니다. 초점이 새로 맞은것을 알기위해 전에 초점이 맞았던 객체를 정적(static)변수에 보지해놓겠습니다.
> (A)에서는 우선 보지해놓은 객체와 자신이 다른 객체인가를 조사합니다. 다르면 새로 초점이 맞은것을 의미해서, (B)에서 치울 프래그(flag)를 세워놓습니다. 그 다음에 (C)에서 자신을 그 정적(static) 변수에 보지합니다.
> 다음에는 마우스의 클릭관련에 서브EP에관에서 설명합니다. (D)에서 치울 프래그를 세워서 입력 카설을 선두로 설정합니다. 그후에 (E)에서 자신을 초점보지의 정적(static) 변수에 보지합니다.
> 다음에는 키 입력관련의 서브EP에 대해서 설명합니다. 키 입력관련의 서브EP에서는 치울 프래그(flag)를 세울 경우, 문자열를 치워서 그 치울 프래그(flag)를 치웁니다. 우선 (F)에서 치울 프래그(flag)가 세워저있는가를 조사합니다. (G)에서는 이동 키를 입력한것으로 치워지지않도록 그 키를 판별해서, (H)로 치워서 (I)로 치울 프래그(flag)를 치웁니다.

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