안녕하세요... 오랜만에 QnA 란에 질문을 올리네요..^^
다름이 아니라 제가 cl_gui_column_tree 를 사용하고 있는중인데요..
이벤트 발생하는 부분에서 진행이 안되어서 문의 드립니다.
아이템을 더블 클릭하였을때... 발생하게 하고 싶은게 있는데요...
디버깅을 걸어두고 노드하위의 아이템을 눌러도 반응을 하지 않습니다. ㅜ_ ㅜ
디버깅도 안타고요....디버깅을 안타는건...이벤트가 발생하지 않은거죠?
참....질문 하나더요...
여기서 ... 행 선택이 안되던데요.... ↓ 이런 선택이요... 컬럼트리에서는 선택이 불가능한가요??
아래 소스는 이벤트 발생하기 위해 코딩한 부분입니다.
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS verify_event_handler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
on_item_double_click FOR EVENT item_double_click OF
cl_gui_alv_tree IMPORTING node_key fieldname .
ENDCLASS.
CLASS verify_event_handler IMPLEMENTATION.
METHOD on_item_double_click.
MESSAGE I000(0K) WITH TEXT-E01 NODE_KEY FIELDNAME.
ENDMETHOD.
ENDCLASS.
DATA: gv_tree_event TYPE REF TO verify_event_handler.
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event.
" item double click
l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
l_event-appl_event = 'X'.
APPEND l_event TO lt_events.
CALL METHOD gv_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
CREATE OBJECT gv_tree_event.
SET HANDLER gv_tree_event->on_item_double_click FOR gv_tree.
혹시나 해서...이벤트 선언전 tree 구조를 뿌려주는 부분입니다.
* create container for alv-tree
CREATE OBJECT gv_custom_container
EXPORTING
container_name = l_tree_container_name.
* create tree control
CREATE OBJECT gv_tree
EXPORTING
parent = gv_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ' ' -> 이부분에 X를 줘서도 해봤는데...안되더라구요.
no_html_header = 'X'
no_toolbar = ''.
* BUILD CATALOG..CREATE
* TREE COLUMN CREATE.
CALL METHOD gv_tree->set_table_for_first_display
EXPORTING
is_variant = ls_variant
is_hierarchy_header = ls_hierarchy_header
it_toolbar_excluding = lv_toolbar_excluding
CHANGING
it_outtab = gt_outcbs[]
it_fieldcatalog = gt_fieldcatalog.
정확한 답변까지는 바라지 않아요.. 풀어갈수 있는 조금의
힌트라도 주시면 감사하겠습니다 ㅜ
앞으로 자주 들리겠습니다!! 도움이 될수 있도록..;;
댓글 4
-
페리
2009.12.15 17:41
-
요요
2009.12.15 18:08
페리님 말씀처럼 tree 생성후에 해당 트리의 이벤트 설정해 주시구요. 그래야 트리에 이벤트 등록될 거예요
appl_event 설정을 하셨으면 pai 부분에 cl_gui_cfw=>dispatch( ). 걸어주셔야 이벤트로 이동을 하게 될
거예요. 두가지 해보시고 안되시면 다시 댓글 주세요.
-
예스맨
2009.12.17 04:11
l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.
l_event-appl_event = 'x'. -------> l_event-appl_event = ' '
요렇게 한번 해보심이..
정확한건 아닌데 저도 궁금해서요.
-
수갬
2009.12.18 19:42
답변 감사드립니다.. 지금 위 하나의 이벤트를 더 추가하는데 문제는 없는데.... 위 이벤트 의에에
아이템 더블클릭 헤더클릭을 추가해봤는데
CALL METHOD gv_tree->set_registered_events
이부분에서 sy-subrc 3 이 떨어지네요.. 일단 저 위에 이벤트만 필요해서 넘어 갔지만....3이 떨어지는 이유는 아직 모르겠네요..
수갬형
gv_tree 이거 어떤걸로 선언되어 있어요?
그리고..
CALL METHOD gv_tree->set_registered_events 이거랑 CREATE OBJECT gv_tree 이거의 위치가.. 좀 이상한데요..
CREATE OBJECT gv_tree가 먼저 위로 가야할 듯하고..