これが Firemonkey のサンプル コードです。
var
f: integer;
Label1: TLabel;
MyStringArray: TArray<String>;
Panel1: TPanel;
Layout1: TLayout;
begin
Layout1.Align := TAlignLayout.Client;
MyStringArray := ['aa','bb','cc','dd','ee','ff'];
f:= 10;
Layout1.BeginUpdate;
for i := 0 to length(MyStringArray) - 1 do
begin
Label1 := TLabel.Create(Self);
Label1.Name := 'Label' + i.ToString;
Label1.Text := 'Label_' + MyStringArray[i];
Label1.Position.Y := f;
Label1.Align := TAlignLayout.Top;
Label1.Parent := Layout1;
inc(f, 15);
end;
Layout1.EndUpdate;
end;
MyStringArray は常に同じ数の要素を持つ動的配列ではないため、ラベルの数に応じて TLayout (Layout1) の内容で TPanel (Panel1) のサイズを変更します。
Panel1.Height := Layout1.ChildrenRect.Height
これは、Layout1 でラベルの数が増えると問題なく機能しますが、ラベルの数が少なく、Layout1.ChildrenRect.Height
効果がなく、縮小もしない場合、Layout1 の高さは常に高い値を維持します。
それを行う方法の解決策または他の代替手段はありますか?, よろしくお願いします.