AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.09.2014, 13:12   #1  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Как узнать контрол вызвавший дисплейный метод?
Ну собственно вопрос в теме)
Создал дисплей метод на датасорсе формы. Создал несколько полей на форме у которых datamethod - мой метод. Диспей метод прекрасно для всех срабатывает, но я хочу менять возвращаемое значение в зависимости от контрола. Вот как бы узнать какой контрол сработал?
ps. Делать разные дисплей методы не хочу. В итоге хочу динамические контролы)
Старый 24.09.2014, 13:22   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Perc Посмотреть сообщение
я хочу менять возвращаемое значение в зависимости от контрола
Не страдайте ерундой
За это сообщение автора поблагодарили: skuull (1).
Старый 24.09.2014, 13:32   #3  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Не страдайте ерундой
Такой ответ я знаю и сам. Он не правильный)
Старый 24.09.2014, 13:38   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Прямой ответ: технически нельзя.

Непрямой ответ:
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Не страдайте ерундой
Старый 24.09.2014, 13:59   #5  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Прямой ответ: технически нельзя.
Ну получается тогда я не ерунду спросил) Про ерунду я и сам все знаю)

А вообще хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. Есть примеры накоряченные решения такой задачи. Но много текста или не универсально. Вот если бы у меня controlCallingMethod() сработал все бы вышло изящно. Два метода по пять строк)
Старый 24.09.2014, 14:19   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Perc Посмотреть сообщение
Есть примеры накоряченные решения такой задачи.
Вы про это? Итератор с поддержкой методов обратного вызова для обработки контролов на форме
Старый 24.09.2014, 18:32   #7  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Нет эту тему я не видел.
Но тут кстате забавно оказывается, что автор этой темы первый посоветовал не заниматься ерундой)
Старый 24.09.2014, 15:21   #8  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Perc Посмотреть сообщение
Ну получается тогда я не ерунду спросил) Про ерунду я и сам все знаю)

А вообще хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. Есть примеры накоряченные решения такой задачи. Но много текста или не универсально. Вот если бы у меня controlCallingMethod() сработал все бы вышло изящно. Два метода по пять строк)
Я прошу прощения и понимаю что вопрос чисто технический но все же.
Зачем? Даже если чисто для себя. Какое обоснование для данной модификации?
Будет ли это использоваться на живом приложении или это просто развлечение?

Что именно мешает использовать свой дисплейный метод для каждого контрола?
Не мое дело конечно, но просто в тему о "красоте" в "Прощай X++"
Старый 24.09.2014, 15:29   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Зачем?
Цитата:
Сообщение от Perc Посмотреть сообщение
хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. )
.
За это сообщение автора поблагодарили: ax_mct (1).
Старый 24.09.2014, 18:46   #10  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Я прошу прощения и понимаю что вопрос чисто технический но все же.
Зачем? Даже если чисто для себя. Какое обоснование для данной модификации
Ну не просто технический, но и не жизненно необходимый. Вполне на рабочей форме хотел использовать. Совершенно обыкновенная весчь. Вытянуть наименования финаналитик рядом с кодами на стандарной закладке и как говориться забыть.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Что именно мешает использовать свой дисплейный метод для каждого контрола?
Хотелось выполнить не замысловатое условие - Не вспоминать про эту форму если мы вдруг меняем количество финаналитик в системе с 3 на 10, что есть довольно заурядная задача.
Шут с ним с дисплейным методом, предложите другой способ. У меня была реализация (писанная не мной), там метод актив на датасорсе дополнялся вытаскиванием наименований. Но мне он не понравился тем, что 10 запросов к справочнику аналитик шло даже если наименования на другом табе и его не смотрят.
Старый 24.09.2014, 13:39   #11  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Ловите стек вызовов
__________________
Айрат Вильданов.
skype: vildanov.a
Старый 24.09.2014, 15:28   #12  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Perc Посмотреть сообщение
Ну собственно вопрос в теме)
Диспей метод прекрасно для всех срабатывает, но я хочу менять возвращаемое значение в зависимости от контрола. Вот как бы узнать какой контрол сработал?
Легко - использовать для каждого контрола свой DataSource. А в display методе проверять какой DataSource его вызвал.
Старый 24.09.2014, 18:51   #13  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Napalm Посмотреть сообщение
Легко - использовать для каждого контрола свой DataSource. А в display методе проверять какой DataSource его вызвал.
Какой то совершенно тяжелый и не универсальный геморой) О удобстве решения исходной задачи тут и речи нет... ну или не понял что имелось ввиду..
Старый 24.09.2014, 15:39   #14  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
Старый 24.09.2014, 17:26   #15  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Napalm Посмотреть сообщение
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
Движок АХ, реализация кэширования вряд ли настолько крепки и неуязвимы против такого хакерства. И так стандартных проблем хватает а тут может валится еще и из-за таких нестандартных решений. Извращенная красота, злоупотребление гибкостью системы.
Даже если в данной сборке и прокатит то в любом случае уменьшает надежность системы. А она и так бедная кашляет и сопливиться. Ей такие сюрпризы не нужны

