AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2005, 07:22   #1  
AK9 is offline
AK9
Участник
 
38 / 10 (1) +
Регистрация: 02.06.2005
Адрес: Томск
? Как лучше передать переменную из одного метода в другой при условии, что...
Как лучше передать переменную из одного метода в другой при условии, что второй метод выглядит как main(Args args), то есть просто дописать main(Args args, boolean ex) как я понимаю не выйдет. Единственным ли и лучшим способом является использование глобальной переменной или есть другие споспобы. Я совсем новичок, поэтому застрял на такой, как вам наверное покажется, ерунде.
Старый 16.08.2005, 08:21   #2  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Все что нужно можно передать с помощью args
1) args.caller - здесь можно передавать вызываеющий объект, а потом уже получить от него все, что нужно.
2) args.parameters
Старый 16.08.2005, 08:31   #3  
AK9 is offline
AK9
Участник
 
38 / 10 (1) +
Регистрация: 02.06.2005
Адрес: Томск
Простите, а можно чуть подробнее? У меня ситуация следующая: при клике кнопки на форме
void clicked()
{
;
ledgerJournalEngine.clearVoucher();

super();...

на супер идет следующий вызов:

public static void main(Args args)
{
VendSumForPaym vendSumForPaym;
;

switch (args.dataset())
{
case TableNum(LedgerJournalTrans) :
vendSumForPaym = CustVendSumForPaym::newLedgerJournalTrans(SysModule::Vend, args.record());
break;...

я должен задать необходимый параметр в форме, каким образом?
Старый 16.08.2005, 09:16   #4  
AK9 is offline
AK9
Участник
 
38 / 10 (1) +
Регистрация: 02.06.2005
Адрес: Томск
Решилось все просто. Смотрю на название кнопки нажатой, если это необходимая кнопка, то флаг делаю true:
public static void main(Args args)
{
VendSumForPaym vendSumForPaym;
boolean ex;
Object callForm = args.caller();
FormFunctionButtonControl ffbc = callForm.selectedControl();
;

if(ffbc.name() == "ИмяКнопки") ex = true; else ex = false;
Старый 16.08.2005, 09:24   #5  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Смотрю на название кнопки нажатой, если это необходимая кнопка, то флаг делаю true:
А зачем это нужно ??
1) Не понял, как это помогло в передаче параметра
2) Сама по себе не очень удачная идея.

Старый 16.08.2005, 09:28   #6  
AK9 is offline
AK9
Участник
 
38 / 10 (1) +
Регистрация: 02.06.2005
Адрес: Томск
Я просто наверное не полностью описал ситуацию изначально. Необходимая переменная и должна нести информацию, одна либо другая кнопка нажата, исходя из этого идет последующая обработка...
Старый 16.08.2005, 09:40   #7  
Rokhay is offline
Rokhay
Участник
 
154 / 15 (1) ++
Регистрация: 02.10.2003
Адрес: Ебург
Цитата:
Изначально опубликовано AK9
Я просто наверное не полностью описал ситуацию изначально. Необходимая переменная и должна нести информацию, одна либо другая кнопка нажата, исходя из этого идет последующая обработка...
ну задайте тогда для кнопок два разных менюайтема с разными параметрами.
лучше использовать enumparametr, если он не занят, конечно.
Старый 16.08.2005, 09:46   #8  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Изначально опубликовано AK9
Необходимая переменная и должна нести информацию, одна либо другая кнопка нажата, исходя из этого идет последующая обработка...
Более корректно для этих целей было бы использовать разные MenuItem на этих кнопках. А в этих MenuItem-ах настроить должным образом свойства EnumTypeParameter и EnumParameter. И затем уже анализировать этот параметр стандартным путем:
PHP код:
...
switch(
args.parmEnum())
{
 case 
MyEnum::First:
 ...
 case 
MyEnum::Second:
 ...

PS: Опередили
Старый 16.08.2005, 10:07   #9  
AK9 is offline
AK9
Участник
 
38 / 10 (1) +
Регистрация: 02.06.2005
Адрес: Томск
Да, действительно, так пожалуй будет более грамотно. Так и сделаю. Спасибо Rokhay
и Ruff!
Старый 16.08.2005, 15:47   #10  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2AK9
я должен задать необходимый параметр в форме, каким образом?

Через метод (функцию) формы или кнопки, как хотите.. только вызывать придется через args.caller().owner().yourMethod() или args.caller().yourMethod() соответственно, что плохо по причине невозможности проверки существования метода yourMethod() на этапе компиляции.

MBS стандартно для таких вещей делает следующее: в дополнение к форме создается класс, который управляет визуализацией контролов формы. Вот на нем и надо было бы делать такой метод. Тогда вызов осуществлялся бы как yourClassVar = args.object(); yourClassVar.yourMethod(). В данном случае Аксапта сможет проверить у класса yourClass наличие метода yourMethod.


Это общий подход.
Теги
args, menuitem, передача параметров

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вызов метода из таблицы в операторе while select V777 DAX: Программирование 7 23.04.2008 09:11
Проблема вызова метода доступа (Enum'ы!) Zoe DAX: Программирование 4 14.04.2008 23:48
Site в складской аналитике. Как лучше перевести? mazzy DAX: Прочие вопросы 73 07.01.2008 12:18
создать и передать временную таблицу kitty DAX: Программирование 11 13.07.2006 14:40
Можно ли передать котрол формы как параметр метода? nicky DAX: Программирование 6 23.05.2005 18:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:48.