1

Windows 10 上の Delphi 10.4.2 Win32 VCL アプリケーションでは、 with を使用TPanelAutoSize = 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 ピクセルずつ減少します。

ただし、パネルの高さは自動的にサイズ変更されません!

チェックボックスの変更された高さを反映するように、パネルのサイズを手動で変更するにはどうすればよいですか?

4

0 に答える 0