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:39   #5  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Ловите стек вызовов
__________________
Айрат Вильданов.
skype: vildanov.a
Старый 24.09.2014, 13:59   #6  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Прямой ответ: технически нельзя.
Ну получается тогда я не ерунду спросил) Про ерунду я и сам все знаю)

А вообще хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. Есть примеры накоряченные решения такой задачи. Но много текста или не универсально. Вот если бы у меня controlCallingMethod() сработал все бы вышло изящно. Два метода по пять строк)
Старый 24.09.2014, 14:19   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Perc Посмотреть сообщение
Есть примеры накоряченные решения такой задачи.
Вы про это? Итератор с поддержкой методов обратного вызова для обработки контролов на форме
Старый 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:28   #9  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Perc Посмотреть сообщение
Ну собственно вопрос в теме)
Диспей метод прекрасно для всех срабатывает, но я хочу менять возвращаемое значение в зависимости от контрола. Вот как бы узнать какой контрол сработал?
Легко - использовать для каждого контрола свой DataSource. А в display методе проверять какой DataSource его вызвал.
Старый 24.09.2014, 15:29   #10  
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, 15:39   #11  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
Старый 24.09.2014, 17:26   #12  
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:15   #13  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string.
То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно.
Еще немного и индусы с копи-пастом покажутся меньшим злом
Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение
Старый 24.09.2014, 18:32   #14  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Нет эту тему я не видел.
Но тут кстате забавно оказывается, что автор этой темы первый посоветовал не заниматься ерундой)
Старый 24.09.2014, 18:46   #15  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Я прошу прощения и понимаю что вопрос чисто технический но все же.
Зачем? Даже если чисто для себя. Какое обоснование для данной модификации
Ну не просто технический, но и не жизненно необходимый. Вполне на рабочей форме хотел использовать. Совершенно обыкновенная весчь. Вытянуть наименования финаналитик рядом с кодами на стандарной закладке и как говориться забыть.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Что именно мешает использовать свой дисплейный метод для каждого контрола?
Хотелось выполнить не замысловатое условие - Не вспоминать про эту форму если мы вдруг меняем количество финаналитик в системе с 3 на 10, что есть довольно заурядная задача.
Шут с ним с дисплейным методом, предложите другой способ. У меня была реализация (писанная не мной), там метод актив на датасорсе дополнялся вытаскиванием наименований. Но мне он не понравился тем, что 10 запросов к справочнику аналитик шло даже если наименования на другом табе и его не смотрят.
Старый 24.09.2014, 18:51   #16  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Napalm Посмотреть сообщение
Легко - использовать для каждого контрола свой DataSource. А в display методе проверять какой DataSource его вызвал.
Какой то совершенно тяжелый и не универсальный геморой) О удобстве решения исходной задачи тут и речи нет... ну или не понял что имелось ввиду..
Старый 24.09.2014, 18:56   #17  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Napalm Посмотреть сообщение
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
Это тоже в разряд ерунды, не вижу плюсов у этого решения. Которое кстати надо еще заморочиться попрограммировать.
Старый 24.09.2014, 19:04   #18  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от ax_mct Посмотреть сообщение
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string.
То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно.
Еще немного и индусы с копи-пастом покажутся меньшим злом
Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение
В имени то контрола и проблема. Не торопитесь с резолюциями про извращение) Я видел довольно много чужого прекрасно и не очень работающего кода х++. То что не опытному кодеру кажется извращением, со временем понимается - что это легко читается, удобно переносить, использовать и модифицировать и универсально. А зачастую это еще и эффективно работает)
Старый 24.09.2014, 19:17   #19  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Perc Посмотреть сообщение
Ну не просто технический, но и не жизненно необходимый. Вполне на рабочей форме хотел использовать. Совершенно обыкновенная весчь. Вытянуть наименования финаналитик рядом с кодами на стандарной закладке и как говориться забыть.
И чем плох вариант с display методом возвращающим массив? При изменении к-ва аналитик с 3-10 не приходится модифицировать половину AX именно благодаря использованию массива для их хранения.
Старый 24.09.2014, 19:58   #20  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Napalm Посмотреть сообщение
И чем плох вариант с display методом возвращающим массив? При изменении к-ва аналитик с 3-10 не приходится модифицировать половину AX именно благодаря использованию массива для их хранения.
Пробуем реализовать.
1. на что вешать дисплей метод? На все контролы? и все 10 будут делать десять запросов?
2. Ну предположим все таки както вернули массив. Как вы будете раздавать членов этого массива по клеточкам?)

ммм.. Не понимаю как не особо фанатея с кодом (дполнительные переменные хранения, проверки, контроль текущей записи..) решить задачу этим предположением.
И как в итоге решиться проблема роста аналитик и количества контролов на форме.. Утыкаемся туда же откуда начали.
В общем, лучше возьмите форму и попробуйте реализовать то о чем подумали) расскажите мне подробности) Задача то простейшая. И кода не должно быть больше чем 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, время: 08:15.