我正在尝试以下列方式使用 TFlowPanel 组件:
- 放置在主窗体
Form1
组件上FlowPanel1: TFlowPanel
。 - 设置
Form1.Width = 400
,FlowPanel1.Align = alTop
,FlowPanel1.AutoSize = True
,FlowPanel1.AutoWrap = True
. - 放置在
FlowPanel1
5 个 SpeedButton 上并将其设置Width
为 64。 - 编译并运行。
- 减小表格的宽度(关于
Form1.Width = 200
)。
出于某种原因,当用户调整表单大小时,速度按钮不会自动排成两行。AutoSize = False
虽然,当,时,它们确实排成两排AutoWrap = True
。
这种行为的原因是什么以及如何解决?
编辑:我找到了“快速而肮脏”的解决方案。以下代码是事件的事件处理程序TFlowPanel.OnResize
:
procedure TForm1.FlowPanel1Resize(Sender: TObject);
begin
with FlowPanel1 do
begin
AutoSize := False;
Realign; // line up controls
AutoSize := True; // adjust TFlowPanel.Height
end;
end;
但是,我仍然想知道是否有解决问题的标准方法。