在 Windows 10 上的 Delphi 10.4.2 Win32 VCL 应用程序中,我使用了TPanel
with AutoSize = True
.
文档说:
当 AutoSize 为 True 时,控件会在其内容更改时自动调整大小。
但是,在这种特殊情况下,当其内容的大小在运行时发生变化时,情况并非如此:
将这些控件放在 VCL 申请表上:
object Button1: TButton
Left = 40
Top = 56
Width = 81
Height = 25
Caption = 'Button1'
TabOrder = 2
OnClick = Button1Click
end
object Panel1: TPanel
Left = 40
Top = 104
Width = 161
Height = 19
AutoSize = True
TabOrder = 1
object CheckBox1: TCheckBox
Left = 1
Top = 1
Width = 159
Height = 17
Align = alTop
Caption = 'bla bla bla bla bla bla'
TabOrder = 0
WordWrap = True
end
end
然后,在 Button 的OnClick
处理程序中,放置以下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.AutoSize := False;
try
Panel1.Width := Panel1.Width - 10;
finally
Panel1.AutoSize := True; // trying to refresh the Panel's height
end;
end;
这将面板的宽度每次减小 10 个像素。
但是,面板的高度不会自动调整大小!
如何手动调整面板的大小,使其反映复选框的更改高度?