相対パネルの使用

提供: RAD Studio
移動先: 案内検索

VCL への移動


TRelativePanel は、子コントロールを、親パネル自体に対して、またはパネルの他の子コントロールに対して、相対的な位置に配置するためのコンテナ コントロールです。

このコントロールには制限があまりないため、ガイドラインを尊重しない場合、位置揃えルールがすぐに矛盾してしまいます。

位置揃えの優先ルール

このセクションでは、相対パネルを使用する際に留意する必要がある、最も重要な点を取り上げます。相対パネルの子を配置する処理は、以下の順で実行されます。

  1. AlignXxWithPanel: "Panel" に関するすべての "Align" プロパティ。AlignLeftWithPanel など。
    • 中央揃え(AlignXxCenterWith)は端揃えより優先されます。
    • 右より左、下より上が優先されます。
  2. AlignXxWith: 残りの "Align" プロパティ。
    • 中央揃え(AlignXxCenterWith)は端揃えより優先されます。
    • 右より左、下より上が優先されます。
  3. 端揃えLeftOfRightOfAboveBelow
    • 右より左、下より上が優先されます。

ステップ 2 および 3 で子を配置する順序は、子の配列内でのインデックスによって決まります。位置揃えが矛盾したときに、あるコントロールを他のコントロールより "優先" したければ、優先するコントロールの方が大きくなるようインデックスを設定してください。

特に考慮すべき事項

見えなくなる位置揃え(コントロールが姿を消す)[編集]

位置揃えによってコントロールが相対パネルの外に押しやられてしまうような設定を防ぐチェックは行われません。そのような場合、コントロールはパネルから消えてしまいます。これは意図的に行われていることで、状況によっては便利に使用できます。

循環依存

TRelativePanel 内部の要素間の関係が、有向グラフを構成します。循環依存は、このグラフ内での循環がある場合に発生します。つまり、2 つの要素がお互いに依存し合っている状態です(中間要素経由も含む)。

循環依存が設定されると、TRelativePanel コンポーネントはそれを検知し、例外を発生させます。これが設計時に発生した場合は、デザイナがエラー メッセージを表示させます。EnableAlign または Realign メンバーを呼び出すコードも、例外を起こす可能性があります。

矛盾する関係

コントロールの同じ辺に対して複数の位置揃えを設定すると、矛盾が発生する可能性があります。どの位置揃えルールが優先されるかについては、「位置揃えの優先ルール」のセクションを参照してください。

向かい合う辺の位置揃えと自動サイズ設定

コントロールの向かい合う両方の辺(左と右、または上と下)の位置揃えを、同じもの("Panel" または他の兄弟コントロール)を対象として設定した場合、コントロールの幅や高さは対象に合わせて自動的に変更されます。たとえば、ボタンの AlignLeftWithPanelAlignRightWithPanel を両方設定すると、ボタンの幅は相対パネルの幅と一致するよう変更されます。

この動作の結果として、予期しない状況が起きる可能性があります。たとえば、編集コントロールの AlignLeftWithPanel|AlignRightWithPanel を両方設定し、そのコントロールの LeftOf をボタン コントロールに設定した場合、編集コントロールは相対パネルと同じ幅になりますが、ボタンの "左側" というルールにより、相対パネルの "外にはみ出して" しまいます。

関連項目