TEXT文本编辑框2
Result:
When you double clicks on the TextEdit control nothing happens, since the flow-logic of the screen an dthe fielde transport is ignore
*&---------------------------------------------------------------------* *& Report ZTEST_CWBK *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ztest_cwbk. CONSTANTS: line_length TYPE i VALUE 100. DATA: ok_code LIKE sy-ucomm. DATA: * Create reference to the custom container custom_container TYPE REF TO cl_gui_custom_container, * Create reference to the TextEdit control editor TYPE REF TO cl_gui_textedit, repid LIKE sy-repid. ********************************************************************** * Impmenting events ********************************************************************** DATA: event_type(20) TYPE c, * Internal table for events that should be registred i_events TYPE cntl_simple_events, * Structure for oneline of the table wa_events TYPE cntl_simple_event. *---------------------------------------------------------------------* * CLASS lcl_event_handler DEFINITION *---------------------------------------------------------------------* CLASS lcl_event_handler DEFINITION. PUBLIC SECTION. CLASS-METHODS: catch_dblclick FOR EVENT dblclick OF cl_gui_textedit IMPORTING sender. ENDCLASS. CLASS lcl_event_handler IMPLEMENTATION. METHOD catch_dblclick. * event_type = 'Event DBLCLICK raised'. * Reacting to the system event call method cl_gui_cfw=>set_new_ok_code exporting new_code = 'SHOW'. ENDMETHOD. ENDCLASS. START-OF-SELECTION. SET SCREEN '100'. *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. DATA str TYPE c. DATA sline(100) TYPE i. CASE ok_code. WHEN 'EXIT'. LEAVE TO SCREEN 0. WHEN 'SHOW'. event_type = 'System dblclick'. ENDCASE. * Call the Dispacth method to initiate application event handling * call method cl_gui_cfw=>Dispatch. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS 'MAIN100'. IF editor IS INITIAL. repid = sy-repid. * Create obejct for custom container CREATE OBJECT custom_container EXPORTING container_name = 'MYCONTAINER1' EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 OTHERS = 6. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * Create obejct for the TextEditor control CREATE OBJECT editor EXPORTING wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position wordwrap_position = line_length wordwrap_to_linebreak_mode = cl_gui_textedit=>true parent = custom_container EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 gui_type_not_supported = 5 OTHERS = 6. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * Link the event handler method to the event and the * TextEdit control SET HANDLER lcl_event_handler=>catch_dblclick FOR editor. * Register the event in the internal table i_events wa_events-eventid = cl_gui_textedit=>event_double_click. * wa_events-appl_event = 'X'. "This is an application event wa_events-appl_event = space. "This is a system event append wa_events to i_events. * Pass the table to the TextEdit control using method * set_registred_events call method editor->set_registered_events exporting events = i_events. ENDIF. ENDMODULE. " STATUS_0100 OUTPUT