次の方法で TFlowPanel コンポーネントを使用しようとしています。
- メイン フォーム
Form1
コンポーネントに配置しますFlowPanel1: TFlowPanel
。 Form1.Width = 400
、FlowPanel1.Align = alTop
、FlowPanel1.AutoSize = True
、 を設定しFlowPanel1.AutoWrap = True
ます。FlowPanel1
5 つの SpeedButtonsに配置し、それらWidth
を 64 に設定します。- コンパイルして実行します。
- フォームの幅を減らします (約
Form1.Width = 200
)。
何らかの理由で、ユーザーがフォームのサイズを変更したときに、スピード ボタンが自動的に 2 行に整列しません。ただし、 の場合は 2 列に並ん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;
ただし、問題を解決する標準的な方法があるかどうかはまだ疑問です。