Текущее время: Вс, июл 27 2025, 22:45

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: одинарный клик в ALV GRID
СообщениеДобавлено: Пт, авг 08 2008, 14:52 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Подскажите пожалуйста как обработать одинарный клик в ALV GRID.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: одинарный клик в ALV GRID
СообщениеДобавлено: Пт, авг 08 2008, 15:12 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Primat написал(а):
Подскажите пожалуйста как обработать одинарный клик в ALV GRID.
А разве что то происходит при одинарном клике? Вроде бы никаких событий данное действие не вызывает. Равно как и смена фокуса поля, переход между полями по табу и т.п. навигация.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 15:22 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Вот я и не чего не нашел по этому поводу. Может существует обход этой ситуации?(че-то добавить, кроме кнопок и галок).Было бы хорошо если существовало такое событие.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 15:26 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Смотря какой ALV Grid (их несколько классов существует).
Одинарный клик срабатывает у полей, для которых установлена опция HOTSPOT или LINK (если используется CL_SALV_TABLE).

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 15:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
set_table_for_first_display


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 08 2008, 15:30 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Немного кода:
Code:
CLASS LCL_HANDLER_RECEIVING DEFINITION.
  PUBLIC SECTION.
    METHODS: HANDLE_DELAYED_CHANGED_SEL_CB
               FOR EVENT DELAYED_CHANGED_SEL_CALLBACK
               OF CL_GUI_ALV_GRID.

ENDCLASS.

DATA: G_HANDLER TYPE REF TO LCL_HANDLER_RECEIVING.   " Event handler
CLASS LCL_HANDLER_RECEIVING IMPLEMENTATION.
  METHOD HANDLE_DELAYED_CHANGED_SEL_CB.
    PERFORM SELECTION_CHANGED.
  ENDMETHOD.

ENDCLASS.



Code:
    PERFORM CHECK_FRONTEND_TYPE IN PROGRAM SAPFSSOA
             USING GP_FRONTEND.
    IF GP_FRONTEND <> 'ITS'.
      SET HANDLER G_HANDLER->HANDLE_DELAYED_CHANGED_SEL_CB
                     FOR PROJ_GRID.
* Activate delayed event for preview
      CALL METHOD PROJ_GRID->REGISTER_DELAYED_EVENT
         EXPORTING
            I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_DELAYED_CHANGE_SELECT.
    ENDIF.


Работает вместо дабл-клика - в смысле регистрировать либо дабл-клик, либо это событие.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 11 2008, 10:33 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 02:02
Сообщения: 188
Откуда: Мирный -> Москва
Пол: Мужской
Чето мне кажется вы усложняете, вот же есть простой вариант.


CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*Hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no .
PRIVATE SECTION.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION .
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD .
ENDCLASS .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 11 2008, 11:04 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Использование хотспот - не спортивно :) Да и внешний вид портиться, на мой взгляд.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 11 2008, 16:14 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
John Doe написал:
Немного кода:
Code:
CLASS LCL_HANDLER_RECEIVING DEFINITION.
  PUBLIC SECTION.
    METHODS: HANDLE_DELAYED_CHANGED_SEL_CB
               FOR EVENT DELAYED_CHANGED_SEL_CALLBACK
               OF CL_GUI_ALV_GRID.

ENDCLASS.

DATA: G_HANDLER TYPE REF TO LCL_HANDLER_RECEIVING.   " Event handler
CLASS LCL_HANDLER_RECEIVING IMPLEMENTATION.
  METHOD HANDLE_DELAYED_CHANGED_SEL_CB.
    PERFORM SELECTION_CHANGED.
  ENDMETHOD.

ENDCLASS.



Code:
    PERFORM CHECK_FRONTEND_TYPE IN PROGRAM SAPFSSOA
             USING GP_FRONTEND.
    IF GP_FRONTEND <> 'ITS'.
      SET HANDLER G_HANDLER->HANDLE_DELAYED_CHANGED_SEL_CB
                     FOR PROJ_GRID.
