Mexanik2012pro Опубликовано 29 ноября, 2015 Поделиться Опубликовано 29 ноября, 2015 (изменено) Добрый день всем! Возникла проблема с компонентом TScrollBox на XE7. На форме лежит компоненты TScrollBox и TButton. И на ScrollBox(e) создаются динамические компоненты TLabel. В начале все создает прекрасно (Картинка 1), но потом, когда TLabel создается за пределами TScrollBox получается трэш (Картинка 2) ... //------------------------------------------------------------------------------------------------------------------------------- static int i = 1; TLabel *label = new TLabel(this); label->Parent = ScrollBox1; label->Text = "Text " + String(i++); label->Margins->Bottom = 5; label->Align = TAlignLayout::MostBottom; //Что бы компонент перенесло в низ label->Align = TAlignLayout::MostTop; //зачем в верх, до последнего компонента //------------------------------------------------------------------------------------------------------------------------------- Извиняюсь, если не корректно написал. Но все же, проверте и дайте ответ в чем же проблема. Если данная тема была, то дайте ссылку на ответ. Данная проблема не только в этом компоненте, но TVertScrollBox & TFramedVertScrollBox. Картинка 1 Картинка 2 Изменено 29 ноября, 2015 пользователем Mexanik2012pro Цитата Ссылка на комментарий
0 Alexander Опубликовано 29 ноября, 2015 Поделиться Опубликовано 29 ноября, 2015 (изменено) Создавал динамически TImage. Проблем не возникало таких, правда позиционировал через position Если попробовать изначально задать большой Position. Y, а затем MostTop? Изменено 29 ноября, 2015 пользователем Alexander Цитата Ссылка на комментарий
0 Mexanik2012pro Опубликовано 29 ноября, 2015 Автор Поделиться Опубликовано 29 ноября, 2015 Создавал динамически TImage. Проблем не возникало таких, правда позиционировал через position Если попробовать изначально задать большой Position. Y, а затем MostTop? Спасибо большое ))) Это извращение какое то ... Создал глобальную переменную int pos, для запоминания позиции последнего TLabel. Вот решение: //------------------------------------------------------------------------------------------------------------------------------- int pos = 0; //наша позиция последнего TLabel void __fastcall TForm1::Button1Click(TObject *Sender) { static int i = 1; TLabel *label = new TLabel(this); label->Parent = ScrollBox1; label->Text = "Text " + String(i++); label->Align = TAlignLayout::MostBottom; label->Align = TAlignLayout::MostTop; label->Position->Y = pos; //заносит нашу позицию pos = label->Position->Y + label->Height; //сохраняет позицию и размер Height, для след использования Label1->Text = pos; //выводит позицию последнего TLabel } //------------------------------------------------------------------------------------------------------------------------------- Результат на картинка Цитата Ссылка на комментарий
0 zairkz Опубликовано 30 ноября, 2015 Поделиться Опубликовано 30 ноября, 2015 TScrollBox.ContentHeight использовать надо бы Равиль Зарипов (ZuBy) 1 Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 1 декабря, 2015 Администраторы Поделиться Опубликовано 1 декабря, 2015 TScrollBox автоматически сам вычисляет размер контента на основании размещенных в нем элементов. В связи с этим нужно понимать, что любое выравнивание дочернего компонента по нижнему краю носит некий абсурдный характер, несмотря на то, что это не запрещено. Потому что при выравнивании контрола по нижней границе мы отталкивается относительно размера контента, в то же время контент рассчитывает свой размер относительно контрола. Поэтому у вас и получается столь не предсказуемый вариант. Хорошая практика размещать компоненты подряд сверху вниз с выравниванием по верхнему краю. Или же самый лучший вариант - это ручное позиционирование компонентов. Цитата Ссылка на комментарий
Вопрос
Mexanik2012pro
Добрый день всем!
Возникла проблема с компонентом TScrollBox на XE7.
На форме лежит компоненты TScrollBox и TButton. И на ScrollBox(e) создаются динамические компоненты TLabel.
В начале все создает прекрасно (Картинка 1), но потом, когда TLabel создается за пределами TScrollBox получается трэш (Картинка 2) ...
//-------------------------------------------------------------------------------------------------------------------------------
Изменено пользователем Mexanik2012pro
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.