• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Userform'un Top ve Left'inin Point Değerini Öğrenmek

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,
ekteki dosyamdaki Userformun Top ve Left değerlerini öğrenmek istiyorum. Yani sol üst köşesi Ekranın hangi noktasına geliyor? X ve Y point değeri nedir? Bunu öğrenmek istiyorum. Nasıl yapabilirim?

Yardımcı olabilirseniz çok sevinirim.
 

Ekli dosyalar

Sayın Ergün_Güler,

Userformunuz seçili iken, Properties kısmındaki "StartUpPosition" yerini 0-Manual olarak değiştirin. Daha sonra Left ve Top değerlerine bir rakam girin. Kodu deneyin.

Private Sub UserForm_Initialize()
a = UserForm1.Top
b = UserForm1.Left
MsgBox "Üstten = " & a & " " & "Soldan = " & b
End Sub
 
Sayın Ergün_Güler,

Userformunuz seçili iken, Properties kısmındaki "StartUpPosition" yerini 0-Manual olarak değiştirin. Daha sonra Left ve Top değerlerine bir rakam girin. Kodu deneyin.

Private Sub UserForm_Initialize()
a = UserForm1.Top
b = UserForm1.Left
MsgBox "Üstten = " & a & " " & "Soldan = " & b
End Sub

Selam,
Sayın Şaban Sertkaya hocam dediğiniz gibi öğrenebiliyoruz. Teşekkür ederim.
Sorumu çok örneklendirip detaylı soramadım Ancak, Userform'un "StartUpPosition" Center olsa bile bunu nasıl öğrenebilirim?
sorumu şunun için sormuşum;
örneğin UserForm1'in tıklanan bir noktasından (TextBox, Label v.s. gibi), Userform2'yi açmak istiyorum. Açılan bu userform2'nin sol-üst köşesi mouseın tıklandığı yer olsun.
mesela ben aşağıdaki gibi bir çalışma yaptım. mouse ile tıklayınca bulduğum rakamları 0.75 ile çarparak doğru sayıya ulaştım. Ulaştım ancak hangisi Pixel hangisi point anlayamadım. Neden 0.75 ile çarpımca istenilen sayıyı buldum. tam olarak anlayamadım?

Kod:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Sub CommandButton1_Click()
Dim lngCurPos As POINTAPI
    GetCursorPos lngCurPos
    
MsgBox lngCurPos.y * 0.75
MsgBox lngCurPos.x * 0.75
  

End Sub
 
GetCursoPos API fonksiyonu ile elde ettiğiniz değerler, POINT veri tipinde (lpPoint) -ancak- PIXEL cinsinden rakamlardır ...

POINT veri tipi (lpPoint) ile, POINT Uzunluk birimini karıştırmayın. Bu veri tipini; içinde hem x hem de y değerini barındırabilen bir torba olarak düşünün.

