Uygulamalar 4 IsMissing (Değişken) Visual Basic te fonksiyon veya alt programlara giriş parametresi olarak Optional deyimi kullanılırsa o parametre kullanılmadan da o fonksiyon çağrılabilir. IsMissing fonksiyonu bu tip parametrelerin verilip verilmediğini öğrenmek için kullanılır. Dönen değer True ise bu parametre kullanılmadan fonksiyon çağırılmıştır. Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Prosedürlere girecek parametreleri belirleyebilirsiniz. İstenirse bazı parametreler optional olarak tanımlanabilir. Bu durumda prosedür o parametreler kullanılmadan da çağırılabilir. Public Function f(x,y,optional t, Optional k) End Function Yukarıdaki tanımda fonksiyon çağrılırken ilk iki parametre mutlaka kullanılmalıdır. Diğer iki parametre ise Optional olarak tanımlandığı için istenirse kullanılmayabilir. Bu fonksiyon aşağıdaki şekillerde çağrılırsa parametrelerin alacakları değerler şöyle olur. F(5,4) x=5, y=4, t:yok, k:yok F(5,4,2) x=5, y=4, t=2, k:yok F(5,4,2,3) x=5, y=4, t=2, k=3 F(5,4,,3) x=5, y=4, t:yok, k=3 Aradaki optional parametreler kullanılmayacaksa, yazılarak geçilir. 1. Kare çiz isimli bir prosedür oluşturalım. Koordinatları, rengi ve genişliği verilen kareyi çizelim. Bunun için form üzerine Caption ismi Kare çiz olan bir CommandButton ekleyelim.oluşturacağımız programın kodları şu şekildedir. Public Sub kareciz(x, y, g, Optional Renk, Optional dolu) If (Not IsMissing(Renk)) And (Not IsMissing(dolu)) Then Line (x, y)-(x + g, y + g), Renk, BF ElseIf (Not IsMissing(Renk)) And IsMissing(dolu) Then Line (x, y)-(x + g, y + g), Renk, B ElseIf IsMissing(Renk) And (Not IsMissing(dolu)) Then Line (x, y)-(x + g, y + g),, BF Else Line (x, y)-(x + g, y + g),, B Private Sub Command1_Click() kareciz 100, 100, 250, 5555 kareciz 400, 100, 250, 1 kareciz 700, 100, 250, 5555, 1 kareciz 1100, 100, 250 Program çalıştırıldığında ekranda şu şekilde görünür. 1
Bir fonksiyona girecek parametre sayısı belli değilse o parametre ParamArray deyimi ile bir dizi olarak tanımlanır. Bu durumda kullanıcı o parametre yerine geçecek istediği kadar parametre kullanabilir. Public Function h (ParamArray x( )) End Function Burada fonksiyona verilecek tüm parametreler x dizisine atanır. Kaç parametrenin kullanıldığı Ubound fonksiyonu ile öğrenilebilir. Eğer Ubound fonksiyornunda -1 dönüyorsa hiçbir parametre kullanılmamıştır. h(3,4,,2) Ubound(x)=3, x(0)=3, x(1)=4, x(2)=yok, x(3)=2 h() Ubound(x)=-1, x(0)=yok 2. n tane sayının karelerinin toplamını bulacak bir fonksiyon oluşturalım. Programın kodları şu şekildedir. Public Function h(paramarray x()) Dim t, i For i = 0 To UBound(x) If Not IsMissing(x(i)) Then t = t + x(i) ^ 2 Next h = t End Function Show Print h() Print h(3, 4,, 2, 4, 5, 6, 7, 8, 9, 0, 2) Print h(5, 12) Program çalıştırıldığında şu şekilde görünür: Bilgi Giriş ve Mesaj Pencereleri Tip Pencerenin içine konacak seçenekler, iconlar, pencerenin önceliğini ve varsayılan seçenekleri belirten bir sayıdır. Tip parametresini şu şekilde formüle edersek, tip = secenek + icon + varsayılan + oncelik Secenek parametresi mesaj kutusunun tipini belirtir. Icon parametresi kullanıcının dikkatini çekebilmek için mesaja uygun bir resmin gösterilmesinde kullanılır. Varsayılan düğme parametresi ise kullanıcının yanlış seçim yapmasını önlemek için açılan pencerede hangi düğmenin aktif olacağını belirler. Oncelik parametresinin 4096 olması durumunda mesaj kutusunda herhangi bir seçim yapılmadan diğer uygulamalara geçiş yapılamaz. Cevap verilmesinin sistem için kesinlikle gerekli olduğu durumlarda kullanılabilir. 2
Bu dört ayrı seçenek birbiriyle toplanarak MsgBox fonksiyonunun ikinci parametresi olarak kullanılır. 3. GEREKSİZ.SİL isimli bir dosyanın silinip silinmeyeceğini soran bir program oluşturalım. Gerekli kodlar şu şekildedir: Dim cevap, dosya dosya = "GEREKSİZ.SİL" cevap = MsgBox(dosya + "dosyası silinsin mi?", 4 + 32 + 256, "Silinecek") If cevap = 6 Then Kill dosya Program çalışınca şu şekilde görünür: 3
4. Program kapatılırken çıkmak isteyip istemediğini soracak bir mesaj kutusu oluşturalım, gerekli kod şöyledir: Private Sub Form_Unload(Cancel As Integer) Dim cevap cevap = MsgBox("Programdan çıkmak istiyor musunuz?", 4 + 32, "Çıkış") If cevap = 6 Then MsgBox ("iyi günler") Else Cancel = True Program çalıştığında şu şekilde görünecektir: 5. Kullanıcının bir text kutusuna gireceği para miktarının içindeki banknotların sayısını bulacak bir program yazalım. Program için şu formu hazırlayalım. Programın kodları: Private Sub Command1_Click() Dim i, j Cls 4
i = Val(Text1.Text) j = Int(i / 100) Print j; "tane 100 YTL" i = i Mod 100 j = Int(i / 50) Print j; "tane 50 YTL" i = i Mod 50 j = Int(i / 20) Print j; "tane 20 YTL" i = i Mod 20 j = Int(i / 10) Print j; "tane 10 YTL" i = i Mod 10 j = Int(i / 5) Print j; "tane 5 YTL" i = i Mod 5 Print "Kalan"; i; "tane 1 YTL" Private Sub Command2_Click() End Program çalıştırıldığında şu şekilde görünür: 5
6. Formun üzerine daire çizecek bir program yazalım. Kodlar şu şekildedir: Private Sub Form_Click() DrawWidth = 2 Circle (1000, 1000), 500 7. Text kutusuna şifre yazılan bir örnek oluşturalım. Bunun için form üzerine bir text box ekleyelim. Text box ın Password Char özelliğine * işareti yazalım. Ayrıca şifre doğru yazıldığında açılacak olan 2. bir form ekleyelim. Kodlar şu şekildedir: Text1.Text = "" Text1.PasswordChar = "*" Private Sub Text1_KeyPress(KeyAscii As Integer) Static Sifre As String Static Tur As Integer Sifre = Sifre + Chr$(KeyAscii) If Len(Sifre) = 5 Then Tur = Tur + 1 If Tur > 2 Then MsgBox ("Şifreniz yanlış") End If Sifre = "basic" Then MsgBox ("Şifreniz doğru") KeyAscii = 0 Sifre = "" Form2.Show Else Text1.Text = "" KeyAscii = 0 Sifre = "" 8. Liste kutusundan eleman seçen, listeye eleman ekleyen, listeden eleman silen ve tüm listeyi silen bir program yazalım. Private Sub Command1_Click() List1.AddItem Text1.Text Private Sub Command2_Click() List1.RemoveItem List1.ListIndex Private Sub Command3_Click() List1.Clear 6
Private Sub Command4_Click() End Private Sub Form_Click() MsgBox (List1.Text) 9. Açılan liste kutusu (ComboBox) kullanımını gösteren bir örnek yapalım. Bunun için gerekli kodlar şöyledir: Combo1.AddItem "Ekonometri" Combo1.AddItem "İşletme" Combo1.AddItem "İktisat" Combo1.AddItem "Çalışma Ekonomisi" Combo1.AddItem "Maliye" Combo1.AddItem "Kamu Yönetimi" 7