1

在 Windows 10 上的 Delphi 10.4.2 Win32 VCL 应用程序中,我使用了TPanelwith 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 个像素。

但是,面板的高度不会自动调整大小!

如何手动调整面板的大小,使其反映复选框的更改高度?

4

0 回答 0