使用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
DATA: lt_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
.
欢迎关注订阅号:SAP学习记录 (SAPlearning )