P.S. По идее система должна ругнуться на сложный тип в display методе. Но даже если у нее рот заткнут зачем ее насиловать? злодеи и колдуны. на костер

Последний раз редактировалось ax_mct; 24.09.2014 в 17:31.
Старый 24.09.2014, 18:56   #16  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Napalm Посмотреть сообщение
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
Это тоже в разряд ерунды, не вижу плюсов у этого решения. Которое кстати надо еще заморочиться попрограммировать.
Старый 24.09.2014, 18:15   #17  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string.
То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно.
Еще немного и индусы с копи-пастом покажутся меньшим злом
Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение
Старый 24.09.2014, 19:04   #18  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string.
То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно.
Еще немного и индусы с копи-пастом покажутся меньшим злом
Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение
В имени то контрола и проблема. Не торопитесь с резолюциями про извращение) Я видел довольно много чужого прекрасно и не очень работающего кода х++. То что не опытному кодеру кажется извращением, со временем понимается - что это легко читается, удобно переносить, использовать и модифицировать и универсально. А зачастую это еще и эффективно работает)
Старый 24.09.2014, 21:35   #19  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Или что-то другое имеется в виду?
Наименование не аналитик, а значений аналитик
Старый 24.09.2014, 22:29   #20  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Наименование не аналитик, а значений аналитик
Только сейчас въехал в то что хочет автор. Так как при корректном добавлении финансовой аналитики, она прекрасно автоматически распадается на элементы массива на формах.

А вот когда значение аналитики "111" а пользователь хочет человеческое наименование справа то да, это задача частая и популярная.

Всегда ее решал на автомате и без проблем. Дополнительный контрол справа с дисплейным методом.

В принципе эти "Value's name" контролы можно добавлять автоматически при каждом запуске формы. Реализуемо, но я такое делать никогда не буду в силу бизнес-модели работы и нелепости самой задумки.

Интересно как часто добавляются финансовые аналитики Если часто то да можно сделать кнопку на форму - "Обновить контролы". Но это явно не так.

Если же как учебно-абстрактная задача то действительно достаточно азартно. Но я бы просто уточнил что хочет пользователь и изменил дизайн решения начиная с cамого начала. Например tooltips, mouseOver, hotkeys или просто показ комбинированного имени "ID (NAME)" вместо ID аналитики (в этом случае надо думать о длине или о новом EDT на форме что тоже неэлегантно).

Пойнт в том что если требуется сложное решение то значит надо менять дизайн.
Сложность решения на уровне кодирования это признак плохого дизайна или плохой идеи.

Самое простое это тупо ручками добавлять контрол для "Value's name". Не так часто это и случится. Но безусловно задача интересная, не могу этого не признать - просто я такие себе позволить просто не могу

В порядке бреда.
Вариант 1
EDT akaDimensionName. Добавить массив контролов "Value's name" на форму. Связь между контролами через одинаковый индекс в массивах.

Вариант 2
Показ грида [ID, NAME] с таблицей финансовой аналитики и фильтром по данному значению.

Вариант/Мысль? 3
Исходить из того у нас коллекция контролов в группе на форме и мы может их перебрать и что надо добавить.

Declaimer: это все несерьезно однако.

Последний раз редактировалось ax_mct; 24.09.2014 в 23:10.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Дисплейный метод JonAx DAX: Программирование 40 07.08.2014 17:39
Не срабатывает display-метод Vasiliusis DAX: Программирование 7 23.04.2014 15:03
Как программно узнать текущий объект и метод в котором выполняется код? McCoy DAX: Программирование 15 25.02.2011 23:34
Как узнать UserName от кого выполняется метод ? egorych DAX: Программирование 7 18.09.2007 18:46
Можно ли в display методе узнать для какого FormControl'а этот метод вызван? Dudnik Anton DAX: Программирование 3 01.02.2006 12:22

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:46.