2012-09-27 27 views
13

Bir denetimi kendi ebeveyninde nasıl merkezleyebilirim? Ebeveyn yeniden boyutlandırıldığında merkez nasıl saklanır?Anchors: = [akCenter]?

Denetimi el ile taşımak için Parent.OnResize olay işleyicisi yazabileceğimi biliyorum, ancak tüm kapsayıcı bileşenlerinin bir OnResize olayı var ve bunu otomatik olarak yapmak istiyorum.

akCenter anchor var mı?

+1

OnResize olayındaki düzeni değiştirmek titremeye neden olabilir. Yeniden çizim gerçekleşmeden önce düzeni yeniden hesaplamamız gerekir. – truthseeker

cevap

24

Bağlantı akCenter mevcut değil. Ancak, anchors özelliğini boş olarak ayarlayarak akRelative'u taklit edebilirsiniz; bu, üst öğe yeniden boyutlandırıldığında denetimin göreceli hareketi ile sonuçlanır. Bunu merkezlenmiş yerleştirme ile birleştirmek, ortalanmış bir "çapa" ile sonuçlanacaktır.

designtime yatay ortalamak için: kontrol (sağ klik) içerik menüsünü seçmek, IDE

  • pozisyonu> Hizala> Pencere yılında Yatay> Merkezi,
  • Nesne denetçisinde Anchors.akLeft := False, Anchors.akRight := False'u,
  • Et voilà: akHorzCenter olarak ayarlayın.

Aynı şey dikey için de geçerli olur; bu durumda akTop ve akBottom yanlış ayarlanmıştır. Her iki yönde de ortalamak için: Anchors := [].

Animation of akRelative in action

Yasal Uyarı: Ben bu belgeleri kullanımını çapa bulamadı ve bu amaçlanan işleyen olup olmadığını bilmiyorum, ama bu D7 yanı sıra XE2'de çok güzel çalışıyor.

+5

+1 Bu düzgün ve bana bilmediğim yeni bir şey öğrettiğin için teşekkür ederim. –