ラベルの新しいサイズは、テキストを変更するとすぐにわかります。
Label.Width
は、サイズ変更された幅を反映して更新されます。
3つのオプションがあります。ラベルのテキストを変更
毎回は、また、そのwidth
を読み、(推奨されません)と一致するように関連付けられているTLayoutを更新します。
- は、ラベルの
OnResize
イベントを割り当て、このような何かを行う(推奨):あなたはすべてのラベルに同じイベントを使用することができます
procedure TForm45.Label1Resize(Sender: TObject);
const
ExtraWidthOfLayout = 10;
var
Lbl: TLabel;
Layout: TLayout;
begin
if (Sender is TLabel) and (TLabel(Sender).Parent is TLayout) then begin
Lbl:= TLabel(Sender);
Layout:= TLayOut(Lbl.Parent);
Layout.Width:= Lbl.Width + ExtraWidthOfLayout;
end;
end;
注意を。
TLabel.DoResize
をオーバーライドする融合レイアウトとラベルからなる新しいコントロールを作成します。
「TLayout」は絶対に必要ですか?そうでなければ、ラベル 'Top'を整列させ、次に' AutoSize'と 'WordWrap'でそれを必要に応じて下方に伸ばします。 –
@TomBrunbergはいラベルの横にボタンが必要なのでレイアウトが必要です。レイアウトに、ラベルに似たいくつかのAutoSizeプロパティがあることを期待していました。 – ary
アライメントがクライアントの場合、自動サイズ調整が必要な理由がわかりません。 – MikeD