如何动态添加控件到Delphi TFlowLayout

问题描述 投票:0回答:1

如何在运行时向 TFlowLayout 添加控件?设置 Parent 对于 TLayout 来说就足够了,但对于 TFlowLayout 似乎不起作用。这段代码解释了我的问题:

procedure AddLabel;
var
  LLabel: TLabel;
begin
  LLabel := TLabel.Create(Self);
  LLabel.Parent := Layout1;  // LABEL SHOWS OK
  LLabel := TLabel.Create(Self);
  LLabel.Parent := FlowLayout1;  // LABEL DOESN'T SHOW
end;

如果我这样做,我就会得到 AV:

procedure AddLabel;
var
  LLabel: TLabel;
begin
  LLabel := TLabel.Create(Self);
  FlowLayout1.Controls.Add(LLabel);  // THROWS AV
end;

我知道 GridPanel 有 RowCollections 和 ColumnCollections,但我不知道 TFlowLayout 怎么样。

delphi firemonkey
1个回答
0
投票

下面的代码在 10.4 上运行良好。在您的情况下,标签可能不会显示,因为没有分配给 Text 属性

的文本
type
  TForm1 = class(TForm)
    flwlytMain: TFlowLayout;
    btnStart: TButton;
    procedure btnStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.btnStartClick(Sender: TObject);
var
  MyLabel: TLabel;
  MyButton : TButton;
  ControlList: TControlList;
begin
  MyLabel := TLabel.create(self);
  MyLabel.Parent := flwlytMain  ;
  MyLabel.AutoSize := true;
  MyLabel.Text := 'Test   ';
  MyLabel.Font.Size := 48;
  MyLabel.Visible := True;
  MyButton := TButton.Create(self);
  MyButton.Text := 'Another test';
  MyButton.Width := 120;
  MyButton.parent := flwlytMain;
  MyButton.OnClick := btnStartClick;
end;
© www.soinside.com 2019 - 2024. All rights reserved.