Показать сообщение отдельно
Старый 20.06.2011, 17:36   #37  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Ну, если решение через Construct - не нравится, то можно пойти "другим путем"

Если сделать допущение, что имя параметра вовсе не обязано совпадать с именем сохраняемой в pack/unpack переменной, то все решается значительно проще.

Через parmXXX() записываем переменную parmXXX, а в методе RunBase.dialog() при создании объектов формы диалога пишем примерно следующее

X++:
dialogField = dialog.addFieldValue(typeid(MyType), parmXXX ? parmXXX : unpackYYY);
Собственно, на этом и все модификации заканчиваются.

Если передан параметр (parmXXX), то он инициализирует значение объекта на форме диалога и он же будет сохранен, если пользователь его не изменит. Если же параметр не передан, то инициализировать значение объекта на форме диалога будет распакованное значение переменной.

С Query - чуть сложнее, но тоже не особо. Ведь в любом случае должен быть метод по его созданию. Вот в этом методе и анализировать значение параметра.

В любом случае "разведение" переданных и сохраненных значений по разным переменным значительно упростит как анализ, так и кодирование.
За это сообщение автора поблагодарили: S.Kuskov (2).