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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2007, 12:44   #1  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Как программно передвинуть контрол?
Здравствуйте.
Меняю стандартную форму DocuView, нужно в init программно изменить нижнюю часть формы, а именно добавить туда Tab с несколькими закладками. Это я делаю без проблем.
Но нужно на одну из этих вкладок перенести контрол HtmlView - не подскажите как это сделать?
Старый 11.01.2007, 13:46   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
X++:
public void init()
{
    FormTabControl tab;
    FormTabPageControl tabPage;
    FormActiveXControl html;
    ;
    super();
    tab = this.design().addControl(FormControlType::Tab, "Tab");
    tab.widthMode(1);
    tab.heightMode(1);
    tabPage = tab.addControl(FormControlType::TabPage, "Page1");
    tabPage.widthMode(1);
    tabPage.heightMode(1);
    tabPage.caption("HTML View");
    html = tabPage.addControl(FormControlType::ActiveX, "HTMLView");
    html.widthMode(1);
    html.heightMode(1);
    html.className("Shell.Explorer");
    html.Navigate("c:\\Temp\\Книга1.htm");

    tabPage = tab.addControl(FormControlType::TabPage, "Page1");
    tabPage.widthMode(1);
    tabPage.heightMode(1);
    tabPage.caption("Просто Tab Page");
}
__________________
Axapta v.3.0 sp5 kr2
Старый 11.01.2007, 13:55   #3  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Там на форме DocuView уже есть контрол HTMLView. Я хочу именно передвинуть его т.к. на нем определены методы и он в том месте где он находиться в стандарте мне не нужен.
А этот код:
Цитата:
html = tabPage.addControl(FormControlType::ActiveX, "HTMLView");
создает новый а не переносит. Нельзя ли как-то перенести существующий?
Старый 11.01.2007, 14:08   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
Нельзя ли как-то перенести существующий?
Можно.

Но для этого вам нужно отключить авторазмещение элементов на форме.
Что сразу же выключит функциональность, связанную morphX (роли, безопасность, лицензии, доработки).
Если вы так сделаете, вас буду проклинать все последующие программисты, которые будут работать с вашей формой.

Как отключить авторазмещение см. форму tutorial_Form_freeform

Про безопасность см. http://axapta.mazzy.ru/screenshots/common/example.html
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2007, 14:13   #5  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Т.е. то что так просто делается drag&drop'ом при создании формы так трудно реализовать программно?

Цитата:
Но для этого вам нужно отключить авторазмещение элементов на форме.
О нет. Этого я делать точно не могу.
Старый 11.01.2007, 14:14   #6  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
А moveControl что делает? Название уж больно подходящее но не перемещает...
Может еще можно как-то изменить containerId?
Старый 11.01.2007, 14:26   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
Т.е. то что так просто делается drag&drop'ом при создании формы так трудно реализовать программно?
Конечно же нет, drag&drop возможен только при отключенном авторазмещении.

Цитата:
Сообщение от madm Посмотреть сообщение
А moveControl что делает? Название уж больно подходящее но не перемещает...
Потому что срабатывает авторазмещение и возвращает контрол на свое место.

Вы либо выключите авторазмещение и получите возможность управления положением (но вам нужно будет управлять положением всегда).
Либо включите авторазмещение, но тогда теряете возможность управления положением.
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2007, 14:33   #8  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
mazzy помоему Вы не совсем поняли мою задачу

Вот когда аторазмещение включено я же все равно могу в среде разработки взять и передвинуть контролы(в дереве design формы) - поменять их порядок или перетащить stringedit из одной группы в другую например... Т.е. мне не нужно задавать произвольное положение по координатам (как в Делфи например) мне фактически нужно сменить порядок в дереве.

З.Ы. Мою задачу я уже решил иначе, без перемещений. Но вопрос открыт - для развития
Старый 11.01.2007, 14:44   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
Вот когда аторазмещение включено я же все равно могу в среде разработки взять и передвинуть контролы
Не можете.
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2007, 14:52   #10  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Мы наверное все же о разных вещах говорим

Я только что передвинул и все работает.
Старый 11.01.2007, 15:01   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от madm Посмотреть сообщение
Мы наверное все же о разных вещах говорим

Я только что передвинул и все работает.
Что ж, скройте другие контролы.
Посмотрите работает ли авторазмещения для вашего передвинутого

