Текущее время: Пн, июл 28 2025, 02:41

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


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

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


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

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