Здравствуйте. Есть страничка, где название полей подтягивается из property. Отображается в таком виде:
При обновлении странички надписи становятся на свои места, но все поля съезжают.
Можно ли как то это поправить?
Добрый день.
Не могли бы Вы приложить демо проект, в котором воспроизводится данная проблема? Сейчас не возможно определить в чем причина проблемы.
Глеб
Пожалуйста, подготовьте простой демо проект, который можно запустить не устанавливая доп. ПО на компьютер, т.е. проект должен подключаться к публичным CUBA репозиториям и использовать HSQLDB, а не Oracle.
Сделал демо проект, там названия полей берутся из caption. В моем проекте название полей берется из property, если точнее то из динамических атрибутов, но проблема все равно остается, название полей съезжает. Прикладываю демо:
cubaproject.zip (356.8 КБ)
Основная проблема, почему неправильно распределяется место под заголовки это комбинирование авто размеров с относительными, т.е. не все фактически размеры известны на момент выделения места под заголовки при первом рендере страницы. К сожалению, это особенности работы Ваадина. Если произвести анализ компоновки экрана:
то будет выявлено несколько проблем:
Смещение полей после рефреша страницы, не является багом. Когда для компонента form
задано captionPosition="TOP"
, то form не выделяет отдельной строки под заголовки (как происходит с выделенной колонкой при captionPosition="LEFT"
). Каждый заголовок является частью филда, т.е. влияет на его высоту внутри строки и увеличивает высоту строки, т.к. она имеет авто высоту, т.е. высоту по контенту внутри нее. А так как выравнивание компонентов по умолчанию происходит по левому верхнему краю, то получается такой эффект:
Для такой сложной разметки экрана, я бы посоветовал воспользоваться компонентом GridLayout. В таком случае, вы сможете использовать компоненты Lable для отображения заголовков и выделить для них отдельную строку, что обеспечит больше контроля над выравниванием.
В качестве альтернативы, можно сократить длину заголовков, а для полного описания использовать description
или contextHelp
.