11.09.2014, 11:21 | #1 |
Участник
|
Отловить действия
НАРООООООД, хелп
Ситуация такая: Существует класс, который добавляет кнопку на другую форму. По этой кнопке запускается еще одна форма, в которой проставляются галочки и по завершении нажимается кнопка выхода. Вопрос такой, как в классе отловить закрытие второй формы? |
|
11.09.2014, 11:31 | #2 |
Участник
|
На закрытии формы вызвать метод в классе. По другому - никак .
|
|
11.09.2014, 11:52 | #3 |
Участник
|
Может я чего то не догоняю. Пишу поподробнее:
в своем классе запускаю форму через fr = new formRun (Args). До метода fr.Init, цепляю на эту форму кнопку с вызовом другой формы через menuItem. Далее по идее идет fr.run b fr.wait. Вот после этого я могу отловить только закрытие первой формы. Писать методы в другие формы не хотелось бы. Печалька. |
|
11.09.2014, 12:13 | #4 |
Участник
|
А кто мешает пользователю закрыть форму №1 не закрыв форму №2 ?
Как-то все неоч выглядит Последний раз редактировалось skuull; 11.09.2014 в 12:28. |
|
11.09.2014, 12:15 | #5 |
Участник
|
Попробуйте для начала отловить открытие второй формы. А то сейчас получается что она сама открывается и вы про неё ничего не знаете.
|
|
11.09.2014, 12:34 | #6 |
Участник
|
skuull Все в руках юзера.
S.Kuskov По моему, все дело в написании кнопки. Может использовать другой способ открывания формы? Цитата:
fr = new FormRun(args);
btn = fr.form().addControl(FormControlType::MenuFunctionButton,'MyBut'); btn.skip(false); btn.defaultButton(true); btn.text('Копировать в магазины'); btn.menuItemType(MenuItemType:isplay); btn.menuItemName('Form2'); fr.init(); fr.run(); fr.wait(); |
|
11.09.2014, 13:32 | #7 |
Участник
|
Угу. Запуском второй формы придется управлять вручную. Для этого нужно будет перекрывать метод у динамически создаваемой кнопки. Пример есть здесь Создание формы в рантайме: прикрепить кнопку с МЕТОДОМ clicked
P.S.: На всякий случай напишу что такие приемы разработки не является естественными для Аксапты. Обычно кнопки и методы стараются создавать явно, а не в момент выполнения. |
|
12.09.2014, 06:40 | #8 |
Участник
|
Цитата:
P.S.: На всякий случай напишу что такие приемы разработки не является естественными для Аксапты. Обычно кнопки и методы стараются создавать явно, а не в момент выполнения.
|
|
12.09.2014, 08:49 | #9 |
Участник
|
Я тут подумал, если все же соберетесь создавать кнопку динамически, то лучше будет не метод у неё перекрывать, а просто нацелить menuitem кнопки на свой класс обработчик, в котором уже будет находиться код вызова второй формы.
|
|
12.09.2014, 12:13 | #10 |
Участник
|
А примерчик можно? У меня по коду
Цитата:
btn = fr.form().addControl(FormControlType::MenuFunctionButton,'AddBut');
btn.skip(false); btn.defaultButton(true); btn.text('Копировать в магазины'); btn.menuItemType(MenuItemType:isplay); btn.menuItemName('MyMenuItem'); |
|
12.09.2014, 12:45 | #11 |
Участник
|
|
|
12.09.2014, 13:02 | #12 |
Участник
|
Рекомендую воспользоваться этим советом. Процитирую себя.
Цитата:
X++: //btn.menuItemType(MenuItemType:: Display); //btn.menuItemName('Form2'); btn.menuItemType(MenuItemType::Action); btn.menuItemName('myClass2'); |
|
12.09.2014, 14:31 | #13 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Рекомендую воспользоваться этим советом. Процитирую себя.
Для этого не нужно перекрывать методы. нужно просто заменить в вашем примере X++: //btn.menuItemType(MenuItemType:: Display); //btn.menuItemName('Form2'); btn.menuItemType(MenuItemType::Action); btn.menuItemName('myClass2'); X++: btn.menuItemType(MenuItemType::Action);
btn.menuItemName(menuItemActionStr(myClass2)); |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1), yuriy_64 (1). |