Для того, чтобы передвинуть контрол, у свойства Top и Left надо выключить Auto и поставить любое число. Выключение auto эквивалентно отключению авторазмещенния.

Для того, чтобы вручную изменять размер, у свойства Width и Heght надо выключить Auto и поставить любое число. Выключение auto в этих свойствах эквиваленто отключению функции автоматического подбора размера контрола.

Еще раз: drag&drop выключает авторазмещение.
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2007, 15:24   #12  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Цитата:
Что ж, скройте другие контролы.
Посмотрите работает ли авторазмещения для вашего передвинутого
Все работает.

Последний раз редактировалось madm; 11.01.2007 в 15:35.
Старый 11.01.2007, 15:27   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от madm Посмотреть сообщение
Вот когда аторазмещение включено я же все равно могу в среде разработки взять и передвинуть контролы(в дереве design формы) -
2 mazzy: madm, к сожалению, прав, по-своему - он говорит о совсем другом перемещенни - читать выделенное красным. Так всегда можно переместить, и авторазмещение не причем.

2 madm: Нет, после открытия формы вы не можете менять что-либо в дизайне этой формы. Дальше см. ответ mazzy
Старый 11.01.2007, 15:36   #14  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Нет, после открытия формы вы не можете менять что-либо в дизайне этой формы.
Понятно... Жаль
Старый 11.01.2007, 15:40   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
читать выделенное красным.
Посыпаю голову пеплом!!!
Спасибо, я действительно не правильно понял... Переместить в дереве... Ужас какой-то...


Перемещать программно в открытых формах можно не в дереве AOT, а в пользовательских настройках.
См. Правую кнопку мыши, Настройка.
Но опять же для некоторых контролов и такое перемещение может быть запрещено в свойствах контрола.
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 13:10   #16  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от madm Посмотреть сообщение
... нужно на одну из этих вкладок перенести контрол HtmlView - не подскажите как это сделать?
Думаю, что movecontrol() сделает то что Вам нужно...
Код:
void init()
{
    ...
    // test -->
    FormTabControl                      newFormTabControl;
    FormTabPageControl                  newFormTabPageControl;
    // test <--
    ...
    super();
    ...
    // test -->
    // Overview и HtmlView - контролы формы с AutoDeclaration = Yes, т.е. можно ссылатся на них в коде. Иначе использовать element.design().controlName(ControlName) или element.design().control(control::ControlName)
    newFormTabControl = Overview.addControl(FormControlType::Tab, "NewTab");
    newFormTabControl.heightMode(FormHeight::ColumnHeight);
    newFormTabControl.widthMode(FormWidth::ColumnWidth);
    newFormTabPageControl = newFormTabControl.addControl(FormControlType::TabPage, "NewTabPage");
    newFormTabPageControl.caption("NewTabPage");
    newFormTabPageControl.moveControl(HtmlView.id());
    // test <--
}
madm, это то, о чем Вы спрашивали (см. рисунок)?

P.S.
Цитата:
Сообщение от kashperuk Посмотреть сообщение
... после открытия формы вы не можете менять что-либо в дизайне этой формы...
Делал подобное и после Run(). Кроме изменения размеров и перерисовки формы ничего побочного не выскакивало (тут уж от специфичности кода в ините и ран формы все зависит)
Миниатюры
Нажмите на изображение для увеличения
Название: DocuTest.JPG
Просмотров: 348
Размер:	62.8 Кб
ID:	2355  
За это сообщение автора поблагодарили: mazzy (5), DTD (1), madm (1), SergeyAY (0).
Старый 18.01.2007, 19:32   #17  
madm is offline
madm
Участник
 
43 / 12 (1) ++
Регистрация: 21.11.2006
Да Валентин именно это я и хотел получить. Странно но я писал подобный код и у меня он не работал... Попробую Ваш как-нибудь. Спасибо!
Теги
movecontrol, передвинуть

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Контрол типа DateEdit в диалоге breakpoint DAX: Программирование 15 02.07.2008 11:18
Рассылка сообщений программно NNB DAX: Программирование 3 28.09.2006 15:39
Как программно создать платежное поручение? AK9 DAX: Программирование 3 13.09.2006 09:37
Как программно выделить все строки Lucky13 DAX: Программирование 5 30.06.2006 10:36
Как программно изменить к-во в строке заказа в форме SalesTable BorDark DAX: Программирование 2 13.01.2005 17:02

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

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

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