Windows 10 上の Delphi 10.4.2 Win32 VCL アプリケーションでは、 with を使用TPanel
し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
次に、ボタンの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 ピクセルずつ減少します。
ただし、パネルの高さは自動的にサイズ変更されません!
チェックボックスの変更された高さを反映するように、パネルのサイズを手動で変更するにはどうすればよいですか?