2012-10-10 9 views
6

Bir TForm üzerinde Hizalama ayarlamak mümkündür, alClient bir Altop formu ve başka set söylüyorlar. Bir uygulamada yapmak mantıklı bir şey mi?TForm'da Hizala ve Ankraj özellikleri nelerdir? İki form bariz bir şekilde tüm perdeyi almak sayede -

Ben de çapalar formlarına maruz fark - (? Çözünürlük değişiklikleri MDI uygulamaları?) Ama onlar için yararlı olacağını düşünemiyorum herhangi bir fikir?

Düzelt: Yapıları daha net hale getirmek için video about this post yaptım.

+4

Sen, diyelim ki, 'alTop' –

cevap

15

Bunu Parent özelliğini ayarlayarak sıradan kontrolü gibi bir TForm kullanabilirsiniz: Eğer nasıl Anchors mülkiyet eserlerini görmek için frmEmbed.Align:= alRight; hattını yorum gerekir

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    frmEmbed:= TForm.Create(Self); 
    frmEmbed.Parent:= Self; 
    frmEmbed.Width:= 50; 
    frmEmbed.Height:= 50; 
    frmEmbed.Align:= alRight; 
    frmEmbed.Anchors:= [akLeft, akBottom]; 
    frmEmbed.Visible:= True; 
end; 

.


Eğer ilgileniyorsanız nerede yukarıdaki kullanılır: bir altyazı çubuğu olmadan ebeveynli formu TFrame bir alternatiftir; çerçeveler erken Delphi sürümleri ile mevcut değildi, bu yüzden bunun yerine parented formları kullanıldı. Bunları eski kodda bulabilirsiniz.

+0

Hala geçerli kod gömülü formlarının kullanılması' Align' ayarlayarak, masaüstüne kenarında bir görev çubuğunu taklit olabilir. Yeniden ebeveynlik formlarının eski kodla sınırlı olmasının bir nedeni var mı? Karmaşık formları (genellikle farklı sekme sayfalarını) çerçeveler yerine birden çok forma bölmeyi daha kolay buluyorum. Mantığımı bölmeme yardımcı olur ve herhangi bir formda sahip olduğum kontrol sayısını sınırlandırır. Normal olarak ebeveyni sekme sayfasına ayarlıyorum ve Hizala: = alClient değerini ayarlayın. –

3

Başka Form içinde bir Formunu yerleştirebilirsiniz. Ne kadar iyi olsa da Dunno. Delphi1'de, olayı yönlendirmek için özel 3. taraf kontroller vardı. Bugün, kalıcı diyaloglar haricinde, kutudan daha fazla veya daha az işe yarayacak gibi görünüyor. Bunu şu şekilde deneyebilirsiniz:

procedure TMainForm.Button1Click(...); 
begin 
    with TForm.Create(Self) do begin 
     Caption := 'Internal one'; 
     Parent := Self; 
     Visible := True; 
    end;  
end;  
Bu kurulumda belki de tutturma ve hizalama mantıklı olacaktır. Afterall, yeni bir "tek pencere" IDE düzeninin nasıl uygulandığını gösteriyor.

1

Başka konteyner bileşeni içinde form yerleştirebilirsiniz. yerleştirme, A.G. için yararlıdır

formları bir sayfa kontrol sekmesinde veya herhangi bir yerde sabitleyebilirsiniz.

Ayrıca, TFrame seçeneğinin bir alternatifi olarak da kullanışlıdır: TFRAme yerine TForm olarak bir çerçeve tasarlarsanız, tasarım zamanında gömülebilir olmaz ve tasarım tarafından düzenlenemez/sabote edilmez. zaman editörü

Gömülü TFrames kendi özelliklerini veya katıştırıldıkları şeklinde yeniden tanımlandı etkinliği olabilir ve çerçeve kolay yükseltilebilir veya refactorable olmak istiyorum, özellikle zaman, her zaman istenen veya pratik değildir. Değiştirilmiş çerçeveli çerçeve özellikleri, PAS değil, DFM'de sona eriyor ve derleme zamanında görülmüyor ve refactor/rename/etc için basit değil.

2

Basit bir vaka yazısız form için (örneğin metropol tarzı-8 kazanmak), sağ üst köşeye bir çıkış düğmesine tutunabilir.

Ancak en iyi kullanım, boyut değişikliklerine duyarlı karmaşık bir form oluşturmayı kolaylaştırmaktır ... AkLeft ve akRight işlevlerini kullanarak yatay bir denetim dolgusu alanını yatay olarak yapabilirsiniz. Tüm 4 ankrajları kullanmak, bir müşteriyi diğer panellerle çevrelemeye gerek kalmadan alclient'e ayarlamaya benzer. Eğer çapa ile neler yapabileceğini çoğu

ayrıca birçok panellerle yapılabilir, ancak şekil daha karmaşık hale geldikçe bazen panellerin üzerine panellerin çeşitli düzeylerde gerektiren dağınık alacak.genellikle iyi cevap olacaktır paneller ve çapa bir arada kullanarak Tabii

.

+0

Sanırım bir şekilde soruyu yanlış anlamış olabilirsiniz. TForm sınıfındaki Ankraj/Hizalama özelliklerinin yararından sonra, formdaki kontrolleri konumlandırmak yerine formu ekranda göstermek için kullanıyorum. – Alister

+0

Evet-Yanlış anlamıştım. –

+0

cevabını geri çekmek isteyebilirsiniz. – Alister

İlgili konular