Текущее время: Пт, авг 01 2025, 14:58

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: ERROR Custom ActiveX Control! HELP
СообщениеДобавлено: Ср, май 06 2009, 06:53 
Начинающий
Начинающий

Зарегистрирован:
Пт, янв 16 2009, 21:36
Сообщения: 20
Пол: Мужской
Создал класс оболочку для ActiveX (Forms.TextBox.1) контрола ZCL_EDITBOX (унаследовал от CL_GUI_CONTROL)
мне нужно ловить событие OnChange этого контрола в ABAP. Определяю событие OnChange = 2.

Code:
METHOD constructor.
  DATA prog_id(80).

  IF parent IS INITIAL.
    RAISE create_error..
  ENDIF.

  CLASS cl_gui_cfw DEFINITION LOAD.

  IF NOT activex IS INITIAL.
    prog_id  = 'Forms.TextBox.1'.
  ELSEIF NOT javabean IS INITIAL.
    prog_id  = ''.
    RAISE create_error.
  ENDIF.

  CALL METHOD super->constructor
    EXPORTING
      clsid      = prog_id
      shellstyle = shellstyle
      parent     = parent
      lifetime   = lifetime
      name       = name
    EXCEPTIONS
      OTHERS     = 1.
  IF sy-subrc  0.
    RAISE create_error.
  ENDIF.

  DATA: my_simple_event TYPE cntl_simple_event,
        my_simple_events TYPE cntl_simple_events.

  my_simple_event-eventid = 2. "OnChange
  my_simple_event-appl_event = space.
  APPEND my_simple_event TO my_simple_events.

  CALL METHOD me->set_registered_events
    EXPORTING
      events = my_simple_events.

ENDMETHOD.

METHOD set_registered_events.
  IF h_control IS INITIAL.
    RAISE cntl_error.
  ENDIF.

  DATA:
    simple_event TYPE cntl_simple_event,
    ex_event TYPE cntl_event,
    events_ex TYPE cntl_events.

  LOOP AT events INTO simple_event.
    ex_event-eventid = simple_event-eventid.
    ex_event-is_shellevent = space.
    IF simple_event-appl_event IS INITIAL.
      ex_event-is_systemevent = 'X'.
    ENDIF.
    APPEND ex_event TO events_ex.
    CLEAR simple_event.
    CLEAR ex_event.
  ENDLOOP.

  CALL METHOD me->set_registered_events_ex
    EXPORTING
      eventtab = events_ex
    EXCEPTIONS
      OTHERS   = 1.
  IF sy-subrc  0.
    RAISE cntl_error.
  ENDIF.

  registered_simple_events[] = events[].
ENDMETHOD.

METHOD dispatch.
  CASE eventid.
    WHEN 2.
      DATA lv_text TYPE string.
      CALL METHOD me->GET_PROPERTY
        EXPORTING
          property = 'Text'
        IMPORTING
          value    = lv_text.
      CALL METHOD cl_gui_cfw=>flush.
      RAISE EVENT onchange EXPORTING text = lv_text.
    WHEN OTHERS.
      RAISE cntl_error.
  ENDCASE.
ENDMETHOD.


пишу тестовую програму
Code:
REPORT  z_testeditbox.

DATA: ok_code LIKE sy-ucomm,
      my_edit TYPE REF TO zcl_editbox,
      custom_container TYPE REF TO cl_gui_custom_container.

CLASS lcl_handler DEFINITION.
  PUBLIC SECTION.
    METHODS: onchange FOR EVENT onchange OF zcl_editbox IMPORTING text.
ENDCLASS.

CLASS lcl_handler IMPLEMENTATION.
  METHOD onchange.
    message text TYPE 'I'.
  ENDMETHOD.
ENDCLASS.

DATA:
  handler TYPE REF TO lcl_handler.

START-OF-SELECTION.
  CALL SCREEN 0100.

MODULE status_0100 OUTPUT.
  IF custom_container IS INITIAL.
    CREATE OBJECT custom_container
      EXPORTING
        container_name = 'CONTAINER'.
  ENDIF.
  IF my_edit IS INITIAL.
    CREATE OBJECT my_edit
      EXPORTING
        parent = custom_container.
  ENDIF.
  IF handler IS INITIAL.
    CREATE OBJECT handler.
    SET HANDLER handler->onchange FOR my_edit.
  ENDIF.
ENDMODULE.

MODULE user_command_0100 INPUT.
  CASE ok_code.
    WHEN 'EXIT'.
      SET SCREEN 0.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.


запускаю И!....ловиться тольок первое событие...и контрол толи теряет фокус толи блокируется, но когда в него принудительно жамкнуть мышкой ввод опять возможен...ПОЧЕМУ ?...как исправить? Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ERROR Custom ActiveX Control! HELP
СообщениеДобавлено: Ср, май 06 2009, 07:58 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
siga2 написал:
Создал класс оболочку для ActiveX (Forms.TextBox.1) контрола ZCL_EDITBOX ...

А темы то зачем плодить? Старую нельзя было поднять?
Custom ActiveX Control !!! ОШИБКА !!!

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB