23.07.2002, 11:31 | #1 |
Moderator
|
Args
Помогите разобраться с Args
Открываю форму следующим образом: new MenuFunction(menuItemDisplayStr("frm"), MenuItemType :: Display).run(args); В Args хочу передавать несколько параметров. Как это сделать ? Метод param передает всего один параметр, причем это строка. Есть, конечно, возможность передать объект, полями которого и будут мои переменные. Но для этого в АОТ надо создать свой объект, что не есть хорошо. Что делают в таких случаях ? |
|
23.07.2002, 12:38 | #2 |
Участник
|
Берешь, AOT.
Делаешь поиск строки "new MenuFunction(menuItemDisplayStr" получешь результат. Например, Form AddressCheck PHP код:
Перед Run установи параметры. |
|
23.07.2002, 12:42 | #3 |
Moderator
|
Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con():
PHP код:
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: bagyr (1), alex55 (1). |
23.07.2002, 13:06 | #4 |
Moderator
|
Цитата:
Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con():
|
|
23.07.2002, 13:18 | #5 |
Участник
|
Dron AKA andy, классный прием.
Спасибо. |
|
23.07.2002, 13:41 | #6 |
Moderator
|
Цитата:
Например, Form AddressCheck
void clicked() { Args parameters = new Args(); MenuFunction addressFormatMenu; ; addressFormatMenu = new MenuFunction(menuItemDisplayStr(AddressFormat),MenuItemType:<img src="http://www.axforum.info/forums/images/smilies/biggrin.gif" border="0" alt="">isplay); parameters.caller(this); addressFormatMenu.run(parameters); Обрати внимание, что parameters, это объект. parameters это объект класса Args. Согласен. Цитата:
Перед Run установи параметры.
Если у меня есть класс (например А) и я в нем говорю args.caller(this), то тем самым я передаю в вызываемый класс/форму (назовем его Б) ссылку на него. Имея эту ссылко я могу много чего сделать, в том числе вызывать методы этого класса А и посредством этих методов обращаться к переменным класс А. Но у меня есть форма (А) с клавишей. При нажатии на клавишу, я конечно могу сказать args.caller(this). Более того в вызываемом классе/форме (Б) я получу ссылку на эту кнопку. Но на фига мне ссылка на кнопку.... Казалось бы, в этом случае разумно передавать не ссылку на кнопку, а ссылку на форму - args.caller(element). Тогда в форме Б я пытаюсь делать так: public void init() { Args args; Б б; ; super(); args = element.args(); б = args.caller(); б.Имя метода формы Б } Но Аксапта ругается, говорит, что Б это не класс. Ясно дело, что это форма. Или это я чего-то не понял ? |
|
23.07.2002, 14:31 | #7 |
Участник
|
Не могу сейчас проверить, но мне кажется что дело в приведении типов
public void init() { Args args; FormRun f; Б б; ; super(); args = element.args(); f = args.caller(); б = f; б.Имя метода формы Б } Опять же поищи в AOT'е как уже сделано. |
|
23.07.2002, 14:45 | #8 |
Moderator
|
Цитата:
Не могу сейчас проверить, но мне кажется что дело в приведении типов
PHP код:
PHP код:
|
|
23.07.2002, 14:47 | #9 |
Moderator
|
Цитата:
... FormRun f; Б б; ; ... б.Имя метода формы Б PHP код:
__________________
Андрей. |
|
23.07.2002, 14:49 | #10 |
Участник
|
Dron AKA andy, точно? Разве так можно?
|
|
23.07.2002, 14:59 | #11 |
Moderator
|
Однозначно !
По перекрестным ссылкам на Object можно найти кучу примеров. Например, в методе \Data Dictionary\Tables\LedgerTable\Methods\lookupAccountNumByType
__________________
Андрей. |
|
23.07.2002, 15:04 | #12 |
Moderator
|
Цитата:
Если нужно вызвать какой-либо метод из формы, то переменную "б" следует объявить как Object
Большое спасибо. |
|
18.03.2004, 10:16 | #13 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
Если параметры - простые типы данных (int, string и т.д.), можно их упаковывать в строку с разделителями и передавать чераз args.parm(). При упаковке могут пригодиться методы con2str() и str2con(): PHP код:
Я пишу: PHP код:
|
|
18.03.2004, 10:40 | #14 |
Участник
|
Цитата:
Изначально опубликовано ArturK
А как извлекать все переданные параметры? Я пишу: PHP код:
|
|
11.09.2006, 10:45 | #15 |
Участник
|
А у меня все получается нормально с передачей, но после приема в сонтейнер из аргса, он говорит, что там данные типа int, а мне нужно чтобы они остались string (дело в том что это у меня номерная серия, а при инт'е он отбрасывает лишние нули)?
|
|
11.09.2006, 10:59 | #16 |
Участник
|
А покажите, как именно вы передаете параметры - и как принимаете
|
|
11.09.2006, 11:14 | #17 |
Сенбернар
|
2 DMA : Злостный офф, но в Вашей подписи 2 ошибки. Исправьте хотя бы одну, не вводите людей в заблуждение
__________________
Best Regards, Roman |
|
11.09.2006, 11:50 | #18 |
Участник
|
передаю так:
cont=[code1,code2]; ///code1, code строковые переменные args().param(con2str(Cont)); .......................... В классе обращаюсь cont=args.parm(str2con); И здесь при просмотре типов данных в дебагере он показывает тип интежер и вместо значения 000000002 он показывает 2. А при обращении к строке с кодом 2 он выдаст ошибку, что такой строки нет |
|
11.09.2006, 11:55 | #19 |
Участник
|
небольшая поправка, когда в классе обращаюсь не
cont=args.parm(str2con); а cont=str2con(args.parm()); |
|
11.09.2006, 11:59 | #20 |
Участник
|
Используйте вместо str2con метод того же класса Global - str2con_RU()
Вот тестовый job: Код: static void Job5(Args _args) { container cont; str strCont; str code1, code2; ; code1 = "00000001"; code2 = "00000002"; cont = [code1, code2]; info(con2str(cont)); strCont = con2str(cont); cont = str2con_RU(strCont); info(conPeek(cont, 1)); } |
|