Страница 1 из 1

Выравнивание по центру

Добавлено: 16 май 2019, 15:23
garriporter
Здравствуйте!
Есть вот такая необходимость:
Блок текста(в нем число, может быть разной длинны, как 1 так и 999999999), в конце блока этого текста есть панель, на которой еще два блока текста, необходимо чтобы эта панель перемещалась вместе с расширением текста.

Как получилось сделать(с указанием на пример из вложения).
1. Берем панель (Panel2).
2. Кладем на нее блок текста(Text1), параметры: Авторширина - Да; Стиль стыковки - Слева.
3. На Panel2 кладем еще одну панель(Panel3), параметры: Стиль стыковки - Слева. Сверху кладем на нее необходимый текст, который должен смещаться в зависимости от длины строки Text1.

Таким образом, при расширении Text1, панель Panel3 так же смещается.
Проблема в том, что такое решение приводит только к расширению вправо.
А мне необходимо чтобы вся эта конструкция выравнивалась по центру Panel1.
Возможно ли это реализовать?
Во вложении пример. Panel1 сделана для наглядности.
Надеюсь описал понятно :)

Заранее спасибо.

Re: Выравнивание по центру

Добавлено: 20 май 2019, 15:10
Aleksey
Здравствуйте,

Немогли бы скинуть несколько примеров текста и как это должно выглядеть для анализа?

Спасибо.

Re: Выравнивание по центру

Добавлено: 20 май 2019, 17:38
garriporter
Здравствуйте!
На примере из вложения.
Если в объекте Text1 будет 6 цифр, то все это на черном квадрате выглядит относительно ровно (по горизонтали).
Изображение

Если там будет 3 цифры, то получается такое:
Изображение


Необходимо чтобы конструкция описанная в 1 сообщении, оставалась по центру Panel1 независимо от количества символов.

Re: Выравнивание по центру

Добавлено: 21 май 2019, 11:47
garriporter
что то сломалась картинка.
вот сравнение

Re: Выравнивание по центру

Добавлено: 22 май 2019, 13:43
Ivan
Здравствуйте.

Мы доработали ваш пример.
У панели Panel2 включили свойства "CanGrow" и "CanShrink", и в событии GetTag панели Panel1 написали следующий скрипт:

Код: Выделить всё

StiContainer cont = sender as StiContainer;
StiComponent comp = cont.Components[0];
comp.Left = (cont.Width - comp.Width) / 2f;
Теперь Panel2 центрируется по горизонтали относительно Panel1.
Обращаем внимание, что скрипты работают только в режиме компиляции отчёта.

Спасибо.

Re: Выравнивание по центру

Добавлено: 22 май 2019, 15:12
garriporter
Здравствуйте!
Большое спасибо! Это именно то, что нужно.

Re: Выравнивание по центру

Добавлено: 22 май 2019, 15:37
Aleksey
Здравствуйте,

Отлично! Дайте знать, если возникнут вопросы.