2012-09-27 6 views
13

コントロールを親の中に配置するにはどうすればよいですか?そして、親がサイズ変更するとき、それを中央に保つ方法?アンカー:= [akCenter]?

コントロールを手動で移動するためのParent.OnResizeイベントハンドラを書くことができますが、すべてのコンテナコンポーネントがOnResizeイベントを持っているわけではないので、私はこれを自動的に行いたいと思います。

アンカーはakCenterですか?

+1

OnResizeイベントのレイアウトを変更すると、ちらつきが発生します。フォームの再描画が行われる前にレイアウトを再計算する必要があります。 – truthseeker

答えて

24

アンカーakCenterは存在しません。しかし、akRelativeのようにanchorsプロパティemptyを設定すると、親のサイズが変更されたときにコントロールが相対的に移動することになります。中心に置かれた配置と組み合わせると、中央に似た「アンカー」が得られます。 IDEで

  • を、コントロール(右クリック)のコンテキストメニューを選択し、
  • ポジション>ウィンドウで揃える>横>センター、
  • :設計時に水平中央に

    オブジェクトインスペクタのAnchors.akLeft := FalseAnchors.akRight := False

  • などと設定してください。akHorzCenter

同じ場合は、akTopakBottomをfalseに設定します。両方向を中心にする:Anchors := []

Animation of akRelative in action

免責事項:私はこれのドキュメントは使用をアンカー発見していないと、これは意図した機能しているかどうか私にはわからないが、それはD7ならびにXE2で非常に素晴らしい作品。

+5

+1これはきちんとしていて、知らなかったことを教えてくれてありがとう。 –