두 가지 질문을 드리고자 합니다.
첫째, 하나의 costom control에 두개의 alv grid가 있을 경우 더블클릭 이벤트를 두개의 alv 모두 일으킬수 있나요?
둘째, 하나의 costom control에 네개의 alv를 만들고자 할 때, 어떤 클래스를 사용해야 하나요?
우선 첫번째 질문에 대해 상세하게 현재 상황을 말씀드리면,
첫번째 그리드에서 더블클릭을 하면 이벤트를 타고 두번째 그리드가 나타납니다.
여기서 두번째 그리드를 더블클릭 이벤트를 태우도록 수정하고자 합니다.
1. 첫번째 그리드 더블클릭 이벤트 선언 소스
[top]
alv_dblclick3 TYPE REF TO lcl_ils
g_grid31 TYPE REF TO cl_gui_alv_grid
[lnclude]
CLASS lcl_ils DEFINITION.
PUBLIC SECTION.
METHODS:
on_dblclick
FOR EVENT double_click
OF cl_gui_alv_grid
IMPORTING e_row.
ENDCLASS.
CLASS lcl_ils IMPLEMENTATION.
METHOD on_dblclick.
ind = e_row.
ELSEIF sy-dynnr = '0300'.
CLEAR wa_bom.
READ TABLE it_bom INTO wa_bom INDEX ind.
PERFORM fill_it_stpo.
PERFORM check_assembly.
PERFORM fill_it_spare.
CLEAR ind.
PERFORM field_catalog32.
PERFORM init_sort32.
PERFORM display_alv302.
[form]
FORM create_grid31_obj.
IF g_grid31 IS INITIAL.
CREATE OBJECT g_grid31
EXPORTING
i_parent = splitter3->top_left_container.
ENDIF.
IF alv_dblclick3 IS INITIAL.
CREATE OBJECT alv_dblclick3.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid31.
ENDIF.
ENDFORM.
위의 첫번째 그리드를 더블클릭 했을 경우 소스를 참조하여
두번째 그리드를 더블클릭 이벤트를 태우고자 하여
다른 것을 그대로 놔둔채 form만 추가 했더니 반응이 없었습니다.
FORM create_grid32_obj.
IF g_grid32 IS INITIAL.
CREATE OBJECT g_grid32
EXPORTING
i_parent = splitter3->bottom_right_container.
ENDIF.
IF alv_dblclick3 IS INITIAL.
CREATE OBJECT alv_dblclick3.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid32.
ENDIF.
무엇이 문제일까요???
두번째 질문에 대한 상세한 현황입니다.
현재
cl_gui_easy_splitter_container 이 클래스를 사용하여
하나의 화면에 두개의 alv를 보이고 있습니다.
그런데 저는 4개의 alv를 보이고자 합니다.
어떤 클래스를 어떻게 사용해야 할까요??
많은 관심과 답변 부탁드립니다.
댓글 3
-
갈매기
2010.04.14 23:01
-
페리
2010.04.15 01:03
IF alv_dblclick3 IS INITIAL.
CREATE OBJECT alv_dblclick3.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid31.
ENDIF.
IF alv_dblclick3 IS INITIAL.
CREATE OBJECT alv_dblclick3.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid32.
ENDIF.
이렇게 alv_dblclick3 이 INITIAL일때 이벤트를 설정한다고 하셨는데
이미 g_grid31에 이벤트 거실때 CREATE로 만들어져서 g_grid32일때는 저 구문이 안타겠네요.
IF alv_dblclick3 IS INITIAL.
CREATE OBJECT alv_dblclick3.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid32.
ELSE.
SET HANDLER alv_dblclick3->on_dblclick FOR g_grid32.
ENDIF.
이런식으로 바꿔주면 될듯한데요 ㅎㅎ
-
고담
2010.04.20 20:06
갈매기, 페리님 도움 주셔서 감사합니다.^^
1. cl_gui_alv_grid를 참조하여 2개를 만드신 후 이벤트 로직에서 따로 처리가 가능합니다.
님같은 경우에는 g_grid32에 관한 더블클릭 로직을 넣어주시면 되겠네요.
2. CALL METHOD grf_scont->get_container를 사용하여 원하는 만큼의 컨테이너를 넣을 수 있습니다.