gpt4 book ai didi

Delphi/FMX : How to add a dynamically created top-aligned component under all previously added top-aligned components, 而不是自上而下的第二个?

转载 作者:行者123 更新时间:2023-12-04 12:24:15 25 4
gpt4 key购买 nike

我正在使用 Delphi 和 FMX 为 Android 制作一个应用程序。在按钮的 onclick 过程中,我动态创建了一个 TPanel(其中包含一些组件),然后将其添加到 TVertScrollBox。我希望 TPanel 相互堆叠,因此我将 Align 属性设置为 Top。

procedure TMainForm.AddGroupButtonClick(Sender: TObject);
var Group : TPanel;
begin
Group := TPanel.Create(Self);
Group.Parent := Groups; // where Groups is a TVertScrollBox on the form
Group.Align := TAlignLayout.Top;

//Then I create some other components and set their Parent to Group
end;

用户可能希望在所有其他 TPanel 下添加新的 TPanel。但是,除非之前没有添加任何 TPanel,否则每个新的 TPanel 都会直接添加到最上面的 TPanel 之下,即从顶部算起的第二个。

这是为什么,我如何在之前添加的所有 TPanel 下添加新的 TPanel?

我在这里看到了一个类似的问题,但他们使用的是 VCL,其中显然有一个 Top-property 可以更改。但是在使用 FMX 组件时似乎没有。

最佳答案

新建时Firemonkey面板,其 Position属性默认为 X=0, Y=0 .

当您设置 Align := TAlignLayout.Top;与之前放置的元件对比,发现Y = 0处已经有面板了并在现有面板下方挤压新面板。

将新面板放置在所有其他面板集下方

...
Group.Position.Y := 1000; // any sufficiently large value (bigger than the last panel's Y)
Group.Align := TAlignLayout.Top;

关于Delphi/FMX : How to add a dynamically created top-aligned component under all previously added top-aligned components, 而不是自上而下的第二个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62259407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com