24.09.2014, 13:12 | #1 |
Участник
|
Как узнать контрол вызвавший дисплейный метод?
Ну собственно вопрос в теме)
Создал дисплей метод на датасорсе формы. Создал несколько полей на форме у которых datamethod - мой метод. Диспей метод прекрасно для всех срабатывает, но я хочу менять возвращаемое значение в зависимости от контрола. Вот как бы узнать какой контрол сработал? ps. Делать разные дисплей методы не хочу. В итоге хочу динамические контролы) |
|
24.09.2014, 13:22 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: skuull (1). |
24.09.2014, 13:32 | #3 |
Участник
|
|
|
24.09.2014, 13:38 | #4 |
Боец
|
|
|
24.09.2014, 13:39 | #5 |
Участник
|
Ловите стек вызовов
__________________
Айрат Вильданов. skype: vildanov.a |
|
24.09.2014, 13:59 | #6 |
Участник
|
Ну получается тогда я не ерунду спросил) Про ерунду я и сам все знаю)
А вообще хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. Есть примеры накоряченные решения такой задачи. Но много текста или не универсально. Вот если бы у меня controlCallingMethod() сработал все бы вышло изящно. Два метода по пять строк) |
|
24.09.2014, 15:21 | #8 |
Banned
|
Цитата:
Сообщение от Perc
Ну получается тогда я не ерунду спросил) Про ерунду я и сам все знаю)
А вообще хотелось красиво и компактно заменить блок в форме выводящий наименование всех фин. аналитик. И заодно заложиться теоретически на изменение возможно их количества. Есть примеры накоряченные решения такой задачи. Но много текста или не универсально. Вот если бы у меня controlCallingMethod() сработал все бы вышло изящно. Два метода по пять строк) Зачем? Даже если чисто для себя. Какое обоснование для данной модификации? Будет ли это использоваться на живом приложении или это просто развлечение? Что именно мешает использовать свой дисплейный метод для каждого контрола? Не мое дело конечно, но просто в тему о "красоте" в "Прощай X++" |
|
24.09.2014, 15:28 | #9 |
Участник
|
Легко - использовать для каждого контрола свой DataSource. А в display методе проверять какой DataSource его вызвал.
|
|
24.09.2014, 15:29 | #10 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: ax_mct (1). |
24.09.2014, 15:39 | #11 |
Участник
|
Кстати есть и альтернативное решение - display метод возвращает все значения как массив, а каждый контрол показывает соответствующий ему элемент массива.
|
|
24.09.2014, 17:26 | #12 |
Banned
|
Цитата:
Даже если в данной сборке и прокатит то в любом случае уменьшает надежность системы. А она и так бедная кашляет и сопливиться. Ей такие сюрпризы не нужны P.S. По идее система должна ругнуться на сложный тип в display методе. Но даже если у нее рот заткнут зачем ее насиловать? злодеи и колдуны. на костер Последний раз редактировалось ax_mct; 24.09.2014 в 17:31. |
|
24.09.2014, 18:15 | #13 |
Banned
|
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string. То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно. Еще немного и индусы с копи-пастом покажутся меньшим злом Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение |
|
24.09.2014, 18:32 | #14 |
Участник
|
|
|
24.09.2014, 18:46 | #15 |
Участник
|
Цитата:
Цитата:
Шут с ним с дисплейным методом, предложите другой способ. У меня была реализация (писанная не мной), там метод актив на датасорсе дополнялся вытаскиванием наименований. Но мне он не понравился тем, что 10 запросов к справочнику аналитик шло даже если наименования на другом табе и его не смотрят. |
|
24.09.2014, 18:51 | #16 |
Участник
|
|
|
24.09.2014, 18:56 | #17 |
Участник
|
|
|
24.09.2014, 19:04 | #18 |
Участник
|
Цитата:
Сообщение от ax_mct
В принципе, можно проверять имя контрола и делать Switch по имени.
Возвращать естественно примитивный тип на базе string. То есть можно сделать один дисплейный метод. Но это неправильно и неоправданно и недальновидно. Еще немного и индусы с копи-пастом покажутся меньшим злом Это НЕКРАСИВО на уровне дизайна. Для программиста (текущего или следующего) это только усложнение работы но не полезность. Попросту - извращение |
|
24.09.2014, 19:17 | #19 |
Участник
|
И чем плох вариант с display методом возвращающим массив? При изменении к-ва аналитик с 3-10 не приходится модифицировать половину AX именно благодаря использованию массива для их хранения.
|
|
24.09.2014, 19:58 | #20 |
Участник
|
Цитата:
1. на что вешать дисплей метод? На все контролы? и все 10 будут делать десять запросов? 2. Ну предположим все таки както вернули массив. Как вы будете раздавать членов этого массива по клеточкам?) ммм.. Не понимаю как не особо фанатея с кодом (дполнительные переменные хранения, проверки, контроль текущей записи..) решить задачу этим предположением. И как в итоге решиться проблема роста аналитик и количества контролов на форме.. Утыкаемся туда же откуда начали. В общем, лучше возьмите форму и попробуйте реализовать то о чем подумали) расскажите мне подробности) Задача то простейшая. И кода не должно быть больше чем 10 дисплейных методов) |
|