如何在运行时向 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 怎么样。
下面的代码在 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;