Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7188927
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2007-07-06 09:54:07

*&---------------------------------------------------------------------*
*& Report  Z_BARRY_TOOLBAR                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*&   演示如何在Screen中的Customer Control放置工具栏                    *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  z_barry_screen_toolbar                     .
TYPE-POOLS: icon.
CLASS cls_event_handler DEFINITION DEFERRED.
DATA:
  ok_code                    LIKE sy-ucomm,
  g_posx                     TYPE i,
  g_posy                     TYPE i,
  go_toolbar_container       TYPE REF TO cl_gui_custom_container,
  go_toolbar                 TYPE REF TO cl_gui_toolbar,
  go_event_handler           TYPE REF TO cls_event_handler,
  go_context_menu            TYPE REF TO cl_ctmenu.
DATA:
  gi_events                  TYPE cntl_simple_events,
  g_event                    TYPE cntl_simple_event,
  gi_button_group            TYPE ttb_button.
*---------------------------------------------------------------------*
*       CLASS   CLS_EVENT_HANDLER
*---------------------------------------------------------------------*
* This class handles the function_selected and dropdow_clicked events
* from the toolbar
*---------------------------------------------------------------------*

CLASS cls_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_function_selected
        FOR EVENT function_selected OF cl_gui_toolbar
          IMPORTING fcode,
      on_dropdown_clicked
        FOR EVENT dropdown_clicked OF cl_gui_toolbar
          IMPORTING fcode posx posy.
ENDCLASS.                    "cls_event_handler DEFINITION
 
*---------------------------------------------------------------------*
*       CLASS cls_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*

CLASS cls_event_handler IMPLEMENTATION.
  METHOD on_function_selected.
*-- Actions for buttons and context menus
    CASE fcode.
      WHEN 'EXIT'.
        LEAVE TO SCREEN 0.
      WHEN 'ENABLE'.
*     Enable the PRINT button
        CALL METHOD go_toolbar->set_button_state
          EXPORTING
            enabled = 'X'
            fcode   = 'PRINT'.
      WHEN 'DISABLE'.
*     Disable the PRINT button
        CALL METHOD go_toolbar->set_button_state
          EXPORTING
            enabled = ' '
            fcode   = 'PRINT'.
*     Other menus and context menus
      WHEN 'PRINT'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
             EXPORTING
                  textline1 = 'Printing'.
      WHEN 'CONTEXT1'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
             EXPORTING
                  textline1 = 'Menu: Do something funny'.
      WHEN 'CONTEXT2'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
             EXPORTING
                  textline1 = 'Menu: Do something crazy'.
      WHEN 'SUB1'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
             EXPORTING
                  textline1 = 'Submenu: Do something boring'.
      WHEN 'SUB2'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
             EXPORTING
                  textline1 = 'Submenu: Do something good'.
    ENDCASE.
  ENDMETHOD.                    "on_function_selected

  METHOD on_dropdown_clicked.
*-- Fires when a dropdown menu is clicked. After it has been
*-- clicked a context menu is shown beside the button.
*   Save x and y position of button for use with context menu
    CLEAR: g_posx, g_posy.
    g_posx = posx.
    g_posy = posy.
* Create context menu for menu button
    PERFORM create_context_menu.
  ENDMETHOD.                    "on_dropdown_clicked
ENDCLASS.                    "cls_event_handler IMPLEMENTATION

START-OF-SELECTION.
  SET SCREEN '100'.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  IF go_toolbar_container IS INITIAL.
* Create container
    CREATE OBJECT go_toolbar_container
      EXPORTING
        container_name = 'CC1'.
* Create toolbar
    CREATE OBJECT go_toolbar
      EXPORTING
        parent = go_toolbar_container.
* Add a button to the toolbar
    PERFORM add_button.
* Add a button group to the toolbar
    PERFORM add_button_group.
* Create event table. Note that the event ID must be found in the
* documentation of the specific control

    CLEAR g_event. REFRESH gi_events.
    g_event-eventid    = go_toolbar->m_id_function_selected.
    g_event-appl_event = 'X'.    "This is an application event
    APPEND g_event TO gi_events.
    CLEAR g_event.
    g_event-eventid    = go_toolbar->m_id_dropdown_clicked.
    g_event-appl_event = 'X'.
    APPEND g_event TO gi_events.
*   Use the events table to register events for the control
    CALL METHOD go_toolbar->set_registered_events
      EXPORTING
        events = gi_events.
