2013-08-17 7 views
1

내 최종 목표는, 내가 어떤 결과를 얻을 수없는 그런 내가 R3 View - Event Handling 문서를 읽기, R3보기에서 코드를 실행하려고 한 #"1"REBOL 3 - 눌려진 키를 인쇄하기 위해 이벤트 핸들러를 추가하는 방법은 무엇입니까?

으로 나는 키를 누르면 뭔가를 할 것 핸들러를하는 것입니다. 나는에있어

handle-events my-handler 
view layout [button] 

view/options layout [button] [handler: my-handler] 

: 나는 아무 결과, 이벤트 핸들러를 실행하는 두 가지 방법을 시도

my-handler: [ 
    name: 'my-handler 
    priority: 50 
    handler: func [event] [ 
     print ["event:" event/type event/offset] 
     if switch event/type [ 
      close [true] 
      key [event/key = escape] 
     ] [ 
      unhandle-events self 
      unview event/window 
      quit 
     ] 
     show event/window 
     none 
    ] 
] 

: 이것은 내가 복사 한 핸들러 해야 할 일에 대한 상실, 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

view/options [button] [ 
    handler: [ 
     name: 'my-handler 
     priority: 50 
     handler: func [event] [ 
      if (event/key = #"1") [print "hi"] 
     ] 
    ] 
] 
지금까지 내가 말할 수있는

, 그것은 아무것도하지 않습니다 ...

+0

Rebol2의 레이아웃을 삭제해야합니다. 내가 그것을 시도하면, 메시지 "(누락 된 이벤트 처리기)"화면에 지속적으로 인쇄 –

+0

내가 성공한 유일한 방법은 r3-guie saphirion의 기본 이벤트 처리기를 수정하는 것이 었습니다. "Missing e ..."라는 메시지는 handler :에서 온 것입니다. 그것은 아마도 정해진 단어가 아닐 수도 있습니다. – sqlab

답변

0

이 게시 된 saphirion와 함께 작동합니다 : 여기

은 키에 대한 핸들러를 만들기에서 내 시도 r3-gui. 그러나 매우 조잡하다.

load-gui 

ending: :halt ; :quit 

base-handler: context [ ; we overwrite the default 
    do-event: func [event] [ 
    ; print "(Missing event handler)" 
     if switch event/type [ 
      key [ ; this we add 
      ; if event/key = #"1" [print "hi"] 
       escape = probe event/key 
      ] 
      close [ true] 
     ] [ 
      unhandle-events self 
      unview event/window 
      ending 
     ] 
     event 
    ] 
    win-gob: none 
    status: 'made 
    name: 'no-name 
    priority: 0 
    about: "Main template for VIEW event handlers." 
] 

view/options [button] [handler: [] ]; this is not correct, so the base-handler is used