2011-09-02 4 views
7

Только что начал тестировать FireMonkey и не может найти способ создания динамически разнесенных/позиционированных компонентов.Закрепление компонентов GUI в FireMonkey

У VCL было свойство Anchor, FM - нет.

Кто-нибудь увидеть что-то я пропустил

Обновление:

Простой анкерный не доступен в FM. Вы должны создать TLayouts и выровнять их, а затем поместить элементы управления внутри панели, чтобы они «застряли». Если вы использовали более старую версию Builder или Delphi, это будет то же самое, что мы привыкли делать с TPanels.

+0

Существует ['FMX.Types.TControl.Anchors'] (http://docwiki.embarcadero.com/VCL/XE2/en/FMX.Types.TControl.Anchors), но он закрыт и поэтому недоступен. –

+0

Возможно, вы захотите посмотреть компонент TLayout. Похоже, вы отбрасываете его на форму, настраиваете, а затем бросаете в нее некоторые компоненты ... но, скорее всего, это догадка. –

+0

@Bob: выравнивание не совпадает с привязкой. –

ответ

11

Это ответ на ваш вопрос. Свойство anchors в VCL, по-видимому, было заменено Margins и Padding (из соображений производительности), и я нашел некоторую документацию в вики XE2 (http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Application_Design). Я сомневаюсь, что якоря будут введены позднее. Чтобы привязать две кнопки («ОК» и «Отмена») в нижней части формы справа, сделайте следующее. Посмотрите изображения ниже для кнопки «ОК» и «Отмена».

enter image description here

место небольшая панель выровнена на дно на форме, скажем, около 40 высоты. Установите «Поля» на нижней панели, чтобы создать меньшее пространство, в котором будут жить кнопки, убедитесь, что вы установили выравнивание кнопки вправо. Например, разрыв между правым краем формы и правой кнопкой имеет край 15. Верхнее и нижнее поля были установлены на 12. Это фиксирует правую большую кнопку.

«Заполнение» - это противоположность отступа, прокладка помещает пространство вне элемента управления. Справа на самой кнопке я добавил прокладку 20 на слева сторону, это будет пространство между двумя кнопками. Для второй кнопки слева от первой все, что нам нужно сделать, это установить свойство align в alRight, нет необходимости корректировать отступы или поля.

+0

Мне очень хотелось бы увидеть изображение, но оно слишком маленькое, вы можете разместить более крупную версию? – Johan

+1

Я задавался вопросом, было ли это слишком мало. Я просто упал в более крупной версии. – rhody

+0

+1 Использование вложенных панелей, основных PITA, но он работает. – Johan

5

Вот ответ, который вы ищете: У регуляторов FMX нет якорей.

Я предполагаю, что это будет функция «следующей версии».

+2

Этот вид делает бесполезным Firemonkey. Нет, я передумаю, это делает Firemonkey бесполезным. –

+0

((: они находятся в - то, что мне нравится называть - «обезьяна бизнес - firemonkey» – ComputerSaysNo

+1

Это неправда, используйте поля и прокладки, объясненные в вики-документах. Нет, как сразу видно, как привязки, но они работают. См. мой ответ ниже. – rhody

7

Оставьте несколько компонентов TLayout на форме и настройте их свойства выравнивания по своему усмотрению. Поместите другие компоненты в эти макеты и установите их свойства выравнивания относительно TLayout, в которых они содержатся. Кажется, что я работаю для меня ...

+0

Это для выравнивания компонентов, а не для привязки компонентов. Например, если мне нужна кнопка ОК, чтобы оставаться одного размера, но следуйте за уменьшением размера нижнего правого окна. что –

+0

@Gregor Может быть, я просто не понимаю ... Если я отброшу TLayout на форму и поставлю ее Alignment на alBottom, перетащите TButton на TLayout и установите его выравнивание в alRight, это будет выглядеть так же хорошо, как размер. –

+0

что, похоже, работает, но делает GUI-дизайн болью. Простое привязку больше не доступно, теперь я должен создать TLAyouts. Это похоже на старые времена с TPanels, чтобы заставить вещи оставаться если вы хотите их. Добро пожаловать в 1990 –

1

Быстрый взгляд на свойство выравнивания показывает гораздо больше вариантов, чем у предыдущих Delphi версии:

enter image description here

Разве это не решит проблему (по крайней мере, частично).
Я помню, как долго я пользуюсь OK, просто используя вложенные panel s и align для компоновки.

+0

- это не огромный шаг назад. Мне нужно вложить TLayouts для привязки. Если я вспоминаю из моего Строителя 5 дней, это была огромная боль в * ss –

+1

Это, но, по крайней мере, это не делает Firemonkey бесполезным, это просто означает, что есть возможности для улучшения. Все кричали, чтобы отпустить все обещанные возможности. Это даже в файлах (см. 'Http: // docwiki.embarcadero.com/VCL/XE2/ru/FMX.Types.TControl.Anchors', однако, я думаю, они еще не убрали все ошибки, Я сделал для тех, кто привязался к Anchors, и со временем все будет правильно. Я за один раз щекочусь розовым с возможностью писать для iOS (где нет изменения размера :-). – Johan

+0

«не то, что огромный шаг назад» ... oh common - просто продолжайте использовать VCL, если вы не готовы к чему-то новому. В Firemonkey так много замечательных вещей, и это первый релиз этого ... конечно, есть еще некоторые проблемы ... далеко от будучи бесполезным IMHO – jpfollenius

0

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

В противном случае используйте поля и прокладки (например, HTML/CSS).