* Demoprogramm: SAP_PICTURE_DEMO
* Eventhandlerklasse
CLASS lcl_events DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: on_picture_dblclick FOR EVENT picture_dblclick OF cl_gui_picture
IMPORTING
mouse_pos_x
mouse_pos_y
sender.
CLASS-METHODS: on_create_context_menu FOR EVENT context_menu OF cl_gui_picture
IMPORTING
sender.
CLASS-METHODS: on_context_menu_selection FOR EVENT context_menu_selected OF cl_gui_picture
IMPORTING
fcode
sender.
ENDCLASS.
CLASS lcl_events IMPLEMENTATION.
METHOD on_picture_dblclick.
MESSAGE |{ mouse_pos_x }{ mouse_pos_y }| TYPE 'I'.
ENDMETHOD.
METHOD on_create_context_menu.
DATA(o_menu) = NEW cl_ctmenu( ).
o_menu->add_function( fcode = 'FUNC1' text = 'Normal' ).
o_menu->add_function( fcode = 'FUNC2' text = 'Center' ).
sender->display_context_menu( context_menu = o_menu ).
ENDMETHOD.
METHOD on_context_menu_selection.
CASE fcode.
WHEN 'FUNC1'.
sender->set_display_mode( display_mode = cl_gui_picture=>display_mode_normal ).
WHEN 'FUNC2'.
sender->set_display_mode( display_mode = cl_gui_picture=>display_mode_fit_center ).
ENDCASE.
ENDMETHOD.
ENDCLASS.
* Docking-Container für Bilddarstellung
DATA: o_dock TYPE REF TO cl_gui_docking_container.
* URL zur Google-API für die Erstellung des QR-Codes
PARAMETERS: p_url TYPE swk_url DEFAULT 'http://chart.apis.google.com/chart?chs=200x200&cht=qr&chld=|1&chl=viele%20lustige%20Zeichen/chart.png' LOWER CASE.
AT SELECTION-SCREEN OUTPUT.
IF NOT o_dock IS BOUND.
* Dockingcontainer erzeugen
o_dock = NEW #( repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_bottom
ratio = 30 ).
* Bild über die URL laden und anzeigen
DATA(o_pic) = NEW cl_gui_picture( parent = o_dock ).
o_pic->set_display_mode( display_mode = cl_gui_picture=>display_mode_fit_center ).
TRY.
* Eventhandler registrieren
DATA: it_events TYPE cntl_simple_events.
it_events = VALUE #( ( eventid = cl_gui_picture=>eventid_picture_dblclick
appl_event = abap_true )
( eventid = cl_gui_picture=>eventid_context_menu
appl_event = abap_true )
( eventid = cl_gui_picture=>eventid_context_menu_selected
appl_event = abap_true ) ).
o_pic->set_registered_events( events = it_events ).
SET HANDLER lcl_events=>on_picture_dblclick FOR o_pic.
SET HANDLER lcl_events=>on_create_context_menu FOR o_pic.
SET HANDLER lcl_events=>on_context_menu_selection FOR o_pic.
* Bild laden
o_pic->load_picture_from_url_async( p_url ).
CATCH cx_root INTO DATA(e).
MESSAGE e->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDIF.