zoukankan      html  css  js  c++  java
  • SAP Display picture

    program sap_picture_demo.
    
    set screen 200.
    
    TYPE-POOLS cndp.
    
    ************************************************************************
    * CLASS    c_event_receiver
    * DEFINITION
    ************************************************************************
    class c_event_receiver definition.
    * The class is used to test the events raised by the cl_gui_picture
    * class
      public section.
        methods event_handler_picture_dblclick
                for event picture_dblclick of cl_gui_picture
                importing mouse_pos_x mouse_pos_y sender.
        methods event_handler_context_menu
                for event context_menu of cl_gui_picture
                importing sender.
        methods event_handler_context_menu_sel
                for event context_menu_selected of cl_gui_picture
                importing fcode sender.
      endclass.
    
    
    ************************************************************************
    * DATA
    ************************************************************************
      data function like sy-ucomm.         " OK-Code field in screen 200
      data url  type cndp_url.                " URL-field in screen 200
      data url2 type cndp_url.               " URL-field in screen 200
      data picture_control_1 type ref to cl_gui_picture.
      data picture_control_2 type ref to cl_gui_picture.
      data container_1 type ref to cl_gui_custom_container.
      data container_2 type ref to cl_gui_custom_container.
      data event_receiver  type ref to c_event_receiver.
      data event_tab type cntl_simple_events.
      data event_tab_line type cntl_simple_event.
      data return type i.
    
    ************************************************************************
    * PBO
    * before_output
    ************************************************************************
    module before_output output.
      set pf-status 'MAIN0001'.
      IF PICTURE_CONTROL_1 IS INITIAL.
    
    * Create controls
        create object container_1
          exporting container_name = 'PICTURE_CONTROL_1'.
        create object container_2
          exporting container_name = 'PICTURE_CONTROL_2'.
    
        CREATE OBJECT PICTURE_CONTROL_1 exporting parent = container_1.
        CREATE OBJECT PICTURE_CONTROL_2 exporting parent = container_2.
    
    * Register the events
        EVENT_TAB_LINE-EVENTID = CL_GUI_PICTURE=>EVENTID_PICTURE_DBLCLICK.
        append EVENT_TAB_LINE to EVENT_TAB.
        EVENT_TAB_LINE-EVENTID = CL_GUI_PICTURE=>EVENTID_CONTEXT_MENU.
        append EVENT_TAB_LINE to EVENT_TAB.
     EVENT_TAB_LINE-EVENTID = CL_GUI_PICTURE=>EVENTID_CONTEXT_MENU_SELECTED.
        append EVENT_TAB_LINE to EVENT_TAB.
    
        CALL METHOD PICTURE_CONTROL_1->SET_REGISTERED_EVENTS
          exporting
            EVENTS = event_tab.
    
        CALL METHOD PICTURE_CONTROL_2->SET_REGISTERED_EVENTS
          exporting
            EVENTS = event_tab.
    
    * Create the event_receiver object and set the handlers for the events
    * of the picture controls
        create object event_receiver.
        set handler event_receiver->event_handler_picture_dblclick
                    FOR PICTURE_CONTROL_1.
        set handler event_receiver->event_handler_context_menu
                    FOR PICTURE_CONTROL_1.
        set handler event_receiver->event_handler_context_menu_sel
                    FOR PICTURE_CONTROL_1.
        set handler event_receiver->event_handler_picture_dblclick
                    FOR PICTURE_CONTROL_2.
        set handler event_receiver->event_handler_context_menu
                    FOR PICTURE_CONTROL_2.
        set handler event_receiver->event_handler_context_menu_sel
                    FOR PICTURE_CONTROL_2.
    
    * Set the display mode to 'normal' (0)
        CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
             EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
        CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
             EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
    
    * Set 3D Border
        CALL METHOD PICTURE_CONTROL_1->SET_3D_BORDER
           exporting border = 1.
        CALL METHOD PICTURE_CONTROL_2->SET_3D_BORDER
           exporting border = 1.
    
    
    * new async implementation since 4.6C
    CALL FUNCTION 'DP_PUBLISH_WWW_URL'
      EXPORTING
        OBJID                       = 'HTMLCNTL_TESTHTM2_SAP_AG'
        LIFETIME                    = cndp_lifetime_transaction
      IMPORTING
        URL                         = url
      EXCEPTIONS
        OTHERS                      = 1.
    
    * Load the picture by using the url generated by the data provider.
        if sy-subrc = 0.
          CALL METHOD PICTURE_CONTROL_1->LOAD_PICTURE_FROM_URL_ASYNC
             exporting url = url.
        endif.
    
    CALL FUNCTION 'DP_PUBLISH_WWW_URL'
      EXPORTING
        OBJID                       = 'DEMOWORD97SAPLOGO'
        LIFETIME                    = cndp_lifetime_transaction
      IMPORTING
        URL                         = url2
      EXCEPTIONS
        OTHERS                      = 1.
    
    * load image
        if sy-subrc = 0.
          CALL METHOD PICTURE_CONTROL_2->LOAD_PICTURE_FROM_URL_async
             exporting url = url2.
        endif.
    
      endif.
    endmodule.
    
    
    ************************************************************************
    * PAI
    * after_input
    ************************************************************************
    module after_input input.
      case function.
    * At the end of the program destroy the control
        when 'BACK'.
          CALL METHOD container_1->FREE.
          CALL METHOD container_2->FREE.
          leave to screen 0.
    
    * Change the display mode
        when 'NORMAL'.
          CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
               EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
          CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
               EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
        when 'STRETCH'.
          CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
             EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
          CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
             EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
        when 'FIT'.
          CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
               EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
          CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
               EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
        when 'NORMAL_CTR'.
          CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
        EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
          CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
        EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
        when 'FIT_CTR'.
          CALL METHOD PICTURE_CONTROL_1->SET_DISPLAY_MODE
          EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
          CALL METHOD PICTURE_CONTROL_2->SET_DISPLAY_MODE
          EXPORTING DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
    
    * Clear the picture
        when 'CLEAR'.
          CALL METHOD PICTURE_CONTROL_1->CLEAR_PICTURE.
    
    * Load a new picture
        when space.
          CALL METHOD PICTURE_CONTROL_1->LOAD_PICTURE_FROM_URL
               exporting url = url
               importing result = return.
          call method cl_gui_cfw=>flush.
          if return = 0.
            url = text-000.
          endif.
    
      endcase.
    
      clear function.
    endmodule.
    
    
    ************************************************************************
    * CLASS   c_event_receiver
    * IMPLEMENTATION
    ************************************************************************
    CLASS C_event_receiver implementation.
    
    ************************************************************************
    * CLASS   c_event_receiver
    * METHOD  event_handler_picture_dblclick
    ************************************************************************
      METHOD EVENT_HANDLER_PICTURE_DBLCLICK.
    *        for event picture_dblclick of c_picture_control
    *        importing mouse_pos_x mouse_pos_y.
        DATA pos_x(5) type c.
        DATA pos_y(5) type c.
        pos_x = mouse_pos_x.
        pos_y = mouse_pos_y.
    
        IF SENDER = PICTURE_CONTROL_1.
          MESSAGE I000(0K) WITH
            'DoubleClick' 'Upper Picture' POS_X POS_Y. "#EC NOTEXT
        else.
          MESSAGE I000(0K) WITH
            'DoubleClick' 'Lower Picture' POS_X POS_Y. "#EC NOTEXT
        endif.
      endmethod.
    
    ************************************************************************
    * CLASS   c_event_receiver
    * METHOD  event_handler_context_menu
    ************************************************************************
      METHOD EVENT_HANDLER_CONTEXT_MENU.
        data menu type ref to cl_ctmenu.
        create object menu.
        call method menu->ADD_FUNCTION exporting
          fcode = text-001
          TEXT = TEXT-001.
        call method menu->ADD_FUNCTION exporting
          FCODE = TEXT-002
          TEXT = TEXT-002.
        call method menu->ADD_FUNCTION exporting
          FCODE = TEXT-003
          TEXT = TEXT-003.
        call method menu->ADD_FUNCTION exporting
          FCODE = TEXT-004
          TEXT = TEXT-004.
        call method menu->ADD_FUNCTION exporting
          FCODE = TEXT-005
          TEXT = TEXT-005.
    
        CALL METHOD SENDER->DISPLAY_CONTEXT_MENU
          EXPORTING CONTEXT_MENU = MENU.
      endmethod.
    
    ************************************************************************
    * CLASS   c_event_receiver
    * METHOD  event_handler_context_menu_sel
    ************************************************************************
      METHOD EVENT_HANDLER_CONTEXT_MENU_sel.
        DATA DISPLAY_MODE TYPE I.
        IF FCODE = TEXT-001.
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
        ENDIF.
        IF FCODE = TEXT-002.
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
        ENDIF.
        IF FCODE = TEXT-003.
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
        ENDIF.
        IF FCODE = TEXT-004.
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
        ENDIF.
        IF FCODE = TEXT-005.
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
        ENDIF.
        CALL METHOD SENDER->SET_DISPLAY_MODE
             EXPORTING DISPLAY_MODE = DISPLAY_MODE.
    
      endmethod.
    
    endclass.
  • 相关阅读:
    Apache CXF实战之四 构建RESTful Web Service
    使用CXF开发RESTFul服务
    Java多线程中的异常处理
    Checked异常和Runtime异常体系
    hql 语法与详细解释<转>
    hibernate实现有两种配置,xml配置与注释配置。<转>
    Hibernate配置详细解释
    重构(Refactoring)技巧读书笔记(General Refactoring Tips)
    Hibernate(1)——数据访问层的架构模式<转>
    关于layer.photos即照片显示的问题。
  • 原文地址:https://www.cnblogs.com/JackeyLove/p/13650188.html
Copyright © 2011-2022 走看看