객체의 속성지를 취득/ 설정하기에는
이벤트 프로시저에있어서, 객체의 속성에대하여 접근(access)
할수 있습니다. 다음의 API를 사용합니다.
| 접근(access) 함수 | 기능 |
| WSCvariant getProperty() | 속성지의 취득 |
| WSCvariant setProperty() | 속성지의 설정 |
속성지의 취득
객체의 속성을 취득하기에는,WSCbase 클래스의 멤버 함수인
getProperty() 의 사용합니다.
...
let event_procedure obj =
(* "x" (X 좌표) 속성지의 문자열에의한 취득 *)
let x = obj -> getProperty ("x")
in print_string( get_string x); (* 문자열 취득 *)
print_newline();
(* "y" (Y 좌표) 속성지의 취득 *)
let y = obj -> getProperty ("y")
in print_int(get_int y); (* long형 변수의 값을 취득 *)
print_newline();
()
let _ = Callback.register "event_procedure" event_procedure
"x" 의 예로는, 문자열으로 값을 취득하고,
"y" 의 예로는, long형으로 받았습니다. 함수 getProperty()는
WSCvariant형으로 값을 돌려줍니다. WSCvariant형은 각각 형의
값을 얻을 수 있습니다.
| Mwt::WSCvariant 값을 취득할 함수 | 기능 |
| getChar() | char 형의 값을 취득 |
| getUnsignedChar() | unsigned char 형의 값을 취득 |
| getShort() | short 형의 값을 취득 |
| getUnsignedShort() | unsigned short 형의 값을 취득 |
| getLong() | long 형의 값을 취득 |
| getUnsignedLong() | unsigned long 형의 값을 취득 |
| getInt() | int 형의 값을 취득 |
| getUnsignedInt() | unsigned int 형의 값을 취득 |
| getFloat() | float 형의 값을 취득 |
| getDouble() | double 형의 값을 취득 |
| getCharPtr() | char* 형(문자역)의 값을 취득 |
속성지의 설정
객체의 속성을 설정하기에는 WSCbase 클래스의 멤버 함수인
setProperty() 를 사용합니다.
...
let event_procedure obj =
(* "x" (X 좌표) 속성의 문자열에의한 설정 *)
let x = "100"
in obj -> setProperty ("x", (make_string x) );
(* "y" (Y 좌표) 속성의 설정 *)
let y = "100"
in obj -> setProperty ("y", (make_int y) );
()
let _ = Callback.register "event_procedure" event_procedure
"x" 의 예로는 문자열로 값을 설정하고있습니다."y" 의 예로는 정수형으로 값을
설정하고있습니다.
속성지의 묘화에의 반영
보통, 이벤트 프로시저의 실행직후에 반영되나, 변경후, 속성의
값을 즉시 반영할 경우,update(),draw(),redraw() 를 호출합니다.
윈도우 시스템에 따라서는 ( 예컨데 X11 시스템의 경우등) 묘화
를 한때, 즉시는 윈도우 시스템에 반영안될 경우가 있습니다.
그럴 경우는 WSDappDev 클래스의 update() 를 호출해주십시오.
...
let event_procedure obj =
!obj1 -> setProperty ("labelString", ,"택스트");
!obj1 -> update() (* 즉시 객체를 갱신. *)
_WSGIappDev'() -> "update" (); (* 윈도우 시스템에로 묘화요구를 반영합니다.*)
!obj2 -> setProperty ("labelString","택스트");
!obj2 -> update() (* 즉시 묘화된다. *)
_WSGIappDev'() -> update (); (* 윈도우 시스템에로 묘화요구를 반영합니다. *)
()
let _ = Callback.register "event_procedure" event_procedure