cl_gui_alv_tree_simple响应双击&n…

cl_gui_alv_tree_simple响应双击 <wbr>不能响应整行任意位置双击

使用cl_gui_alv_tree_simple 实现双击后,发现只有双击前面的文本图标时才响应,点这行其他位置没效果

经朋友MACIO提示,已经解决

我修改了三个地方
 
一、lvc_s_fcat 结构中的热点(参数gb_fieldcat)
CALL METHOD tree_grid->set_table_for_first_display
      EXPORTING
        it_list_commentary ls_list_comm
        i_structure_name   'Z_KEMU_INFOR'
      CHANGING
        it_sort            gb_sortfld
        it_fieldcatalog    gb_fieldcat
        it_outtab          g_kemu_show[].

在控制字段输出时,不能设置热点 ls_fldcat-hotspot ,
如果 = 空,则整行起作用,
如果 = X,则单击图标或者第一个字段会起作用。
  LOOP AT gb_fieldcat INTO ls_fldcat.
   ls_fldcat-hotspot 'X'.            "必须空
    CASE ls_fldcat-fieldname.
      WHEN 'TSLVT'
           OR 'HKONT_DESC'
           OR 'BJH_HKONT_PREV_T'.
        ls_fldcat-outputlen 25.
      WHEN OTHERS.
        ls_fldcat-no_out 'X'.
    ENDCASE.
endloop.
二、注册的时候注册 eventid_item_double_click 
  DATAlt_events TYPE cntl_simple_events,
        l_event TYPE cntl_simple_event.

  CLEAR l_event.
  l_event-eventid cl_gui_list_tree=>eventid_item_double_click.
  l_event-appl_event 'X'.
  APPEND l_event TO lt_events.

三、编写响应的操作
CLASS cl_tree_event_receiver DEFINITION.

  PUBLIC SECTION.
  double click item
    METHODS handle_double_click
      FOR EVENT node_double_click OF cl_gui_alv_tree_simple
      IMPORTING index_outtab
                grouplevel.
    METHODS item_double_click
      FOR EVENT item_double_click OF cl_gui_alv_tree_simple
      IMPORTING
        fieldname
        index_outtab
        grouplevel.
  PRIVATE SECTION.

ENDCLASS                   "CL_TREE_EVENT_RECEIVER DEFINITION

然后去实现

    CALL METHOD tree_grid->set_table_for_first_display
      EXPORTING
        it_list_commentary ls_list_comm
        i_structure_name   '_KEMU_INFOR'
      CHANGING
        it_sort            gb_sortfld
        it_fieldcatalog    gb_fieldcat
        it_outtab          g_kemu_show[].
*
    CALL METHOD tree_grid->expand_tree
      EXPORTING
        i_level 1.
*
** register events
    PERFORM register_events.
** set handler for tree1
    SET HANDLER tree_event_receiver->handle_double_click FOR tree_grid.
    SET HANDLER tree_event_receiver->item_double_click FOR tree_grid.
posted @ 2014-01-22 09:21  胡来  阅读(348)  评论(0编辑  收藏  举报