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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.09.2010, 09:49   #1  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Размеры элементов дизайна формы
Доброго времени суток!
Буду рад получить помощь в ответе на вопрос:

Имеется форма с дизайном, состоящим из двух групп, разделенных горизонтальным сплиттером (по оси X), т.е. дизайн имеет 3 колонки (TableGroup, CtrlSplitHor, RightGroup).

В левой группе дизайна располагается Tab и, соответственно, TabPage, в котором располпгается Grid с большим количеством полей. В правой группе находится ActiveX-контрол HTMLView (также расположенный на TabPage), в который загружаются изображения. Скриншот дизайна в AOT прилагается к данному сообщению.

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

В случае, если поменять местами группы в дизайне (TableGroup и RightGroup), то размеры элементов дизайна подстраиваются под размеры всего дизайна формы, то есть на Gride появляется горизонтальный скролл, и элементы обеих групп отображаются нормально. Все контролы, включая группы, табы, грид имеют значение свойства width "COLUMN WIDTH".

Почему от очередности положения контролов меняется их отображение на форме, а именно размер?
Изображения
 

Последний раз редактировалось samolalex; 07.09.2010 в 09:57.
Старый 07.09.2010, 10:38   #2  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Добрый день!
Потому что при init() формы вы вызываете метод:

X++:
public void init()
{
    ;
    super();
    
    formSplitterVertical   = new SysFormSplitter_X(ctrlSplitVertical,Tree, this);

}
Первый аргумент - это контрол-сплиттер (FormGroupControl), второй (FormControl) - это тот контрол, который будет слева с изменяемым размером.
__________________
AXIOMA
За это сообщение автора поблагодарили: GBH (1).
Старый 07.09.2010, 10:41   #3  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от samolalex Посмотреть сообщение
Почему от очередности положения контролов меняется их отображение на форме, а именно размер?
Т.е. если вы меняете в дизайне порядок групп RightGroup и TableGroup, нужно менять имя параметра _FormSizeControl при инициализации сплиттера
__________________
AXIOMA
Старый 07.09.2010, 10:55   #4  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
kornix, суть заключалась немного в другом, но вы меня подтолкнули на правильные мысли относительно параметров сплиттера, за что вам спасибо:
инициализировать его (сплиттер) необходимо в методе run в данном случае, плюс к этому указывается необязательный параметр - ширина контрола, расположенного слева от сплиттера (int _startUpWidth - это ширина контрола, расположенного слева от сплиттера, при первом запуске формы).

X++:
public void run()
{
    super();
    _formSplitterHorisontal = new SysFormSplitter_X(ctrlSplitHor, TableGroup, element, 900);
}
И размер остальных контролов остается в "норме"

Последний раз редактировалось samolalex; 07.09.2010 в 10:58.
Старый 07.09.2010, 11:10   #5  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Да, действительно ответил не совсем на ваш вопрос Ну, главное что вам все удалось
Вообще, в tutorial формах, в примере с сплиттером его инициализация вызывается в методе init, не совсем понимаю разницу, откуда его вызывать. По идее в методе run обычно уже запускаются какие-нибудь алгоритмы, а в методе init разнообразные форматирования, добавления чего-нибудь программно и т.п.
__________________
AXIOMA
За это сообщение автора поблагодарили: samolalex (1).
Старый 07.09.2010, 11:55   #6  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Информацию про инициализацию сплиттера в методе run() взял отсюда:
Глюк с вертикальным сплиттером

Здесь обсуждается проблема немного другого рода, но тем не менее, смежная с поставленной мной.
За это сообщение автора поблагодарили: kornix (1).
Старый 07.09.2010, 12:00   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Обратите внимание, что в упомянутой ветке более правильное решение указано Maxim Gorbunov Глюк с вертикальным сплиттером
__________________
Ivanhoe as is..
Старый 07.09.2010, 12:04   #8  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Согласен, что ответ Максима является более правильным, но в контексте моей задачи решение с инициализацией в методе run() также является вполне приемлемым.
Старый 07.09.2010, 12:06   #9  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
По теме: какая ширина стоит у вашей левой / правой группы? В свойствах Design указано, что колонок 3?
__________________
Ivanhoe as is..
Старый 07.09.2010, 12:13   #10  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Ширина обеих групп = "columnWidth", в свойствах дизайна указано 3 колонки.
Старый 13.12.2010, 16:50   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Заметил на днях, что система некоректно определяет размеры клиентской области окна в случае если на нём находится StringEdit, у которого свойство LabelPosition выставлено в значение "Above" (и свойство Label не пусто), а свойство Height равно "Auto" либо константе. В результате вместо увеличения размеров по вертикали появляется полоса прокрутки. Ситуацию исправляет изменение свойства Height на "Column height", но эта замена не всегда равносильна, например если в качестве расширенного типа используется Memo.

P.S.: AX2009

Последний раз редактировалось S.Kuskov; 13.12.2010 в 18:42.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
В каких классах генерируется html содержание элементов веб-формы?. Chezer DAX: Программирование 2 26.12.2006 16:32
Динамическое создание элементов дизайна на Web-формах AvrDen DAX: Программирование 0 04.08.2005 12:58
Настройка доступа к элементам дизайна формы Petroff DAX: Администрирование 3 01.12.2004 15:22
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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