5

次の 3 つの主要コンポーネントを含むフォームがあります。

  1. クライアントに整列するように設定された FlowPanel
  2. 下揃えに設定された 2 番目の FlowPanel
  3. [下に揃える] に設定された StatusBar。

すべてが見栄えから始まります。ただし、下に配置されている FlowPanel も AutoSize に設定されています。それ自体を折りたたむことができるパネルが含まれています。内部パネルには、ユーザーが非表示にできる概要情報が含まれています。これにより、FlowPanel のサイズが非常に小さくなりますが、完全になくなるわけではありません。ユーザーが要約パネルを再展開できるボタンがまだあります。

問題は、パネルが再展開されて FlowPanel が大きくなったときに発生します。その際、ステータスバーとフローパネルの順番が逆になります。どちらも下に揃えるように設定されていますが、ステータスバーは FlowPanel の上にあります。

フォームにボタンを配置して下部のフロー パネルの高さを確認するだけで、Collapsing パネルのないテスト アプリでこれを複製できます。高さを大きくすると順番が変わります。減少すると、すべてが同じ順序のままになります。私のテストフォームの唯一のコードは次のとおりです。

FlowPanel2.Height := FlowPanel2.Height * 2;

また、同じ結果の FlowPanel ではなく、通常の TPanel である下部パネルでこれをテストしました。

なぜこれが起こっているのか、それを防ぐ方法についてのアイデアはありますか?

ステータスバーの画像の移動

4

3 に答える 3

8

私も時々これを持っています。私の解決策は、下部にあるコントロールの上部を「十分に大きい」値に設定することOtherControl.Top + OtherControl.Height + 1ですMaxInt

于 2012-12-20T20:19:32.123 に答える
8

私の解決策:

  1. フォームにステータスバーを配置し、下に揃えます
  2. パネル (Container_Panel) をフォームに配置し、クライアントに合わせます
  3. Container_Panel に FlowPanel を配置し、下に揃えます
  4. Container_Panel に FlowPanel を配置し、Client に合わせます

これで、もう問題はないはずです

于 2012-12-20T20:23:21.113 に答える