• ABAP Control Framework(7): Picture


    7.Picture

              使用cl_gui_picture类显示图片。

    示例:

    "event handler类
    CLASS c_event_handler DEFINITION.
      PUBLIC SECTION.
        "picture event
        "图片点击
        CLASS-METHODS:event_picture_click
          FOR EVENT picture_click OF cl_gui_picture
          IMPORTING mouse_pos_x mouse_pos_y sender.
        "图片双击
        CLASS-METHODS:event_picture_dblclick
          FOR EVENT picture_dblclick OF cl_gui_picture
          IMPORTING mouse_pos_x mouse_pos_y sender.
        "图片右键菜单
        CLASS-METHODS:event_context_menu
          FOR EVENT context_menu OF cl_gui_picture
          IMPORTING sender.
        "图片右键菜单功能
        CLASS-METHODS:event_context_menu_sel
          FOR EVENT context_menu_selected OF cl_gui_picture
          IMPORTING fcode sender.
    ENDCLASS.
    
    CLASS c_event_handler IMPLEMENTATION.
      METHOD:event_picture_click.
        DATA:lv_msg TYPE C LENGTH 20.
        lv_msg = 'click,X:' && mouse_pos_x && ';Y:' && mouse_pos_y.
        MESSAGE lv_msg TYPE 'I'.
      ENDMETHOD.
    
      METHOD:event_picture_dblclick.
        DATA:lv_msg TYPE C LENGTH 20.
        lv_msg = 'double click,X:' && mouse_pos_x && ';Y:' && mouse_pos_y.
        MESSAGE lv_msg TYPE 'I'.
      ENDMETHOD.
    
      METHOD:event_context_menu.
        DATA:lv_menu TYPE REF TO cl_ctmenu.
        "创建右键菜单对象
        CREATE OBJECT lv_menu.
        "添加菜单项
        CALL METHOD lv_menu->add_function
          EXPORTING
            fcode = 'NORMAL'
            TEXT  = '正常'.
        CALL METHOD lv_menu->add_function
          EXPORTING
            FCODE = 'STRETCH'
            TEXT  = '伸展'.
        CALL METHOD lv_menu->add_function
          EXPORTING
            FCODE = 'FIT'
            TEXT  = '适应'.
        CALL METHOD lv_menu->add_function
          EXPORTING
            FCODE = 'NORMAL_CENTER'
            TEXT  = '正常居中'.
        CALL METHOD lv_menu->add_function
          EXPORTING
            FCODE = 'FIT_CENTER'
            TEXT  = '适应居中'.
        "设置右键menu
        sender->display_context_menu( lv_menu ).
      ENDMETHOD.
    
      METHOD:event_context_menu_sel.
        DATA:lv_display_mode TYPE I.
        IF fcode = 'NORMAL'.
          lv_display_mode = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
        ENDIF.
        IF fcode = 'STRETCH'.
          lv_display_mode = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
        ENDIF.
        IF fcode = 'FIT'.
          lv_display_mode = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
        ENDIF.
        IF fcode = 'NORMAL_CENTER'.
          lv_display_mode = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
        ENDIF.
        IF fcode = 'FIT_CENTER'.
          lv_display_mode = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
        ENDIF.
        "设置picture显示模式
        sender->set_display_mode( lv_display_mode ).
      ENDMETHOD.
    ENDCLASS.
    
    CLASS c6 DEFINITION.
      PUBLIC SECTION.
        "图片对象
        DATA:lo_picture TYPE REF TO cl_gui_picture.
        METHODS:m_init_picture.
    ENDCLASS.
    
    
    CLASS c6 IMPLEMENTATION.
      METHOD:m_init_picture.
        DATA:lo_mime_api   TYPE REF TO if_mr_api.
        DATA:lv_xstring TYPE xstring.
        DATA:lv_url TYPE C LENGTH 256.
        DATA:lv_x1024 TYPE x LENGTH 1024.
        DATA:lt_x1024 LIKE TABLE OF lv_x1024.
        DATA:lt_event TYPE cntl_simple_events.
        DATA:ls_event LIKE LINE OF lt_event.
    
        IF lo_picture IS INITIAL.
          CREATE OBJECT lo_picture
            EXPORTING parent = cl_gui_container=>default_screen.
        ENDIF.
        "方式1:mime repository api对象
    *    lo_mime_api = cl_mime_repository_api=>get_api( ).
    *    "mime中图片
    *    lo_mime_api->get(
    *      EXPORTING
    *         i_url = '/SAP/PUBLIC/TOM_TEST/pic1.jpg'
    *      IMPORTING
    *         e_content = lv_xstring
    *    ).
    *    DO.
    *      IF xstrlen( lv_xstring ) > 1024.
    *        lv_x1024 = lv_xstring(1024).
    *        APPEND lv_x1024 TO lt_x1024.
    *        SHIFT lv_xstring BY 1024 PLACES LEFT IN BYTE MODE.
    *      ELSE.
    *        APPEND lv_xstring TO lt_x1024.
    *        EXIT.
    *      ENDIF.
    *    ENDDO.
    *    "获取url
    *    CALL FUNCTION 'DP_CREATE_URL'
    *      EXPORTING
    *        type    = 'IMAGE'
    *        subtype = 'GIF'
    *      TABLES
    *        data    = lt_x1024
    *      CHANGING
    *        url     = lv_url.
    
        "方式2:使用smw0图片ZTOM_TEST
    *    CALL FUNCTION 'DP_PUBLISH_WWW_URL'
    *      EXPORTING
    *        OBJID    = 'ZTOM_TEST'
    *        LIFETIME = cndp_lifetime_transaction
    *      IMPORTING
    *        URL      = lv_url
    *      EXCEPTIONS
    *        OTHERS   = 1.
    
        "加载picture
        "lo_picture->load_picture_from_url( lv_url ).
        "方式3:网络url
        lv_url = 'https://scpic.chinaz.net/files/pic/pic9/202007/apic26572.jpg'.
        "异步加载
        lo_picture->load_picture_from_url_async( lv_url ).
        "设置样式
        lo_picture->set_display_mode( cl_gui_picture=>display_mode_stretch ).
    
        "注册事件
        ls_event-eventid = cl_gui_picture=>eventid_picture_click.
        APPEND ls_event TO lt_event.
        ls_event-eventid = cl_gui_picture=>eventid_picture_dblclick.
        APPEND ls_event TO lt_event.
        ls_event-eventid = cl_gui_picture=>eventid_context_menu.
        APPEND ls_event TO lt_event.
        ls_event-eventid = cl_gui_picture=>eventid_context_menu_selected.
        APPEND ls_event TO lt_event.
        lo_picture->set_registered_events( lt_event ).
        "设置事件处理handler
        SET HANDLER c_event_handler=>event_picture_click FOR lo_picture.
        SET HANDLER c_event_handler=>event_picture_dblclick FOR lo_picture.
        SET HANDLER c_event_handler=>event_context_menu FOR lo_picture.
        SET HANDLER c_event_handler=>event_context_menu_sel FOR lo_picture.
      ENDMETHOD.
    ENDCLASS.
    
    START-OF-SELECTION.
      PERFORM f_show_picture.
    
    FORM f_show_picture.
      DATA:lo_c6 TYPE REF TO c6.
      CREATE OBJECT lo_c6.
      WRITE:/ '1'.
      "显示picture
      lo_c6->m_init_picture( ).
    ENDFORM.

     

  • 相关阅读:
    转:PHP环境搭建
    证件号码
    3、SourceTree通过PUTTY连接GitLab
    2、gitlab 新建项目
    java基础31 List集合下的Vector集合
    java基础30 List集合下的LinkedList集合
    java基础29 迭代器 listIterator() 及各种遍历集合的方法
    java基础28 单例集合Collection下的List和Set集合
    java基础27 单例集合Collection及其常用方法
    错误/异常:The project cannot be built until build path errors are resolved 和 Unbound classpath container: 'JRE System Library [JavaSE-1.7]' in project 'MyJavaCode';的解决方法
  • 原文地址:https://www.cnblogs.com/tangToms/p/14745235.html
Copyright © 2020-2023  润新知