1. 한 화면에 두개 이상의 GRID 가 있고 화면마다 더블클릭 이벤트가 각각 필요하다고 했을때
이벤트는 해당 GRID 에 접목 시켜야 합니다.
예를 들면
CREATE OBJECT L_EVENT.
SET HANDLER L_EVENT->HANDLER_DOUBLE_CLICK FOR G_GRID1.
이런 식으로요
그런데 이 이벤트는 다시 그리드의 클래스에 접목 시켜야 합니다.
PUBLIC SECTION.
METHODS : HANDLER_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW
E_COLUMN
ES_ROW_NO.
이런 식으로요...
여기에서 이벤트가 CL_GUI_ALV_GRID에 귀속되도록 선언되어 있다는 것을 알 수 있습니다.
만약 GRID1 도 GRID2 도 CL_GUI_ALV_GRID 을 참조하여 선언했다면
각각의 더블 클릭이 다른 기능을 요구함에도 불구하고 둘다 같은 이벤트가 발생하게 됩니다.
이벤트가 없다면 굳이 상속 받은 GRID CLASS 를 선언할 필요가 없습니다만
될 수 있으면 상속받아서 하시는 편이 나중에 사용자가 요청했을때 바로바로 대응 할 수 있는
하나의 스킬이 되겠죠.
(사실 더 자세히 설명 드려야 하는데 이게 글로 적기가 애매하네요... 저기도 꽁수가 있고 뭐 다른 방법들이 있고
이유가 있고~~ 이런식으로 가면 답이 없습니다.... ^^;; 하나씩 차근차근 해보세요.
다른 분들이 덧글 더 달아 주실듯)
>1번.
>프로그램 개발시 대부분은 cl_gui_alv_grid 이 그리드 클래스를 써서하잖아요
>
>그런데 이걸
>DATA: g_grid TYPE REF TO lcl_alv_grid,
>밑에처럼 상속받아 제정의 해서 쓰는이유가 뭐죠?
>cl_gui_alv_grid 여기데 메소드나 인스턴스들이 다 있을텐데
>왜 call해서 쓰지 않고 다시 정의 해서 쓰는지 궁금합니다...
>
>CLASS lcl_alv_grid DEFINITION DEFERRED.
CLASS lcl_event_handler DEFINITION DEFERRED.
>CLASS lcl_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid.
PUBLIC SECTION.
METHODS: set_optimize_all_cols,
> set_cursor IMPORTING row TYPE i
col TYPE i,
set_fixed_column,
> set_row_resize,
> set_error_cells_p EXPORTING cell_table TYPE lvc_t_err.
>ENDCLASS. "LCL_ALV_GRID DEFINITION
>
>2.번
> >
> CALL METHOD g_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
>여기에서 ( -> ) 이거는 g_grid란 인스턴스의 register_edit_event메소드를 호출하는거고
>( => )이거는 cl_gui_alv_grid라는 클래스의 mc_evt_enter이란 속성을 호출하는건가요?
>
>( -> ) 와 ( => ) 의 의미를 알고싶습니다... 역시 클래스는 좀 생소하네요^^
훔... 이벤트간의 중복을 피하기위해 사용하기도 하는군요.. 감사합니다.
여러개의 그리드를 만든다고할때
DATA: g_grid1 TYPE REF TO cl_alv_grid,
g_grid2 TYPE REF TO cl_alv_grid,
g_grid3 TYPE REF TO cl_alv_grid.
이렇게 선언해서 쓰면 안되는건가요?