Как я могу выровнять / изменить размер 5 прямоугольников при максимизации в Firemonkey? - PullRequest
0 голосов
/ 30 сентября 2018

Итак, вот в чем дело ... У меня есть нормальная (не развернутая - нестандартный размер) форма и на ней 5 столбцов и 2 ряда плиток (TRectangle) (РИС. 1).Мой вопрос заключается в том, как я могу использовать Якоря, или Слои, или что-нибудь еще, чтобы правильно выровнять / изменить размеры плиток при максимизации (рис. 3).Это означает, что если по моей логике я установил для всех свойств выравнивания (L / T / R / B) значение True, то плитки должны просто немного увеличиться и сохранить одинаковые поля между ними (рис. 3), но на самом деле, нет,они просто перекрывают друг друга при максимизации, как на фиг.2. Мой вопрос заключается в том, как я могу установить плитки так, чтобы они были немного больше и оставляли те же поля между ними, как когда форма нормальная (мой нестандартный размер), когда окно развернуто - в основном, они должны заполнять форму красиво, а неперекрытия.Спасибо!PS: извините за мой хромой рисунок краски :) Mockup

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Это задание для TGridPanelLayout .Их немного неудобно использовать, но они могут зарекомендовать себя в ситуациях изменения размера.

  1. Создайте TGridPanelLayout и установите его Align = Client.
  2. Добавить недостающие столбцы .При первом создании макет содержит 2 строки и 2 столбца.Вы можете получить больше, добавив элементы в коллекцию ColumnCollection.
  3. Установите свойства всех столбцов для SizeStyle = Percent и Value = 20.
  4. Добавьте 10Направьте прямоугольник на макет и установите для него Align = Client
  5. Установите свойства Padding и Margin макета , чтобы получить требуемые промежутки между прямоугольниками и вокруг них.

Все это не использует масштабирование, поэтому поля не изменятся при изменении размера.Он просто перераспределяет дополнительное пространство внутри прямоугольников.

Примечание к пункту 3. Установка свойства Value для нескольких столбцов или строк, когда для SizeStyle установлен на Percent ..., может быть связана с IDE.Вы должны делать это много раз ... каждый раз, когда Значение становится ближе к тому, что вы просили.По состоянию на Берлин это не было исправлено (у меня нет Токио).Если вы не хотите этого делать, вы можете отредактировать dfm напрямую и просто написать значение;)

0 голосов
/ 30 сентября 2018

После некоторого размышления я подумал, что должно быть решение, которое делает именно то, что вы просили.Таким образом, в дополнение к свойству Align=Scale решение включает в себя использование свойства Margin для всех внешних сторон и одного из двух смежных компонентов для внутренних сторон.

Если мы рассмотрим прямоугольники,в следующей форме, пронумерованной слева направо и сверху вниз, поля устанавливаются на значение 5,0 следующим образом:

Top row:
 1: left, top, right
 2..5: top, right
Bottom row:
 6: left, top, right, bottom
 7..10: top, right, bottom

Результат можно увидеть в форме исходного размера и вФорма изменена на два по горизонтали и вертикали.Расстояния до границ формы и между прямоугольником остаются постоянными, и это верно и для полностью развернутой формы.

enter image description here

enter image description here

...