Metraj ölçümü için kullanılan "POINT" dediğimiz şey de; endaze, arşın, kulaç gibi bir uzunluk birimi.. (1/72 inch veya yaklaşık 1/28 cm'ye tekabül ediyor)

Herhangi bir Excel çalışma sayfasında, satırın genişliği değiştirirken küçük bir kutuda gösterilen şey de, "Point" dir (Yanında pixel değeri de görüntülenir).

Not : Excel sütunları için ise, bu gösterim farklıdır. Sütunların genişliği değiştirirken, "Ortalama Karakter (0-9) Genişliği" ile birlikte "Pixel" değeri verilir. (Bu kısmın konumuzla alakası yok. Genel kültür içindir)

Siz, GetCursorPos fonksiyonu ile "PIXEL" cinsinden ekran koordinatlarını elde ediyorsunuz. PIXEL dediğimiz şey de sizin, bilgisayarınızın ekran çözünürlüğünde görüntülenen birimler.

UserForm'un görüntülerken kullanacağınız koordinat birimi ise POINT'dir. Yani, "Pixel" cinsinden değerleri, POINT cinsine çevirmeniz gerekir.

Pixel ve Point'in ağababası ise TWIP denilen mini minnacık başka bir birimdir.

TWIP olarak;

1 Pixel = 15 Twip
1 Point = 20 Twip 'tir.

Bu bağlantıya göre;

1 Point = 15/20 Pixel yani 0.75 Pixel 'dir.

Sizin deneme yanılma yolu ile bulduğunuz 0.75 çarpanının aslı da budur.

.
 
Sayın Ferhat Pazarçevirdi Hocam Açıklamalarınız için çok çok teşekkür ederim.

Herhangi bir Excel çalışma sayfasında, satırın genişliği değiştirirken küçük bir kutuda gösterilen şey de, "Point" dir (Yanında pixel değeri de görüntülenir).

Not : Excel sütunları için ise, bu gösterim farklıdır. Sütunların genişliği değiştirirken, "Ortalama Karakter (0-9) Genişliği" ile birlikte "Pixel" değeri verilir. (Bu kısmın konumuzla alakası yok. Genel kültür içindir)
Excel sütun genişliğini değiştirir iken "Genişlik: 100,00 (705 Piksel)" diyor.
Bu kısmı anlayamadım.
Siz, GetCursorPos fonksiyonu ile "PIXEL" cinsinden ekran koordinatlarını elde ediyorsunuz. PIXEL dediğimiz şey de sizin, bilgisayarınızın ekran çözünürlüğünde görüntülenen birimler.

UserForm'un görüntülerken kullanacağınız koordinat birimi ise POINT'dir. Yani, "Pixel" cinsinden değerleri, POINT cinsine çevirmeniz gerekir.
Bu dediğinizi tersini ben anladım biraz kafam karıştı. lngCurPos.y * 0.75 yaparak buluyorum. yukarıdaki bahsettiğinize göre lngCurPos.y = Pixel oluyor lngCurPos.y * 0.75= POINT oluyor. Doğru mudur?
Pixeli POINT'e çevirmiş oluyorum. Pixel * 0.75 = POINT . Ancak, aşağıdaki bahsettiklerinizden de tam tersini anladım. Oysa aşağıdan anladığım
POINT * 0.75 = Pixel. Doğrusu bu olsa gerek. Öyle değil mi?
Pixel ve Point'in ağababası ise TWIP denilen mini minnacık başka bir birimdir.

TWIP olarak;

1 Pixel = 15 Twip
1 Point = 20 Twip 'tir.

Bu bağlantıya göre;

1 Point = 15/20 Pixel yani 0.75 Pixel 'dir.

Sizin deneme yanılma yolu ile bulduğunuz 0.75 çarpanının aslı da budur.

.

Herşeyin için çok teşekkürler.
 
Excel sütun genişliğini değiştirir iken "Genişlik: 100,00 (705 Piksel)" diyor.
Bu kısmı anlayamadım.

Eğer yeni bir Excel Çalışma kitabı açarsanız (-ki bu durumda otomatik olarak yeni bir Çalışma sayfası da oluşur) veya varolan bir Çalışma Kitabına, yeni bir Çalışma Sayfası ilave ederseniz;

ve A sütununu 100,00 (705 Pixel) genişliğe ayarlarsanız, bunun etkisi şudur.

Fontla hiçbirşekilde oynamadığınız (yani default yazıtipi kullandığınız varsayımı ile),

A sütunun herhangi bir hücresine, 0-9 karakterlerinden 100 adet yazabilirsiniz.

Yani A sütunundaki herhangi bir satıra, 0-9 arasındaki rakamlardan oluşan, 100 karakter uzunluğunda bir metin veya sayı girebilirsiniz. (Not : Sayı -Numerik- olarak, 100 basamak girmeniz mümkün değildir)

Örneğin aşağıdaki resimde; 6.00 (47 pixel) olarak görüntülenen G sütununa, 6 karakterden oluşmuş "123456" metnini (sayısını) yazabilirsiniz. 7 karakter yazdığınızda, ya görüntülenmeyecektir (sayılarda) ya da ilk 6 karakter görüntülenecektir

sutun_karakter.jpg


Mantık olarak da bir sütun genişliğini ayarlarken; kontrol edeceğiniz şey, o sütunun hücrelerinde yazan metnin tam olarak görünüp görüntülenmediğini kontrol etmektir.

Excel bunun için, sütun genişliklerini ayarlarken size sütunun genişliğini pixel olarak verirken, aynı zamanda "Ortalama Karakter Genişliği/Yaklaşık Metin Uzunluğu" ile de desteklemektedir.

Bir Çalışma sayfasındaki Satırlar için ise; ana düşünce, yazdığımız fontun büyüklüğünü gösterip göstermediğini kontrol etmektir.

Yazı Tipinin büyüklüğünü genel söylem olarak "Punto" ile ifade ederiz. "Punto"nun hangi dilden alındığını veya etimolojisini araştırmadım ama muhtemelen "Point" den evrilmiş ve Türkçeleşmiş bir kavram.

Excel'in satır yüksekliğini ayarlarken gösterdiği birim de, pixelle birlikte Point (Punto) değeridir.

Aşağıdaki resimde; 13.Satırın yüksekliği yaklaşık olarak 22 (21.75) Punto/Point ve 29 Pixeldir.

satir_point.jpg


Satırın bu yükseklik değeri ile; 13.Satıra, 22 Punto büyüklüğünde yazı yazarsanız, tam olarak görüntülenir. Yükseliği 22 point olarak ayarlanan bir satıra 24 punto ile yazarsanız, metin tam olarak görüntülenmeyecektir.

Her na kadar, siz yazı yazdığınızda Excel bunları otomatik olarak algılayıp, kendi ayarlamalarını yapsa da, işin asıl mantığı budur.

Bu dediğinizi tersini ben anladım biraz kafam karıştı. lngCurPos.y * 0.75 yaparak buluyorum. yukarıdaki bahsettiğinize göre lngCurPos.y = Pixel oluyor lngCurPos.y * 0.75= POINT oluyor. Doğru mudur?

Evet, doğrudur. Ben yazarken biraz acele ettim ve dikkatsizliğim nedeniyle pixel ve point eşitliğini size ters verdim.

Bir önceki mesajımda yazdığım, şu satırın ;
1 Point = 15/20 Pixel yani 0.75 Pixel 'dir.

düzeltilmiş hali şöyle olacaktır.

1 Pixel =15/20 Point yani 0.75 Point'dir.

Aşağıdaki resim, karşılaştığınız durumu, daha iyi ifade eder sanırım.

pixelpoint.jpg


İyi çalışmalar.

.
 
Eğer yeni bir Excel Çalışma kitabı açarsanız (-ki bu durumda otomatik olarak yeni bir Çalışma sayfası da oluşur) veya varolan bir Çalışma Kitabına, yeni bir Çalışma Sayfası ilave ederseniz;

ve A sütununu 100,00 (705 Pixel) genişliğe ayarlarsanız, bunun etkisi şudur.

Fontla hiçbirşekilde oynamadığınız (yani default yazıtipi kullandığınız varsayımı ile),

A sütunun herhangi bir hücresine, 0-9 karakterlerinden 100 adet yazabilirsiniz.

Yani A sütunundaki herhangi bir satıra, 0-9 arasındaki rakamlardan oluşan, 100 karakter uzunluğunda bir metin veya sayı girebilirsiniz. (Not : Sayı -Numerik- olarak, 100 basamak girmeniz mümkün değildir)

Örneğin aşağıdaki resimde; 6.00 (47 pixel) olarak görüntülenen G sütununa, 6 karakterden oluşmuş "123456" metnini (sayısını) yazabilirsiniz. 7 karakter yazdığınızda, ya görüntülenmeyecektir (sayılarda) ya da ilk 6 karakter görüntülenecektir

sutun_karakter.jpg


Mantık olarak da bir sütun genişliğini ayarlarken; kontrol edeceğiniz şey, o sütunun hücrelerinde yazan metnin tam olarak görünüp görüntülenmediğini kontrol etmektir.

Excel bunun için, sütun genişliklerini ayarlarken size sütunun genişliğini pixel olarak verirken, aynı zamanda "Ortalama Karakter Genişliği/Yaklaşık Metin Uzunluğu" ile de desteklemektedir.

Bir Çalışma sayfasındaki Satırlar için ise; ana düşünce, yazdığımız fontun büyüklüğünü gösterip göstermediğini kontrol etmektir.

Yazı Tipinin büyüklüğünü genel söylem olarak "Punto" ile ifade ederiz. "Punto"nun hangi dilden alındığını veya etimolojisini araştırmadım ama muhtemelen "Point" den evrilmiş ve Türkçeleşmiş bir kavram.

Excel'in satır yüksekliğini ayarlarken gösterdiği birim de, pixelle birlikte Point (Punto) değeridir.

Aşağıdaki resimde; 13.Satırın yüksekliği yaklaşık olarak 22 (21.75) Punto/Point ve 29 Pixeldir.

satir_point.jpg


Satırın bu yükseklik değeri ile; 13.Satıra, 22 Punto büyüklüğünde yazı yazarsanız, tam olarak görüntülenir. Yükseliği 22 point olarak ayarlanan bir satıra 24 punto ile yazarsanız, metin tam olarak görüntülenmeyecektir.

Her na kadar, siz yazı yazdığınızda Excel bunları otomatik olarak algılayıp, kendi ayarlamalarını yapsa da, işin asıl mantığı budur.



Evet, doğrudur. Ben yazarken biraz acele ettim ve dikkatsizliğim nedeniyle pixel ve point eşitliğini size ters verdim.

Bir önceki mesajımda yazdığım, şu satırın ;


düzeltilmiş hali şöyle olacaktır.

1 Pixel =15/20 Point yani 0.75 Point'dir.

Aşağıdaki resim, karşılaştığınız durumu, daha iyi ifade eder sanırım.

pixelpoint.jpg


İyi çalışmalar.

.

Selam Sayın Ferhat Hocam,
Bu kadar detaylı, açıklayıcı ve samimi yardımlarınız için çok çok teşekkür ederim. Ne kadar minnet duysam azdır. Sizi, küçük bir bilgi edineceğim diye fazlaca yordum, hakkınızı helal ediniz.
Sizi fazla meşgul ettiğimden dolayı utanır gibi olsam da, ilerleyen günlerde bu forumdan ayrılmamanızı, sık sık ziyaret ettiğinizde benim sorularımı (İnşallah) görüp, engin yardımlarınızı esirgememenizi istemek pek fazla arsızlık olamasa gerek diye düşünür, Saygılarımı sunarım.
Teşekkürler..
 
Geri
Üst