我正在使用最新的Delphi 10.1并创建一个多设备应用程序。我的TLayout
Align
设置为top
。我在提及的TLabel
中有一个TLayout
,Align
设置为Client
,其TLabel.AutoSize
设置为True
。
问题是,当标签文字很长时,TLabel
会增长但TLayout
不会增长。
我该如何解决这个问题?
答案 0 :(得分:1)
更改文字后,您就会知道标签的新尺寸
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
的标签。