|
![]() |
#1 |
Участник
|
Скорее всего имелся в виду самый обычный lookup c гридом из нескольких полей. Если так то ответ нет, стандартно такое сделать не получиться. Стандартный механизм работы c lookup окнами не предаставляет доступ программисту к процессу получения значения из lookup формы. Можно запрограммировать передачу значения, но вот запрограммировать получение этого значения на основной форме не выйдет.
К том уже, если я правильно вас понял, при таком подходе вы принуждаете пользователя пользоваться lookup'ом, и лишаете ручного ввода. Не создавайте себе лишних проблем. Инициализируйте второе поле в методе modifiedField первого. |
|
![]() |
#2 |
Участник
|
![]() Цитата:
Сообщение от S.Kuskov
![]() Скорее всего имелся в виду самый обычный lookup c гридом из нескольких полей. Если так то ответ нет, стандартно такое сделать не получиться. Стандартный механизм работы c lookup окнами не предаставляет доступ программисту к процессу получения значения из lookup формы. Можно запрограммировать передачу значения, но вот запрограммировать получение этого значения на основной форме не выйдет.
Если речь идет об обычном lookup - то получить значения курсора выбранной в lookup позиции в вызывающей форме в большинстве случаев все-же возможно, для этого нужно лишь получить экземпляр FormRun этой lookup формы, а дальше извлечь из него текущий курсор необходимого источника данных. Попробую схематично набросать то что имелось в виду: 1. В classDeclaration определяется переменная для сохранения дескриптора lookup формы: X++: public class FormRun extends ObjectRun { FormRun lookupFormRun ; } X++: public void performFormLookup(FormRun _form, FormControl _formControl) { super(_form, _formControl); lookupFormRun = _form ; } X++: Common lookupCursor ; ; ... super() ; if( lookupFormRun && lookupFormRun.closedOk() ) { // выбор из lookup формы lookupCursor = lookupFormRun .dataSource().cursor() ; ... // обработка данных извлеченного курсора ... } else { // 'ручной' ввод ... } ... lookupFormRun = null ;
__________________
Dynamics AX 4.0 SP2 |
|
|
За это сообщение автора поблагодарили: kitty (1), S.Kuskov (1), Player1 (2), Cardagant (1), SuperStar88 (1). |
![]() |
#3 |
Участник
|
Спасибо за предложенное работающее решение.
Возник такой вопрос: Метод performFormLookup() вызывается только если лукап перекрыт, тк это метод класса SysTableLookup. Если же лукап стандартный(автоматически созданный аксаптой по relation на таблице), можно ли как-то добраться до выбранной в нем записи? |
|