Текущее время: Вт, сен 23 2025, 14:27

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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