*  Create event handlers
    CREATE OBJECT go_event_handler.
    SET HANDLER go_event_handler->on_function_selected
      FOR go_toolbar.
    SET HANDLER go_event_handler->on_dropdown_clicked
       FOR go_toolbar.
  ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  add_button
*&---------------------------------------------------------------------*
*  Adds one pushbutton to the toolbar
*----------------------------------------------------------------------*
FORM add_button.
  CALL METHOD go_toolbar->add_button
    EXPORTING
      fcode       = 'EXIT'            "Function Code
      icon        = icon_system_end   "ICON name
      is_disabled = ' '               "Disabled = X
      butn_type   = cntb_btype_button "Type of button
      text        = 'Exit'            "Text on button
      quickinfo   = 'Exit program'    "Quick info
      is_checked  = ' '.              "Button selected
ENDFORM.                    " add_button
*&---------------------------------------------------------------------*
*&      Form  add_button_group
*&---------------------------------------------------------------------*
* Adds a button group to the toolbar.
* The buttons are added to table gi_button_group, and the table is used
* as input to the Add_button_group method. Note that method Fill_buttons
* is used to fill the table.
*----------------------------------------------------------------------*
FORM add_button_group.
* Add a seperator
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'SEP1'
      icon       = ' '
      butn_type  = cntb_btype_sep
    CHANGING
      data_table = gi_button_group.
* Add an Enable button
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'ENABLE'
      icon       = ' '
      butn_type  = cntb_btype_group
      text       = 'Enable'
      quickinfo  = 'Enable a print button'
      checked    = 'X'
    CHANGING
      data_table = gi_button_group.
* Add a Disable button
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'DISABLE'
      icon       = ''
      butn_type  = cntb_btype_group
      text       = 'Disable'
      quickinfo  = 'Disable print button'
      checked    = ' '
    CHANGING
      data_table = gi_button_group.
* Add a seperator
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'SEP2'
      icon       = ' '
      butn_type  = cntb_btype_sep
    CHANGING
      data_table = gi_button_group.
* Add print button
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'PRINT'
      icon       = icon_print
      butn_type  = cntb_btype_button
      text       = 'Print'
      quickinfo  = 'Print something'
    CHANGING
      data_table = gi_button_group.
* Add a menu button
  CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
    EXPORTING
      fcode      = 'MENU'
      icon       = ' '
      butn_type  = cntb_btype_menu
      text       = 'Menu'
      quickinfo  = 'A menu buttonz'
    CHANGING
      data_table = gi_button_group.
* Add button group to toolbar
  CALL METHOD go_toolbar->add_button_group
    EXPORTING
      data_table = gi_button_group.
ENDFORM.                    " add_button_group
*&---------------------------------------------------------------------*
*&      Form  create_context_menu
*&---------------------------------------------------------------------*
* This form creates a context menu and a submenu for the menu button.
*----------------------------------------------------------------------*
FORM create_context_menu.
  DATA: lo_submenu TYPE REF TO cl_ctmenu.
  IF go_context_menu IS INITIAL.
*-- Create context menu
    CREATE OBJECT go_context_menu.
    CALL METHOD go_context_menu->add_function
      EXPORTING
        fcode = 'CONTEXT1'
        text  = 'Do something funny'.
    CALL METHOD go_context_menu->add_function
      EXPORTING
        fcode = 'CONTEXT2'
        text  = 'Do something crazy'.
    CALL METHOD go_context_menu->add_separator.
*   Create sub menu for the context menu
    CREATE OBJECT lo_submenu.
    CALL METHOD lo_submenu->add_function
      EXPORTING
        fcode = 'SUB1'
        text  = 'Do something boring'.
    CALL METHOD lo_submenu->add_function
      EXPORTING
        fcode = 'SUB2'
        text  = 'Do something good'.
*** Add sub menu to the context menu
    CALL METHOD go_context_menu->add_submenu
      EXPORTING
        menu = lo_submenu
        text = 'Do something else.....'.
  ENDIF.
* Link menu to toolbar button. To position the context menu the
* x and y positions of the menu button is used.
* These values was retrieved in the On_dropdown_clicked
* method of cls_event_handler
  CALL METHOD go_toolbar->track_context_menu
    EXPORTING
      context_menu = go_context_menu
      posx         = g_posx
      posy         = g_posy.
ENDFORM.                    " create_context_menu
阅读(4445) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~