SAP: Picture Control

下午参考系统demo程序搞了个Picture Control的程序,看效果图:

代码如下:

  TYPE-POOLS:CNDP.

*declarations
DATA:GO_PICTURE TYPE REF TO CL_GUI_PICTURE,
      GO_PICTURE_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA URL  TYPE CNDP_URL.
DATA EVENT_TAB_LINE TYPE CNTL_SIMPLE_EVENT.
DATA EVENT_TAB TYPE CNTL_SIMPLE_EVENTS.

SET SCREEN 100.
*
CLASS C_EVENT_RECEIVER DEFINITION.
  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.                    "c_event_receiver DEFINITION
DATA EVENT_RECEIVER  TYPE REF TO C_EVENT_RECEIVER.

*----------------------------------------------------------------------*
*  MODULE statys_0100 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'ZTEST4'.
  SET TITLEBAR 'ZTEST4'.

  IF GO_PICTURE_CONTAINER IS INITIAL .
    CREATE OBJECT GO_PICTURE_CONTAINER
    EXPORTING
      CONTAINER_NAME = 'PICTURE_CONTAINER'.
    CREATE OBJECT GO_PICTURE
    EXPORTING
      PARENT = GO_PICTURE_CONTAINER.
    CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
      EXPORTING
        DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
*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 GO_PICTURE->SET_REGISTERED_EVENTS
      EXPORTING
        EVENTS = EVENT_TAB.
*Create event receive
    CREATE OBJECT EVENT_RECEIVER.
    SET HANDLER EVENT_RECEIVER->EVENT_HANDLER_PICTURE_DBLCLICK
    FOR GO_PICTURE.
    SET HANDLER EVENT_RECEIVER->EVENT_HANDLER_CONTEXT_MENU
    FOR GO_PICTURE.
    SET HANDLER EVENT_RECEIVER->EVENT_HANDLER_CONTEXT_MENU_SEL
    FOR GO_PICTURE.

*CALL METHOD GO_PICTURE->set_display_mode
*EXPORTING
*  DISPLAY_MODE = CL_GUI_PICTURE=>
*load picture from url
*    CALL METHOD GO_PICTURE->LOAD_PICTURE_FROM_SAP_ICONS
*      EXPORTING
*        ICON  = ICON_DELETE
*      EXCEPTIONS
*        ERROR = 1.


    CALL FUNCTION 'DP_PUBLISH_WWW_URL'
      EXPORTING
        OBJID    = 'HTMLCNTL_TESTHTM2_SAP_AG'
        LIFETIME = CNDP_LIFETIME_TRANSACTION
      IMPORTING
        URL      = URL
      EXCEPTIONS
        OTHERS   = 1.

    IF SY-SUBRC = 0.
      CALL METHOD GO_PICTURE->LOAD_PICTURE_FROM_URL_ASYNC
        EXPORTING
          URL = URL.
    ENDIF.

  ENDIF.
ENDMODULE.                    "statys_0100 OUTPUT

*----------------------------------------------------------------------*
*  MODULE exit INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT .
  CASE SY-UCOMM.
    WHEN 'EXIT'.
      FREE GO_PICTURE_CONTAINER.
      FREE GO_PICTURE.
      LEAVE PROGRAM.
      SET SCREEN 0.
    WHEN  'NORMAL'.
      CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
        EXPORTING
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
    WHEN 'STRETCH'.
      CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
        EXPORTING
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
    WHEN 'FIT'.
      CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
        EXPORTING
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
    WHEN 'NORMAL_CTR'.
      CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
        EXPORTING
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
    WHEN 'FIT_CTR'.
      CALL METHOD GO_PICTURE->SET_DISPLAY_MODE
        EXPORTING
          DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
    WHEN 'CLEAR'.
      CALL METHOD GO_PICTURE->CLEAR_PICTURE.

    WHEN OTHERS.
  ENDCASE.
ENDMODULE.                    "EXIT INPUT

*----------------------------------------------------------------------*
*       CLASS C_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS C_EVENT_RECEIVER IMPLEMENTATION.
  METHOD EVENT_HANDLER_PICTURE_DBLCLICK.
    DATA:POS_X(5) TYPE C,
          POS_Y(5) TYPE C.
    POS_X = MOUSE_POS_X.
    POS_Y = MOUSE_POS_Y.

    IF SENDER = GO_PICTURE.
      MESSAGE S000(OK) WITH 'Double Click Events' POS_X POS_Y .
    ENDIF.
  ENDMETHOD.                    "EVENT_HANDLER_PICTURE_DBLCLICK

  METHOD EVENT_HANDLER_CONTEXT_MENU.
    DATA MENU TYPE REF TO CL_CTMENU.
    CREATE OBJECT MENU.
    CALL METHOD MENU->ADD_FUNCTION
      EXPORTING
        FCODE = 'Noral'
        TEXT  = 'NORMAL'.
    CALL METHOD MENU->ADD_FUNCTION
      EXPORTING
        FCODE = 'Stretch'
        TEXT  = 'Stretch'.
    CALL METHOD MENU->ADD_FUNCTION
      EXPORTING
        FCODE = 'Fit'
        TEXT  = 'Fit'.
    CALL METHOD MENU->ADD_FUNCTION
      EXPORTING
        FCODE = 'Normal/centered'
        TEXT  = 'Normal/centered'.
    CALL METHOD MENU->ADD_FUNCTION
      EXPORTING
        FCODE = 'Fit and center'
        TEXT  = 'Fit and center'.

    CALL METHOD SENDER->DISPLAY_CONTEXT_MENU
      EXPORTING
        CONTEXT_MENU = MENU.

  ENDMETHOD.                    "EVENT_HANDLER_CONTEXT_MENU

  METHOD EVENT_HANDLER_CONTEXT_MENU_SEL.
    DATA DISPLAY_MODE TYPE I.
    IF FCODE = 'Noral'.
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL.
    ELSEIF FCODE = 'Stretch'.
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH.
    ELSEIF FCODE = 'Fit'.
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT.
    ELSEIF FCODE = 'Normal/centered'.
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_NORMAL_CENTER.
    ELSEIF FCODE = 'Fit and center'.
      DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER.
    ENDIF.
    CALL METHOD SENDER->SET_DISPLAY_MODE
      EXPORTING
        DISPLAY_MODE = DISPLAY_MODE.
  ENDMETHOD.                    "EVENT_HANDLER_CONTEXT_MENU_SEL
ENDCLASS.                    "C_event_receiver IMPLEMENTATION

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值