我刚开始测试FireMonkey,但找不到一种方法来制作动态大小/定位的组件。
VCL有锚点属性,FM没有。
有人看到我错过了什么吗?
更新:
在FM中没有简单的锚定功能。您必须创建TLayouts并对齐它们,然后将控件放置在面板内使其“固定”。如果您使用较旧版本的Builder或Delphi,则这与我们以前必须使用TPanels的方式相同。
我刚开始测试FireMonkey,但找不到一种方法来制作动态大小/定位的组件。
VCL有锚点属性,FM没有。
有人看到我错过了什么吗?
更新:
在FM中没有简单的锚定功能。您必须创建TLayouts并对齐它们,然后将控件放置在面板内使其“固定”。如果您使用较旧版本的Builder或Delphi,则这与我们以前必须使用TPanels的方式相同。
在表单上放置一个与底部对齐的小面板,高度约为40。设置底部面板上的'边距'以创建一个更小的空间,使按钮可以生存,并确保将按钮对齐至右侧。例如,表单右边缘与最右边的按钮之间的间隙具有15个边距。顶部和底部的边距设为12。这锚定了最右边的按钮。
'内边距'是外边距的相反,内边距将空间放置在控件外。对于最右边的按钮,我在左侧添加了20个填充,这将是两个按钮之间的空间。对于第二个按钮,在第一个按钮左侧,我们只需要将其对齐属性设置为alRight,无需调整填充或边距。
在窗体上拖放多个TLayout组件,并按需配置它们的对齐属性。将其他组件拖放到这些布局中,并将它们的对齐属性相对于所包含的TLayout进行设置。这对我来说似乎很有效...
这不是部分地解决了你的问题吗?
我记得很长一段时间内,仅使用嵌套的 panel
和 align
来布局就可以满足我的需求。
http://docwiki.embarcadero.com/VCL/XE2/en/FMX.Types.TControl.Anchors
),但我想他们还没有解决所有错误,所以他们将这些锚点设为私有。时间会证明一切都是对的。就我而言,我很高兴有机会为iOS编写代码(在那里没有调整大小的情况下:-)。 - Johan你可以使用LiveBindings和表达式来根据父控件设置控件的属性,但这需要很多工作。
否则,使用边距和填充(就像HTML/CSS一样)。
FMX.Types.TControl.Anchors
,但它是私有的,因此不可用。 - David Heffernan