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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2003, 16:13   #1  
klinch is offline
klinch
Участник
 
5 / 10 (1) +
Регистрация: 02.06.2003
? Управление FormControl' ом.
Всем привет!

Подскажете как можно установить фокус ввода на определенном FormControl.

FormControl.SetFocus не дает желаемого результата, а хотелось бы чтоб
курсор замигал в нужном мне котроле.
Старый 15.11.2003, 16:36   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Во первых, постарайтесь не вмешиваться в morphX настолько глубоко.
Представьте, что ваше поле будет выключено функциональными или конфигурационными ключами. Куда Аксапта усатновит фокус?

Во-вторых, если все же хотите вмешиваться, посмотрите как это делается в форме SalesTable при переключении режима Расширено/Упрощено.

Посмотрите также на проекты, стратегические планы, CRM... с их кнопочками иерархия.

Но лучше этого не делать. Именно подобные формы безумно бесит пользователей своми фокусами. Извините за калабмур.

Лучше установите нормальный порядок полей. Поиграйтесь свойством skip Enter и т.п.
Старый 15.11.2003, 16:42   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Да, еще одно соображение.

В 3.0 пользователь может менять порядок полей, переносить на другие закладки, добавлять новые поля из таблиц... либо вы все это ему должны запретить, либо не управлять вручную фокусом.
Старый 16.11.2003, 11:45   #4  
klinch is offline
klinch
Участник
 
5 / 10 (1) +
Регистрация: 02.06.2003
Дело в том, что мне необходимо создавать новую запись, в таблице, с которой связан заранее не известный FormControl.
Я пытался это сделать следующим образом:

FormRun fr = args.caller();
FormDataSource = fr.dataSource;
FormControl = fr.design.controlName("MyControl"); //Имя контрола передано в функцию

FormControl.SetFocus();
FormDataSource.Create(true);
FormDataSource.InitValue();

------------

А в SalesTable установить фокус на другие контролы мне удалось
путем простого SetFocus;
-------------


На самом деле, меня интересует проблема создания новой строки.
Я пытаюсь имитировать действия пользователя:
1) пользователь счелкает на контрол
2) нажимает комбинацию клавиш "Ctrl - N"
Старый 16.11.2003, 15:50   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано klinch
...необходимо создавать новую запись, в таблице, с которой связан заранее не известный FormControl.

Обычно, когда звучит техзадание, сформулированное подобным образом...
программист просто не знает чего он хочет.

Тогда я обычно говорю, что я туп. Объясните, пожалуйста, человекческим языком чего вы хотите.

Для чего нужно формулировать на "человеческом" языке? Для того, чтобы понять чего от вас хотят пользователи и что вы им сдавать будете.

Представьте, что вы задачу решите. Представьте, что вам нужно показать/сдать пользователю/заказчику сделанную вами работу. Вы вот так вот и будете описывать вашу работу?
Старый 16.11.2003, 16:13   #6  
klinch is offline
klinch
Участник
 
5 / 10 (1) +
Регистрация: 02.06.2003
Меня удивляет ваш страх перед обстрактными пользователями.

Спешу вас заверить, что ни одного юзера, после написания программы, не пострадает.

Единственный человек, который будет ей пользоваться это я сам.


А проблема не так уж смешна, каковой вы ее пытаетесь представить.

Если мне необходимо закачать данные в некоторые таблицы, то
делать это нужно только через контролы на форме, связанные с этой таблицей.
Делать нужно так для того, что бы отработали все механизмы обработки данных!!!!

При прямой записи в таблицы получится всякая херня!!!
(не отработают номерные серии и т.д.)

Дак вот.
Остается следующий выход - имитировать работу пользователя с формой.
---------------------------------------------------------------------

За последние 3 часа я нашел, что :
1) метод setFocus() дает именно, то что я хотел. (Ну вот так уж)
2) для того, что бы создать новую строку (после того как нужный контрол получил фокус) необходимо выполнить FormRun.ObjetcSet().Create(true)
Старый 16.11.2003, 16:21   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10

Это не страх. Это понимание, что только для них все и делается.

Насчет проблемы. Ничего смешного не вижу. Я проблему не понимаю.
Т.е. техническию задачу - вижу. А зачем это нужно - не понимаю.

Теперь вроде понятнее - импорт.
Попробуйте посмотреть
http://axapta.mazzy.ru/hints/easyimport/

Если вы делаете разовый импорт, то результат получите быстрее, нежели разбираться.
Старый 16.11.2003, 16:23   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано klinch
Если мне необходимо закачать данные в некоторые таблицы ...

При прямой записи в таблицы получится всякая херня!!!
Кстати, а какие данные импортируете?
Может смогу подсказать?
Старый 17.11.2003, 11:10   #9  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
имитировать работу пользователя
Цитата:
Изначально опубликовано klinch
Дак вот.
Остается следующий выход - имитировать работу пользователя с формой.
---------------------------------------------------------------------

За последние 3 часа я нашел, что :
1) метод setFocus() дает именно, то что я хотел. (Ну вот так уж)
2) для того, что бы создать новую строку (после того как нужный контрол получил фокус) необходимо выполнить FormRun.ObjetcSet().Create(true)
Можно попробовать через метод task класса formRun. Например:
PHP код:
fr.task(260); // имитируем Ctrl-N
custTable.Name "Клиент "+custTable.AccountNum;
custTable.CustGroup "1";
custTable.Currency "РУБ";
progress.stepIt();
... 
Старый 17.11.2003, 11:31   #10  
klinch is offline
klinch
Участник
 
5 / 10 (1) +
Регистрация: 02.06.2003
Слушайте, а можно поподробней про FormRun.Task()?

Заранее благодарен.
Старый 17.11.2003, 11:42   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Честно говоря, сам с ним не работал, а того, кто работал сейчас спросить не могу.
Помню, что наткнулся он на него, кажется, путем отладки, поставаив в нужном месте точку останова и выполняя те или иные действия вручную. Помню, что Task(272) вроде дожен соответствовать сохранению измененных данных, но он как-то странно глючил
В документации, как водится, ничего обнаружить не удалось
Сейчас попробую полазить - самому интересно стало...

Вот, покопался, обнаружил, что можно, например, у формы перехватить метод Task, чтобы посмотреть обрабатываемые идентификаторы.
Попробуй, может пригодится:
public int task(int _taskId)
{
int ret;

ret = super(_taskId);

print "ID=",_taskId," ret=",ret;
return ret;
}
Старый 17.11.2003, 12:19   #12  
klinch is offline
klinch
Участник
 
5 / 10 (1) +
Регистрация: 02.06.2003
Цитата:
Изначально опубликовано Ruff
Попробуй, может пригодится: ....
[/B]

Пригодится и еще как!!!
Огромное спасибо.

Работая над управлением формой из вне, наткнулся на следующий глюк:
1)передаю formRun одной формы в процедуру другой формы
2)пытаюсь управлять DataSource первой формы....
3)ловлю глюки, т.к. методы не отрабатывают обычным для них образом.

Вот и приходится залазить в все глубже и глубже.

P.S. Подаем.. Что, уже дно? Нет, еще копаем!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обсуждение: управление ассортиментом Zabr DAX: Администрирование 0 22.02.2007 13:36
«Управление персоналом» Axapta 3.0? Yegor DAX: Функционал 2 21.07.2004 12:32
Модуль “Управление персоналом” ? Таня DAX: Функционал 4 15.07.2004 16:18
Группы маршрутизации и управление заданиями PSA DAX: Функционал 4 09.06.2004 16:38
Управление платежами xconsul DAX: Функционал 0 05.11.2003 12:28

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

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

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