19.08.2009, 14:32 | #1 |
Участник
|
Передать параметр лукап форме?
Строится динамический диалог, на базе RunBase.
На форме есть 2 лукапа. Задача наложить фильтр, на лукап 2, в зависимости от значений в лукап 1. Из того что удалось найти на форуме понял что нужно, переопределить запускаемую форму, используемого EDT, при создании контрола (свойство FormHelp). Но не понял как передать этой форме, значение выбранное в первом лукапе? |
|
19.08.2009, 17:02 | #2 |
Участник
|
Смотрите среди похожих тем: Как сделать хитрый лукап
__________________
// no comments |
|
19.08.2009, 17:24 | #3 |
Участник
|
Это я видел. У меня контрол создаётся динамически..
Вопрос, как передать лукап форме, значение выбранное в первом лукапе? |
|
19.08.2009, 17:57 | #4 |
Участник
|
Вам необходимо будет перекрыть события для runtime-элементов управления в диалоге. Вот в этом посте Studio Erudit подробно объяснено, как это сделать. Немного муторно, но работает. Главное - разрешить перегрузку методов с помощью функции controlMethodOverload
__________________
Денис Балуев. |
|
|
За это сообщение автора поблагодарили: Denicce (1), zemius (1). |
19.08.2009, 20:07 | #5 |
Гость
|
я бы форму нарисовал, быстрее и надежнее будет работать
в Tuorial_runBaseForm есть пример |
|
20.08.2009, 14:51 | #6 |
Участник
|
По поводу событий понятно.. сенкс, было познавательно.. Если никто ничего не подскажет другого буду пробовать так.
Форму рисовать незя.. так это часть системы завязанной на RunBase |
|
20.08.2009, 15:14 | #7 |
Участник
|
Цитата:
Сообщение от zemius
Строится динамический диалог, на базе RunBase.
На форме есть 2 лукапа. Задача наложить фильтр, на лукап 2, в зависимости от значений в лукап 1. Из того что удалось найти на форуме понял что нужно, переопределить запускаемую форму, используемого EDT, при создании контрола (свойство FormHelp). Но не понял как передать этой форме, значение выбранное в первом лукапе? Т.е. в событии Form.Init() той формы, что указана в свойстве EDT.FormHelp пишется нечто вроде X++: public void init() { MyClass myClass; TypeParam paramValue; ; if (element.args() && element.args().caller()) { myClass = element.args().caller(); paramValue = myClass.getParamValue(); } super(); } Это, разумеется, общая схема. Тут неплохо бы добавить проверку на имя класса. |
|
20.08.2009, 16:31 | #8 |
Участник
|
А еще лучше проверку на наличие метода в классе:
X++: if (new SysDictClass(classIdGet(myClass)).hasObjectMethod('getParamValue')) { ... }
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
20.08.2009, 21:24 | #9 |
Участник
|
Посмотрите, к примеру, как это сделано на лукап формах складских аналитик - там получается значение ItemId из вызывающей формы.
|
|
21.08.2009, 12:28 | #10 |
Участник
|
в системе есть примеры классов-наследников RunBase, которые вместо диалога используют формы для ввода параметров. Там уж никаких ограничений диалоговых окон нет.
Например (в DAX 4) \Classes\CustVendAutoSettlement_Cust_RU. Расчеты с клиентами / Пер опер / Сопоставление / Периодическое сопоставление. |
|