Formun Scaled ve ScreenSnap özelliği nedir? nasıl kullanılır?

Başlatan t2, 25 Mayıs 2011, 09:42:49

t2

Program bazı ekran çözünürlüklerinde kötü görünüyor, hatta bazı nesneler çıkmıyordu. Kendi ekranımı aynı çözünürlüklere ayarladım sorunları giderdim. Fakat bir kullancı daha sorun bildirdi onun ekran çözünürlüğünü kendim ayarlayamadığım için sorunu göremiyor ve gideremiyorum. Formun "scaled" propertysi true iken ortaya çıkıyordu.  Acaba bunu false yapsam düzelir mi?  Müşteri bilgisayarında deneme yapmadan çözmem gerek.

800x600 üzerindeki tüm çözünürlüklerde normal görünebilmesini istiyorum. Scaled nedir? ScreenSnap  nedir? yoksa PixelPerInch ile mi ayarlamak gerek?

Burak B

Arayüzün bir resmini gösterebilirmisin. Şundan dolayı anchor ve panelleri nasıl kullandığını merak ettim. Bazı kurallara dikkat ederek gayet elastik ve hemen her çözünürlükte arayüz yapabilirsin. En büyük kural değişken boyuttaki formlarda asla bir öğeyi formun ortasına sabitlemeye çalışma. Çünkü kenarları her zaman öğrenebilirsin ama orta nokta hep değişir. Orayı sürekli hesaplamak gerekir. Buda mümkün ançak biraz kod yazmak lazım. Diğer bir kuralda mümkün olduğu kadar uygulamada birbiriyle ilişkili olan arayüz bileşenlerini bir araya gruplandır. Bunu bir panel yardımıyla yapabilirsin mesela. Ekran çözünürlüğünü almak basit bir işlem. Buna göre formun üzerindeki tüm öğelerin bir kenarlarını biryerlere sabitlersen ve formunu ekran çözünürlüğü kadar genişletirsen veya maximize edersen tüm öğeler sabitlendikleri referans noktasına göre yeniden konumlanacaktır aksi halde formun küçüldüğünde onları ezer.

Örnek vermek gerekirse;
Form: Top=0, Left=0, Width=800, Height=600 bir formumuz olsun.

Bunun üzerine kısayol butonları barındıran bir panel koyalım. Panelimizde sağ tarafa dayalı yani Top=0, Left=700, width=100,height=600 olsun. 100 pixel genişliğinde bir panel.

Bu programı çalıştırdığımızda 800x600 de panel v..s gayet iyi tam yerinde açılır. ancak ya ekran 640x480 ise ?
Panel görünmeyecektir.

İşte bu gibi durumları halletmek için panelin koordinatlarını;
runtime olarak kullanacaksak;
Panel.Top:=Form.Top;
Panel.Left:=Form.width-100;
Panel.width:=100;
Panel.Height:=Form.height;

şeklinde ayarlamak ve bu durumu her formscale işleminde kontrol etmek gerekir veya form üzerinde tasarım esnasında ayarlayacaksak panelin anchor pointlerini
top=true;
right=true;
bottom=true;
yapmalıyız böylece panelimiz bu üç kenardan forma yapışacak ama sol kenardan serbestce hareket edecektir.

Bu gibi düzenlemeler ile istediğin işlemi halledebilirsin. Umarım çok karışık olmamıştır.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

t2

hususi bir program olduğundan resmini gönderemiyorum. Fakat nesnelerin Anchor özelliklerini ayarlamıştım. Kaydırmada sorun yok.  hem de çok sayıda nesne var.  Belki de asıl sorun bu anchor noktalarından oluyor. yani nesne kayamayıp sabit kalmaya çalıştığından görünmez oluyor. Halbuki bunu taşıyan groupbox otomatik resize olmuş, içindeki diğer nesnenin ancohor noktası da kayıplara karışmış olabilir.

Acaba Scaled  veya başka bir özelliği sayesinde komple aynen küçülebilir mi diye düşündüm. Belki de sadece PixelPerInch ile olabilir. Yani çözünürlüğü algılayıp program  bunu değiştirirse form orantılı şekilde büyüyüp küçülür ve sorun kalmayabilir,   henüz deneyemedim.

t2

Nesneye ait Anchor sadece top ve left olmadığından ayrıca bottom ayarlandığından sorun çıkıyormuş. Daha denemedim ama sorun bu gibi.  Nesnenin sadece üstü sabit kalacaksa akBottom ayarlamak anlamsız.