* Activate delayed event for preview
      CALL METHOD PROJ_GRID->REGISTER_DELAYED_EVENT
         EXPORTING
            I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_DELAYED_CHANGE_SELECT.
    ENDIF.


Работает вместо дабл-клика - в смысле регистрировать либо дабл-клик, либо это событие.


А что еще нужно дописать чтоб она заработала (кроме set handler g_verifier->HANDLE_DELAYED_CHANGED_SEL_CB for g_grid.
) наверное что-то нужно дописать в филдкаталоге? Можно по подробней как пользоваться методом.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 11 2008, 16:17 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Azik написал:
Чето мне кажется вы усложняете, вот же есть простой вариант.


CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*Hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no .
PRIVATE SECTION.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION .
*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
ENDMETHOD .
ENDCLASS .



+ в филд каталоге hs_fieldcat-HOTSPOT = 'X'
(дополнения для не стакливавшихся с методом)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 11 2008, 21:43 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
В филдкаталоге ничего прописывать не надо. Метод срабатывает при смене фокуса на строчке, но с небольшой задержкой. Метод взаимоисключаем с методом дабл-клик.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 12 2008, 09:48 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Благодарю все получилось.
Буду пользоваться hotspot.
HANDLE_DELAYED_CHANGED_SEL_CB напрягает 1,5 сек простоя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: одинарный клик в ALV GRID
СообщениеДобавлено: Ср, фев 04 2015, 14:24 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, окт 09 2007, 15:00
Сообщения: 79
Задержку можно уменьшить.
Она задаётся с помощью вызова метода SET_DELAY_CHANGE_SELECTION. Одна проблема - он protected. Но проблема решаемая.
Можно создать класс наследник от cl_gui_alv_grid, в нём создать метод вызывающий внутри себя SET_DELAY_CHANGE_SELECTION с указанием времени задержки.

Вот примерчик из интернета:
Code:
*----------------------------------------------------------------------*
CLASS lcl_alv_wrapper DEFINITION INHERITING FROM cl_gui_alv_grid.
  PUBLIC SECTION.
    METHODS : constructor,
              set_delay_time,
              click FOR EVENT delayed_changed_sel_callback OF cl_gui_alv_grid.
ENDCLASS.                    "lcl_alv_wrapper DEFINITION

*----------------------------------------------------------------------*
CLASS lcl_alv_wrapper IMPLEMENTATION.
  METHOD constructor.
    super->constructor( i_parent = cl_gui_container=>default_screen ).
    SET HANDLER me->click FOR ALL INSTANCES.
  ENDMETHOD.                    "constructor
  METHOD set_delay_time.
    me->set_delay_change_selection( 10 ).
  ENDMETHOD.                    "set_delay_time
  METHOD click.
    MESSAGE 'Hi' TYPE 'I'.
  ENDMETHOD.                    "click
ENDCLASS.                    "lcl_alv_wrapper IMPLEMENTATION

DATA : grid    TYPE REF TO lcl_alv_wrapper,
       TABLE   TYPE STANDARD TABLE OF makt.


PARAMETER DUMMY.

AT SELECTION-SCREEN OUTPUT.

  CREATE OBJECT grid.

  SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE TABLE UP TO 27 ROWS.

  grid->set_table_for_first_display( EXPORTING i_structure_name = 'MAKT'
                                      CHANGING it_outtab       = TABLE ).
  grid->register_delayed_event( i_event_id = cl_gui_alv_grid=>mc_evt_delayed_change_select ).
  grid->set_delay_time( ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Чт, фев 05 2015, 06:57 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, июл 23 2013, 17:41
Сообщения: 36
Пол: Мужской
John Doe написал:
Использование хотспот - не спортивно :) Да и внешний вид портиться, на мой взгляд.


Не усложняйте, HOTSPOT прекрасно и стабильно работает...
SAP и красивый интерфейс вещи не совместимые

_________________
- Хочу выучить весь SAP
- А ты не лопнешь деточка???


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: одинарный клик в ALV GRID
СообщениеДобавлено: Чт, фев 05 2015, 08:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Задержка с ответом явно больше 1,5 секунд ;)

_________________
С уважением,
Удав.


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

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


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

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


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

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