|
(파빌 9.0 기준)
visible user object로 숫자판을 하나 만든다.
picture button을 이용하여 다음과 같이 만들었다.

해당 object에 instance 변수 선언:
GraphicObject which_control
Local External Functions 나 Global Exterbal Functions 에 다음을 선언한다.
SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"
user event 를 하나 만든다.
/****************************************************************
Event 명 : ue_clicked()
argument : string arg_tag
*****************************************************************/
if isvalid(which_control) then CHOOSE CASE typeof(which_control) CASE DataWindow! DataWindow dw_which dw_which = which_control dw_which.setfocus() CASE CommandButton! CommandButton cb_which cb_which = which_control cb_which.setfocus() CASE SingleLineEdit! SingleLineEdit sle_which sle_which = which_control sle_which.setfocus() CASE Editmask! EditMask ed_which ed_which = which_control ed_which.setfocus() CASE ELSE //messagebox('' , 'else') END CHOOSE else //messagebox('' , 'err' ) end if choose case arg_tag case '1' keybd_event(49 , 0, 0, 0) case '2' keybd_event(50 , 0, 0, 0) case '3' keybd_event(51 , 0, 0, 0) case '4' keybd_event(52 , 0, 0, 0) case '5' keybd_event(53 , 0, 0, 0) case '6' keybd_event(54 , 0, 0, 0) case '7' keybd_event(55 , 0, 0, 0) case '8' keybd_event(56 , 0, 0, 0) case '9' keybd_event(57 , 0, 0, 0) case '0' keybd_event(48 , 0, 0, 0) case 'B'//back space keybd_event(8 , 0, 0, 0) case 'P' //점 keybd_event(110 , 0, 0, 0) case '+' keybd_event(107 , 0, 0, 0) case '-' keybd_event(109 , 0, 0, 0) case 'U'//위로 keybd_event(38 , 0, 0, 0) case 'D'//아래로 keybd_event(40 , 0, 0, 0) case 'L'//왼쪽 keybd_event(37 , 0, 0, 0) case 'R'//오른쪽 keybd_event(39 , 0, 0, 0) case 'DEL' keybd_event(46 , 0, 0, 0) case 'TAB' keybd_event(9 , 0, 0, 0) end choose
/*****************************************************************/
각 버튼 클릭이벤트에는 버튼에 맞는 아규먼트를 넣어서 위의 이벤트를 실행한다.
예) 숫자1 버튼의 clicked 이벤트 :
parent.event ue_clicked('1')
그리고, 이렇게 만든 오브젝트를 윈도우에서 붙여서 사용한다.(uo_keypad 로 가정)
만일, editmask가 있다면, 해당 editmask 의 getfocus() 이벤트에 다음과 같이 기술한다.
uo_keypad .which_control = getfocus() //해당 오브젝트의 instance 변수를 정의내린다
http://cafe.naver.com/pentaeduclub.cafe |