Текущее время: Пн, авг 04 2025, 12:42

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Silence1 написала:
У нас ERP, не поверите!
Все равно пришлось call method grid_ref->get_variant )))))))

Ну да, правильно, у них выходной параметр описан как EXPORTING, а не как RETURNING. Я не в системе, поэтому не мог проверить.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Сергей Королев написал:
М-да, приведение-то может и не требуется. Поскольку GET_VARIANT и GET_FRONTEND_FIELDCATALOG это методы, то нужно пустые скобки добавить:
Code:
t_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG( ).

С другой стороны, исходно вам требовалось понять, из какого грида пришло событие. Можно ведь sender сравнить с глобальной переменной, вы ведь скорее всего определили оба грида как глобальные переменные?


Со скобками тоже не прокатило :)
только call method grid_ref->get_variant

А про сравнение sender с глоб.переменной - это как их сравнивать? у меня
g_grid TYPE REF TO cl_gui_alv_grid,
p_grid TYPE REF TO cl_gui_alv_grid,

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:57 
Специалист
Специалист

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:
Сергей Королев написал:
М-да, приведение-то может и не требуется. Поскольку GET_VARIANT и GET_FRONTEND_FIELDCATALOG это методы, то нужно пустые скобки добавить:
Code:
t_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG( ).

С другой стороны, исходно вам требовалось понять, из какого грида пришло событие. Можно ведь sender сравнить с глобальной переменной, вы ведь скорее всего определили оба грида как глобальные переменные?


Со скобками тоже не прокатило :)
только call method grid_ref->get_variant

А про сравнение sender с глоб.переменной - это как их сравнивать? у меня
g_grid TYPE REF TO cl_gui_alv_grid,
p_grid TYPE REF TO cl_gui_alv_grid,


так и сравнивайте ;) ведь это же указатели на одну и ту же область памяти ;)

IF sender EQ g_grid.

ENFIG.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 11:02 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Оказалось все просто:
if sender = g_grid.

ащще! :D

Pokusannoe_Zubilo и Сергей, спасибо вам огромное! С вашей помощью разобралась)))))

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 11:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Silence1 написала:
Сергей, спасибо, sender "приехал", но по нему не видно, для которого объекта произошло событие :(

У меня на своем экране два alv-грида, обрабатываться должны практически одинаково, вот и хотела обойтись одним обработчиком событий. А в user-command уже разрулить, в зависимости от объекта.
Неужели придется второй обработчик "копи-пастить"?

В классе обраработчике создайте переменную, которая будет определять стратегию обработки события. Для каждого грида создайте отдельную инстанцию класса обработчика событий и сответственно привязав обработку события.
Примерно так
Code:
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    DATA: GRID_TYPE TYPE I.

    METHODS:
    constructor
          IMPORTING I_GRID_TYPE TYPE I,

    handle_toolbar
        FOR EVENT toolbar OF cl_gui_alv_grid
          IMPORTING
            e_object
            e_interactive,

    handle_user_command
        FOR EVENT user_command OF cl_gui_alv_grid
            IMPORTING e_ucomm sender.
ENDCLASS.     

....
DATA: h1 type ref to lcl_event_receiver, h2 type ref to lcl_event_receiver.

create object : h1 exporting 1, h2 exporting 2.

set handler: h1->handle_user_command for grid1, h2->handle_user_command for grid2.

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


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

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


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

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


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

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