|
11.01.2007, 12:44 | #1 |
Участник
|
Как программно передвинуть контрол?
Здравствуйте.
Меняю стандартную форму DocuView, нужно в init программно изменить нижнюю часть формы, а именно добавить туда Tab с несколькими закладками. Это я делаю без проблем. Но нужно на одну из этих вкладок перенести контрол HtmlView - не подскажите как это сделать? |
|
11.01.2007, 13:46 | #2 |
Участник
|
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 |
Участник
|
Там на форме DocuView уже есть контрол HTMLView. Я хочу именно передвинуть его т.к. на нем определены методы и он в том месте где он находиться в стандарте мне не нужен.
А этот код: Цитата:
html = tabPage.addControl(FormControlType::ActiveX, "HTMLView");
|
|
11.01.2007, 14:08 | #4 |
Участник
|
Можно.
Но для этого вам нужно отключить авторазмещение элементов на форме. Что сразу же выключит функциональность, связанную morphX (роли, безопасность, лицензии, доработки). Если вы так сделаете, вас буду проклинать все последующие программисты, которые будут работать с вашей формой. Как отключить авторазмещение см. форму tutorial_Form_freeform Про безопасность см. http://axapta.mazzy.ru/screenshots/common/example.html |
|
11.01.2007, 14:13 | #5 |
Участник
|
Т.е. то что так просто делается drag&drop'ом при создании формы так трудно реализовать программно?
Цитата:
Но для этого вам нужно отключить авторазмещение элементов на форме.
|
|
11.01.2007, 14:14 | #6 |
Участник
|
А moveControl что делает? Название уж больно подходящее но не перемещает...
Может еще можно как-то изменить containerId? |
|
17.01.2007, 13:10 | #7 |
Developer
|
Цитата:
Код: 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 <-- } P.S. Делал подобное и после Run(). Кроме изменения размеров и перерисовки формы ничего побочного не выскакивало (тут уж от специфичности кода в ините и ран формы все зависит) |
|
|
За это сообщение автора поблагодарили: mazzy (5), DTD (1), madm (1), SergeyAY (0). |
18.01.2007, 19:32 | #8 |
Участник
|
Да Валентин именно это я и хотел получить. Странно но я писал подобный код и у меня он не работал... Попробую Ваш как-нибудь. Спасибо!
|
|