FORMLARA UYGULANAN OLAYLAR
Mous'un tıklatılması, hareket ettirilmesi, formun boyutlarının değiştirilmesi, Enter'e bası
lması gibi işlemlerin her biri bildiğiniz gibi birer olaydır. Her nesne için mutlaka tanımlı birkaç olay mevcuttur. Bu bölümde daha önce hazırlanan veya çalışma sırasında özelliklerinde değişiklik yapılan bir forma uygulanabilecek olaylar hakkında bilgi verilecektir. Visual Basic tarafından otomatik olarak tanımlanan
olayların adlarını görmek için formun kod penceresi açılır. Kod penceresinde iki
tane liste kutusu mevcuttur. Object liste kutusunda projede kullanılan nesneler,
Procedure liste kutusunda ise bu nesnelere uygulanabilecek olaylar (Events)
listelenir. Konumuz formlar için önceden tanımlı olaylar olduğu için Object
liste kutusundan Şekil 12.1'de görüldüğü gibi form nesnesini seçeceğim.
Şekil 12.1: Object liste kutusundan Form seçme
Şekil 12.2: Formlar için tanımlı olayların listesi
Proc listesinden istenilen olay seçilerek enter basılırsa, Visual Basic
tarafından otomatik olarak seçilen olaya ait bir yordam oluşturulur. Örneğin,
Object liste kutusunda form nesnesi seçili iken proc liste kutusundan Click
olayını seçersem Şekil 12.3'deki ekran görüntüsünü alırım.
Şekil 12.3: Form_Click yordamı
Gördüğünüz gibi Form_Click() adında bir yordam oluşturulmuştur. Bu yordamlar içerisine yaptırılmak istenen işlemlere göre program satırları yazılır. Şimdi bu olayların hangi durumlarda aktif hale geçtikleri üzerinde duralım.
12.1. Form-Load() yordamı :
Bir formun belleğe yüklenmesi veya Load edilmesi bir
olaydır. Buna göre formun yüklenmesi sırasında işletilmesini istediğiniz program
satırlarını Şekil 12.4'deki gibi Form_Load() yordamına yazmanız gerekir. Daha
önceki bölümlerde kayıt girişi amacıyla hazırladığımız Giriş adlı projede formun
yüklenmesi ile birlikte kayıt yazılacak dosyayı açıyorduk ve dosyadaki kayıt
sayısını buluyorduk.
Şekil 12.4: Programın yüklenmesi ile işletilecek program satırları
12.2. Form_Click() ve Form_DblClick() yordamı :
Şekil 12.5:
Örnek programŞekil 12.6: Programın çalıştırıldıktan sonraki ekran görüntüsü
12.3. Form_Activate() ve Form_Deactivate() yordamı :
Windows ortamında açık durumda olan ve o an için ekranda görünen bir pencereden diğerine geçmek için geçeceğiniz pencere üzerinde tıklama yapmanın yeterli olduğunu biliyorsunuz. Bu olay Windows'un sunduğu bir imkandır. Benzer durum Visual Basic projeleri dahilinde çalışan formlar için de geçerlidir. Ekranda aynı anda birden fazla form varken, açık durumda olan bir formdan diğerine geçmek için formun herhangi bir yerinde tıklama yapmanız yeterli olacaktır. Buna göre form yüklendikten sonra aktif hale gelir. Bir anda iki form aktif (Activate) olamayacağına göre diğer form da pasif (Deactivate) halde olur. Form aktif durumda iken yapılması gereken işlemlere uygun program satırlarını Form_Activate() yordamına yazmalısınız. Form pasif duruma geçtiğinde yapılması gereken işlemlere uygun program satırlarını da Form_Decativate() yordamına yazmalısınız. Örnek olması için hazırlayacağım projede iki tane form kullanacağım. Programı çalıştırdığımda formlardan hangisi aktif ise o form üzerinde 'Aktif Form', pasif durumda olan formun üzerinde ise 'Pasif Form' yazmasını istiyorum. Bunun için Form2'e ait kod penceresine Şekil 12.7'deki program satırlarını yazdım.
Şekil 12.7: Form2'ye ait kod penceresi
Şekil 12.8:
Form1'e ait kod penceresi
Şekil 12.9:
Programın çalışması sırasındaki ekran görüntüsü
Şekil 12.10:
Form2 aktif hale getirildikten sonraki ekran görüntüsü Kısaca özetlersek, pencereler arasında geçiş yaparken üzerinde tıklanan pencere veya form aktif duruma geçer, bu sırada formda Activate olayı gerçekleşir. Pencere aktif duruma geçince Form_Activate() yordamı altındaki program satırları işletilir. Benzer şekilde pasif duruma getirilen formda ise Deactivate olayı gerçekleşir ve Form_Deactivate() yordamı altındaki program satırları işletilir.12.4. Form_Unload() yordamı :
Tek forma sahip Visual Basic projesi çalıştırılır çalıştırılmaz projenin tek formu belleğe yüklenip aktif duruma getirilir. Bu sırada formla ilgili olarak hem Load hem de Activate olayları meydana gelir. Benzer şekilde projenin çalışması sona erdirilirken form bellekten silinir. Bu sırada ise Unload olayı meydana gelir ve Form_Unload() yordamına yazılan program satırları işletilir.
Şekil 12.11: Çıkış diyalog
kutusu Bunun için yazılması gereken
program satırları Şekil 12.12'deki gibi Form_Unload() yordamına yazılmalıdır.
Şekil 12.12
MsgBox() fonksiyonu tarafından ekrana getirilen diyalog kutusunda kullanıcı Tamam düğmesini tıklarsa MsgBox() fonksiyonu geriye 1 değerini, İptal düğmesini seçerse 2 değerini döndürür. CANSEL değişkeninin değeri -1 olursa Unload olayı iptal edilir. Buna göre İptal düğmesi tıklanırsa CANSEL değişkenine -1 değeri aktarılarak çıkma işleminden vazgeçilir.12.5. Form_Resize() yordamı :
Formların boyutlarında değişiklik yapılması Resize olayını meydana getirir. Form boyutlarındaki değişime bağlı olarak gerçekleştirilmek istenen işlemler Form_Resize() yordamına yazılır. Şekil 12.13'deki örnek projede formun genişliği ve yüksekliği ekranda görülmektedir ve formun boyutlarındaki her değişim ekrana yansımaktadır.
Şekil 12.13
Şekil 12.14: Program çalıştırıldıktan sonraki ekran görüntüsü
Şekil 12.15:
Form boyutlarında değişiklik yaptıktan sonra Gördüğünüz gibi formun boyutlarını değiştirdiğimizde Resize olayı gerçekleşmektedir ve Form_Resize() yordamı içindeki program satırları işletilmektedir.12.6. Form_KeyPress() yordamı :
Çalışma sırasında klavyenin yön
ve kontrol tuşları dışında herhangi bir tuşa basılması durumunda KeyPress olayı meydana gelir. KeyPress olayı için Visual Basic tarafından hazırlanan yordama basılan tuşun Ascii kodu parametre olarak gönderilir.KeyPress olayı için basit bir örnek verelim. Bu örneğimizde, çalışma sırasında basılan tuşun hangisi olduğunu ekrana yazan Şekil 12.16'daki program satırlarını yazalım.
Şekil 12.16
Şekil 12.17
12.7. Form_KeyDown() ve Form_KeyUp() yordamı :
KeyDown ve KeyUp olayları işlev bakımından KeyPress olayına benzemektedirler. KeyDown olayı tuşa basıldığı zaman, KeyUp olayı ise tuşun serbest bırakıldığı sırada meydana gelir. KeyPress olayında tuşa basma ve bırakma gibi bir ayırım yoktu. Bu iki olayı temsil eden yordamlar dışarıdan KeyCode ve Shift adında iki parametre almaktadır. KeyCode parametresine, basılan tuşun Ascii kodu aktarılır, Shift parametresine ise bu olay m
eydana geldiği zaman Shift, Alt ve Ctrl tuşlarının basılı durumda olup olmadığı konusunda bilgi aktarılır. Mesela KeyDown olayı sırasında Alt tuşu basılı durumda ise Shift değişkenine 4 değeri aktarılır. Shift parametresinin, tuşların basılı olma durumlarına göre aldığı değerler Tablo 12.1'de verilmiştir.
Shift parametresinin değeri |
Tuşların Basılı olma durumları |
0 |
Shift, Ctrl ve Alt tuşları basılı değil |
1 |
Shift tuşu basılı |
2 |
Ctrl tuşu basılı |
3 |
Shift ve Ctrl tuşları basılı |
4 |
Alt tuşu basılı |
5 |
Shift ve Alt tuşları basılı |
6 |
Ctrl ve Alt tuşları basılı |
7 |
Shift, Ctrl ve Alt tuşları basılı |
Tablo 12.1: Shift parametresinin aldığı değerler
12.8. Form_MouseDown() yordamı :
Bu olay, çalışma sırasında formun üzerinde iken mouse'nin herhangi bir tuşuna basılması ile meydana gelir. Form_MouseDown() yordamı, Button, Shift, X ve Y olmak üzere dışarıdan 4 tane parametre almaktadır.
Button parametresi : MouseDown olayı sırasında mouse'nin hangi tuşuna basıldığı konusunda bilgi verir. Sağ tuşa basılmış ise Button parametresine 1, sol tuşa basılmış ise 2 değerini aktarılır. Her iki tuşa da basılmış ise Button parametresi 3 değerini alır.Shift parametresi : MouseDown olayı meydana geldiği zaman Shift, Ctrl ve Alt tuşlarının basılı durumda olup olmadıkları konusunda bilgi bulunur.
Şekil 12.17
Programı
çalıştırıp formun herhangi bir yerinde mouse ile tıklarsanız mouse'nin konumu
Şekil 12.18'de görüldüğü gibi forma yazılır.
Şekil 12.18
12.9. Form_MouseUp() yordamı :
MouseUp olayı, kullanıcı farenin basılı durumda olan tuşundan parmağını kaldırdığı zaman meydana gelmektedir. Form_MouseDown() yordamında olduğu gibi MouseUp yordamı da dışarıdan 4 tane parametre almaktadır. Bu parametreler işlevi MouseDown olayına ait parametrelerle aynıdır.
12.10. Form_MouseMove() yordamı :
MouseMove olayı fare işaretinin form üzerindeki
konumu değiştiği zaman meydana gelmektedir. Çalışma sırasında farenin yeri
değiştirildikçe bu olay meydana gelir. Dışarıdan 4 tane parametre almaktadır. Bu
parametreler MouseDown ve MouseUp olaylarındaki parametrelerle aynıdır.
MouseMove olayına Şekil 12.19'daki örneği verebiliriz.
Şekil 12.19
Şekil 12.20
12.11. Form_Paint() yordamı :
Şekil 12.21:
Form1'e ait kod penceresi
Şeki
l 12.22: Programı çalıştırdıktan sonraki ekran görüntüsü Form1 üzerinde mouse ile tıkladığımda ise Şekil 12.23'deki ekran görüntüsünü aldım.Şekil 12.23: Form1 üzerine mouse ile tıkladıktan
sonra
Şekil 12.24: Form1 penceresini tekrar aktif
hale getirdikten sonra