Tasarlarken formlar içinde Delphi, ekran çözünürlüğünden bağımsız olarak uygulamanızın (formlar ve tüm nesneler) esasen aynı görünmesi için kodu yazmak genellikle yararlıdır.
Form tasarım aşamasında erken hatırlamak istediğiniz ilk şey, formun ölçeklendirilmesine izin verip vermeyeceğinizdir. Ölçeklememenin avantajı, çalışma zamanında hiçbir şeyin değişmemesidir. Ölçeklememenin dezavantajı, çalışma zamanında hiçbir şey değişmez (formunuz ölçeklendirilmemişse bazı sistemlerde okunamayacak kadar küçük veya çok büyük olabilir).
Formu ölçeklendirmeyecekseniz, pullu Yanlış. Aksi takdirde özelliği True olarak ayarlayın. Ayrıca, Otomatik kaydırma to False: bunun tersi, formun çalışma zamanında formun çerçeve boyutunu değiştirmemesi anlamına gelir, bu da formun içeriği iyi görünmüyor yapmak Boyutu değiştir.
Önemli Hususlar
Formun yazı tipini Arial gibi ölçeklenebilir bir TrueType yazı tipine ayarlayın. Yalnızca Arial, istediğiniz yükseklikte bir piksel içinde bir yazı tipi verir.Uygulamada kullanılan yazı tipi değilse hedef bilgisayara yüklendiğinde, Windows kullanılacak aynı yazı tipi ailesi içinde alternatif bir yazı tipi seçecektir yerine.
Formları ayarlama Durum başka bir şeye mülk poDesigned, formu tasarım zamanında bıraktığınız yerde bırakır. Bu genellikle 1280x1024 ekranda sola, 640x480 ekranda tamamen kapanır.
Formdaki denetimleri doldurmayın; kenarlık konumlarındaki (ölçekleme nedeniyle) bir piksel değişikliğinin çakışan denetimler olarak görünmemesi için denetimler arasında en az 4 piksel bırakın.
Tek satırlı etiketler için alLeft veya Peki hizalanmış, ayarla AutoSize Doğru. Aksi takdirde, AutoSize Yanlış.
Bir etiket bileşeninde yazı tipi genişliği değişikliklerine izin vermek için yeterli boşluk olduğundan emin olun - akımın uzunluğunun% 25'i olan bir boşluk sicim ekran uzunluğu biraz fazla ama güvenlidir. Uygulamanızı başka dillere çevirmeyi planlıyorsanız dize etiketleri için en az% 30 genişleme alanına ihtiyacınız olacaktır. Eğer AutoSize Yanlışsa, etiket genişliğini gerçekten uygun şekilde ayarladığınızdan emin olun. Eğer AutoSize Doğru, etiketin kendi başına büyümesi için yeterli alan olduğundan emin olun.
Çok satırlı, kelime ile sarılmış etiketlerde, altta en az bir satır boşluk bırakın. Yazı tipi genişliği ölçeklendirme ile değiştiğinde metin farklı şekilde sarıldığında taşmayı yakalamak için buna ihtiyacınız olacaktır. Büyük fontlar kullandığınız için metin taşmasına izin vermek zorunda olmadığınızı düşünmeyin; başka birinin büyük fontlarının sizinkinden daha büyük olabileceğini düşünmeyin!
IDE'de farklı çözünürlüklerde proje açma konusunda dikkatli olun. Formlar PixelsPerInch özelliği, form açılır açılmaz değiştirilecek ve projeyi kaydederseniz DFM'ye kaydedilecektir. Uygulamayı bağımsız çalıştırarak test etmek ve formu tek bir çözünürlükte düzenlemek en iyisidir. Farklı çözünürlüklerde ve yazı tipi boyutlarında düzenleme, bileşen sapması ve boyutlandırma sorunlarını davet eder. Ayarladığınızdan emin olun. PixelsPerInch tüm formlarınız için 120. Varsayılan olarak 96'dır ve bu da daha düşük bir çözünürlükte ölçekleme sorunlarına neden olur.
Bileşen kaymasından bahsetmişken, bir formu tasarım zamanında veya Çalışma süresi. Her bir yeniden ölçekleme, koordinatlar tamamen ayrılmaz olduğundan çok hızlı bir şekilde biriken yuvarlama hataları sunar. Kesintisiz miktarlar, birbirini izleyen her yeniden ölçeklendirmede denetimin kökenlerinden ve boyutlarından kesildiğinden, denetimler kuzeybatıya doğru kayıyor ve küçülüyor gibi görünecektir. Kullanıcılarınızın formu istediğiniz sayıda yeniden ölçeklendirmesine izin vermek istiyorsanız, her ölçeklendirmeden önce yeni yüklenen / oluşturulmuş bir formla başlayın, böylece ölçekleme hataları birikmez.
Genel olarak, formları belirli bir çözünürlükte tasarlamak gerekli değildir, ancak formlarını gözden geçirmeniz çok önemlidir. Büyük ve küçük yazı tipleriyle 640x480 ve serbest bırakmadan önce küçük ve büyük yazı tipleriyle yüksek çözünürlükte görünüm uygulamanız. Bu, normal sistem uyumluluk testi kontrol listenizin bir parçası olmalıdır.
Esasen tek hatlı bileşenlere çok dikkat edin TMemos-gibi şeyler TDBLookupCombo. Windows çok satırlı düzenleme denetimi her zaman yalnızca tüm metin satırlarını gösterir; denetim yazı tipi için çok kısaysa, TMemo hiçbir şey göstermeyecek (a TTimer kırpılmış metin gösterecektir). Bu tür bileşenler için, onları bir piksel çok küçük olmaktan ve hiç metin göstermekten daha büyük birkaç piksel yapmak daha iyidir.
Tüm ölçeklendirmenin çalışma zamanı ve tasarım süresi arasındaki yazı tipi yüksekliği farkıyla orantılı olduğunu unutmayın. değil piksel çözünürlüğü veya ekran boyutu. Ayrıca, form ölçeklendiğinde kontrollerinizin kökenlerinin değişeceğini unutmayın; bileşenleri biraz hareket ettirmeden de daha iyi hale getiremezsiniz.
Çapalar, Hizalama ve Kısıtlamalar: Üçüncü taraf VCL
Delphi formlarını farklı ekran çözünürlüklerinde ölçeklerken aklınızda bulundurmanız gereken sorunları öğrendikten sonra, kodlama.
Delphi sürüm 4 veya üstü ile çalışırken, form üzerindeki kontrollerin görünümünü ve düzenini korumamıza yardımcı olacak çeşitli özellikler tasarlanmıştır.
kullanım Hizala bir denetimi form veya panelin üstüne, soluna veya sağına hizalamak ve denetimi içeren formun, panelin veya bileşenin boyutu değişse bile orada kalmasını sağlamak için. Üst öğe yeniden boyutlandırıldığında, hizalanmış bir denetim de üst öğenin üst, alt, sol veya sağ kenarını kaplamaya devam edecek şekilde yeniden boyutlandırılır.
kullanım Kısıtlamalar kontrolün minimum ve maksimum genişlik ve yüksekliğini belirtmek için. Sınırlamalar maksimum veya minimum değerler içerdiğinde, kontrol bu sınırlamaları ihlal edecek şekilde yeniden boyutlandırılamaz.
kullanım Çapalar bir kontrolün, ebeveyn yeniden boyutlandırılsa bile, mevcut konumunu ebeveyninin bir kenarına göre korumasını sağlamak için. Üst boyutu yeniden boyutlandırıldığında, kontrol, tutturulduğu kenarlara göre konumunu korur. Bir kontrol üst öğesinin karşıt kenarlarına sabitlenirse, üst boyutu yeniden boyutlandırıldığında kontrol gerilir.
prosedürü ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
başla
F.Scaled: = Doğru;
F.AutoScroll: = Yanlış;
F.Konum: = poScreenCenter;
F.Font. İsim: = 'Arial';
eğer (Ekran. Width <> ScreenWidth) ardından başlayın
Yükseklik: =
LongInt (F.Height) * LongInt (Ekran. Yükseklik)
div ScreenHeight;
F.Genişlik: =
LongInt (F.Width) * LongInt (Ekran. Genişlik)
div ScreenWidth;
F.ScaleBy (Ekran. Genişlik, Ekran Genişliği);
son;
son;