FireMonkey には、コンポーネントをグループ化して表示・処理するためのレイアウトコンポーネントがあります
レイヤーを重ねるように画面設計を行なうこともできますし、レイアウトコンポーネントを使って、グループ化することによって、たとえば、レイアウトコンポーネント上のコンポーネントの表示/非表示を同時に行なったり、画面の大きさや回転が行なわれても、常に同じ位置にグループ化したコンポーネントを表示することができます
レイアウトコンポーネントには次のような種類があります(クリックするとドキュメントページに飛びます)
TLayout
ノーマルなレイアウトコンポーネント
TLayout を使ってグルーピングされたコンポーネントは、まとめて操作することができます
まとめて、表示 / 非表示の操作を行なう例です
この実行時の例では、スイッチの On/Off が TLayout.Visible と連動します
TLayout を Anchors で固定した例です
デフォルトは Top と Left ですが、これを Top と Right の固定に変更しています
レイアウトごとで扱われていることが分かるかと思います
TScaledLayout
拡大縮小の担当
レイアウト上のコンポーネントは拡大されても縮小されてもちゃんと機能しまっせ
この例では、TScaledLayout の Align を Client に設定しています
TScrollBox
スクロール担当
レイアウト上のコンポーネントがレイアウト枠を超えて配置されている場合に、レイアウト内でスクロールさせることができる
レイアウト枠が小さくなると、スクロールバーが現れます
TFlowLayout
配列系レイアウトトリオのひとつ
配列系のレイアウトは、たとえば電卓のように同じ配分でコンポーネントを並べる際に使うと便利
レイアウトの大きさが変わった場合でも、レイアウト内の枠内に入るように整列してくれる
TGridLayout
配列系レイアウトトリオのひとつ
グリッドのような縦横のマス内をつくり、その中にコンポーネントを配置することができる
マス目の大きさは、ItemHeight と ItemWidth プロパティの値で決まる (デフォルト64)
TFlowLayout と同様に、レイアウトの大きさが変わった場合でも、レイアウト内の枠内に入るように整列してくれる
TGridPanelLayout
配列系レイアウトトリオのひとつ
TGridLayout と似ているけど、こちらは複数のマス目にまたがってコンポーネントを配置することができる
レイアウトの大きさが変わった場合の動作は、上の2つとは違う動きになるので注意(整列しない)
動画 gif の実行時の画面は、分かりやすいように TRectangle を使ってマス目の色分けを行っています