108
VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldığında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox(" Merhaba ") End Sub ÖRNEK 2: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Merhaba " & TextBox1.Text) End Sub ÖRNEK 3: Aşağıdaki çıktıyı veren programı yazınız. Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Toplam = " & Val(TextBox1.Text) + Val(TextBox2.Text)) End Sub

VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Embed Size (px)

Citation preview

Page 1: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

VISUAL BASIC.NET

ÖRNEK 1:Tamam butonuna basıldığında “MERHABA” mesajını veren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox(" Merhaba ") End Sub

ÖRNEK 2: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click_1( ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Merhaba " & TextBox1.Text) End Sub

ÖRNEK 3: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click_2( ByVal sender As System.Object, ByVal e As System.EventArgs) MsgBox("Toplam = " & Val(TextBox1.Text) + V al(TextBox2.Text)) End Sub

Page 2: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK 4: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click_3( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(TextBox1.Text & " Sen " & 2007 - Val (TextBox2.Text) & " Yaşındasın") End Sub

ÖRNEK 5: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click_4( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label3.Text = " Sayıların Toplamı = " & Val (TextBox1.Text) + Val(TextBox2.Text) End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Label3.Text = " Sayıların Farkı = " & Val(T extBox1.Text) - Val(TextBox2.Text) End Sub

ÖRNEK 6: Aşağıdaki çıktıyı veren programı yazınız.

Page 3: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click_5( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label3.Text = Val(Label3.Text) + Val(TextBo x1.Text) End Sub

ÖRNEK 7: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim isim As String Dim soyisim As String isim = TextBox1.Text soyisim = TextBox2.Text Label3.Text = "Merhaba " & isim & " " & soy isim End Sub

ÖRNEK 8: Aşağıdaki çıktıyı veren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim s1, s2, sonuc As Integer s1 = Val(TextBox1.Text) s2 = Val(TextBox2.Text) sonuc = s1 + s2 TextBox3.Text = sonuc End Sub

Örnek: Şekildeki gibi bir çıktı verecek programı yazın

Page 4: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles Button1.Click

Dim Adsoyad As String

Dim Vize, Final As Integer

Dim Ortalama As Double

Adsoyad = TextBox1.Text

Vize = Val(TextBox2.Text)

Final = Val(TextBox3.Text)

Ortalama = Vize * 0.4 + Final * 0.6

If (Ortalama >= 60 And Ortalama <= 100 And Final >= 50) Then

ListBox1.Items.Add(Adsoyad & ": " & Ortalama)

ElseIf (Ortalama >= 0 And Ortalama < 60 Or Final < 50) Then

ListBox2.Items.Add(Adsoyad & ": " & Ortalama)

Else

MsgBox("Hatalı işlem")

End If

End Sub DEĞİŞKENLER VE VER İ TİPLERİ Değişkenler bir bilgiyi hafızada tutmak için kullanılır. Değişkenlerin tanımlanma zorunlu istenirse kapatılabilir. Bunun için kodların en başına Option Explicit Off deyimi kullanılır. Fakat kesinlikle değişkenlerin tanımlanma zorunluluğunun kapatılmaması tavsiye edilir. Aşağıdaki örneği inceleyin

Page 5: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Örnek: Bir butonun Click’ne aşağıdaki kodları yazın. Option Explicit off ifadesini tüm kodların en

yukarısına yazın.

Option Explicit Off Public Class Form1 .... Private Sub Button1_Click(... ) a = 5 b = 6 aratoplam = 1000 geneltoplam = a * b + aratplam MsgBox(geneltoplam) End Sub End Class

Burada dikkat edilirse yanlışlıkla “aratplam” ifadesi kullanılmıştır. Bu ifade degişken tanımlama zorunluluğu kapatıldığı için hata vermemiş ve sonucu 30 olarak göstermiştir. Eğer degişken tanımlama zorunlu olsaydı bu ifade tanımlanmamış olacağı için hata verecekti ve böylece programdaki yanlışlık düzeltilecekti. Bu nedenle kesinlikle değişkenleri tanımlayın. DEĞİŞKEN TANIMLAMA : VB de değişken tanımlamaları Dim ile yapılır. Şu şekilde kullanılır. Dim degişken_ismi As tip Burada degişken_ismi ni biz veririz. Tip ise aşağıdaki değişken tiplerinden birisi olabilir. Sayısal Tipler: Byte, Short, Integer, Long, Single, Double, Decimal String Tipler: String, Char Mantıksal Tipler: Boolean Tarih Tipi: Date Birden fazla degişkeni tek bir satırda da tanımlayabiliriz. Dim x,y,z As Integer a,b As String Eğer Dim ifadesinden degişkenin tipi verilmezse degişken tüm degişkenleri içine alan Variant tipinde tanımlanır. Fakat Variant degişkenler programı çok yavaşlatır kullanılması tavsiye edilmez. Dim x,y,z VB de degişkenler bir nesne olarak işlem görür. Yani tanıladığınız bir String, string tipinde bir nesnedir ve string sınıfının bütün özellik ve metodları değişken üzerine uygulanabilir. Bu konu ileride nesneye yönelik programlamada ele alınacaktır.

Örnek: Örnegin string tipinde bir degişken tanımlayın ve bu degişkene bir isim atayın. Daha sonra isimin boyunu ekranda string nesnesinin özelliğini kullanarak gösterin. (özellik ve metodlar “.” Koyunca kendiliğinden çıkar).

Private Sub Button1_Click(... ) Dim isim As String isim = "Ali"

Page 6: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

MsgBox(isim.Length) End Sub

Bu örnekte sonuç 3 olarak çıkar. Degişken üzerinde işlem yapmak için o degişkenin tanımlandığı sınıfa ait özellikler kullanılabileceği gibi, o sınıfa ait fonksiyonlarda kullanılır. Aynı örneği Strings sınıfına ait Len() fonksiyonu kullanarak yapalım.

Örnek: Örnegin string tipinde bir degişken tanımlayın ve bu degişkene bir isim atayın. Daha sonra isimin boyunu ekranda string nesnesinin özelliğini kullanarak gösterin. (özellik ve metodlar “.” Koyunca kendiliğinden çıkar).

Private Sub Button1_Click(... ) Dim isim As String isim = "Ali" MsgBox(Len(isim)) End Sub

Yine sonuç 3 çıkar. SAYISAL T İPLER: Tüm sayısal değişken ve aralıklarını tablo şeklinde gösterelim.

Adı Hafıza(Byte) Alabileceği değer aralığı Tanımı Boolean ? 2 byte 1 (true) yada 0 (false) degerlerini alır 1 ve 0 değerlerini alır.

Byte 1 Byte 0 255

İşaretsiz tam sayı tipidir.

Short 2 Byte -32.768 +32.767

İşaretli tam sayı tipidir.

Integer 4 Byte -2.147.483.648 +2.147.483.647

İşaretli tam sayı tipidir.

Long 8 Byte -9.223.372.036.854.775.808 +9.223.372.036.854.775.807

İşaretli tam sayı tipidir.

Single 4 Byte ± 3,402823 x1038

± 1,401298 x 10-45 Ondalık sayı tipidir.

Double 8 Byte ± 1,79769313486232 x10308

± 4,94065645841247 x 10-324 Ondalık sayı tipidir.

Decimal 14 Byte ±79.228.162.514.264.337.593.543.950.335 ±7.9228162514264337593543950335

Tam sayılar için Ondalık Sayılar için

Sayı büyüklüğünün önemli olduğu durumlarda Single ve Double kullanılır. Basamak sayısının önemli olduğu durumlarda ise Decimal kullanılır. Yukarıda dikkat edilirse Single 7 basamaktan sonra, Double ise 15 basamaktan sonra sayının gerisini 10 üzerili olarak saklamaktadır. Oysa Decimalda ise basamak sayısı 29 basamağa kadar tutulabilmektedir. Bunun için aşağıdaki örneği yapın.

Page 7: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Örnek: 12345678901234567890 sayısını Single, Double ve Decimal değişken kullanarak üzerine 5 sayısını ekleyip toplayınız.

Private Sub Button1_Click(... ) Dim x As Single , y As Double , z As Decimal x = 1234567890123456789 y = 1234567890123456789 z = 1234567890123456789 x = x + 5 y = y + 5 z = z + 5 MsgBox("x=" & x) MsgBox("y=" & y) MsgBox("z=" & z)

End Sub

Görüleceği gibi çıkan sonuçlar şöyle olacaktır. x=1,2345678E+18 = 1234567800000000000 y=1,234567890123456E+18=1234567890123456000 z=12345678901234567894 x ve y sonucu yanlış verdi fakat z doğru çıktı. Bu nedenle hassa matematiksel işlemlerde ve parasal işlemlerde Decimal kullanılmalıdır. Sınır Aşımı: Girilen sayı değerleri değişkenin sınırları dışına çıktığında “OverFlowException” hatası verir. Bu tip hataların önüne geçmek için uygun tiplerde tanımlamalıyız yada Try-Catch bloğun yazarak oluşacak hatayı yakalamalıyız. Aşağıdaki örneği uygulayınız.

Örnek: Byte olarak tanımlanan bir değişkene önce 1 den 500 kadar sayıları yükleyeme çalışın. Sayı 255’i geçtiğinde hata verir. Hata mesajını göstermeden kullanıcıya “sayı 255’i aşıyor” uyarısı veren bir program yazın.

Private Sub Button1_Click( ...)

Dim i As Integer Dim x As Byte Try

For i = 1 To 500 x = i Next

Catch MsgBox("Sayı 255'i a şıyor")

End Try End Sub

Page 8: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Oluşan hatanın kullanıcıya gösterilmemesi ve bir uyarı verilmesi için burada Try-Catch-End Try blogu kullanılmıştır. Hata oluşma ihtimali olan kodlar Try-Catch arasına, Uyarı mesajı ise Catch-End Try arasına yazılmıştır. Sayılarla İlgili Fonksiyonlar ve İşlemler: Sayılarla ilgili bazı standart fonksiyonlar ve işlemler aşağıda özetlenmiştir. • IsNumeric(değişken): Bu fonksiyon verilen değişkenin bir sayı olup olmadığını bildirir. Değişkenin içeriği

sayı ise geri dönen değer True olur. • Val(string): Bu fonksiyon stringin içerisindeki bilgiyi sayıya çevirir. İçinde geçersiz karakter bulursa

bulduğu yere kadar çevirir. • Fix(sayı): Sayının virgülden sonraki kısmını direk atar. • Math.Round(sayı,basamak_sayısı): Virgülden sonra kaç basamak yuvarlatmak isteniyorsa bu fonksiyon

kullanılabilir. 0 verilirse virgülden sonraki basamakların hepsi yuvarlatılır.

Örnek: Eski Türk lirasında 100000 TL nin altındaki paraların bir değeri yoktur. Girilen bir küsüratlı bir paranın 100000 altındaki değerlerini yuvarlatın.

Private Sub Button1_Click( ...) Dim para As Long

para = Val(TextBox1.Text) para = (Math.Round(para / 100000, 0) * 100000) Label1.Text = para

End Sub

Bunu gerçekleştirmek için sayı 100000 bölünür ve virgüllü hale getirilir. Virgülden sonraki sayılar yuvarlatıldıktan sonra tekrar 100000 çarpılır. Program çalıştırılırsa 12345678912 sayısı 12345700000 olarak çıkar.

• Format(sayı,biçim): Sayıları istediğimiz biçimde göstermeye yarar. Örnek: Format(Val(TextBox1.Text),

“##,## TL”) kodu girilen sayıyı ekranda her 3 haneye virgül atar ve sonuna TL yazar.

Örnek: Bir malın birim fiyatını Text kutusuna yazarken hatalı yazımı önlemek için her 3 basamakta bir nokta yazsın ve rakamlar sola yaslı olsun. Aynı zamanda her yazılan rakam sayının sonuna yazılsın (otomatik olarak sona gitsin). Bu sayı o malın adeti ile çarpıldığında sonucu yine noktalı göstersin ve sonuna TL ifadesini eklesin. Rakam yerine harf girildiğinde uyarı versin.

Private Sub Button1_Click( ...) Try Label5.Text = Format( CDec(TextBox2.Text) * CInt (TextBox3.Text), "##,## TL") Catch MsgBox("Geçersiz sayı girildi") End Try End Sub Private Sub TextBox2_TextChanged( ...)

Page 9: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Try TextBox2.Text = Format( CDec(TextBox2.Text), "##,##") TextBox2.SelectionStart = TextBox2.Text .Length Catch End Try End Sub

Burada Text kutularına yazılan string ifadeyi sayıya çevirmek için Val kullanılmamıştır. Çünkü Val binlik basamak olarak virgül kabul eder. Halbuki türkçede nokta kullanılır. Bunun yerine Windows’un türkçe ayarlarını tanıyan Cval, CDbl, Cdec dan biri kullanılır Örnek: Dışarıdan girilen bir sayı Türkçe para gösterim sistemine dönüştürüp bize göstersin

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sayi As Double Dim para As String sayi = Val(TextBox1.Text) para = Format(sayi, "###,###.##TL" ) TextBox2.Text = para End Sub • Rnd(): Bu fonksiyon 0 ile 1 arasında rastgele sayı üretir.

MsgBox(Rnd() 0 ile 1 arasında rastgele bir sayı MsgBox(Rnd() * 100) 0 ile 100 arasında rastgele bir sayı MsgBox(Int(Rnd() * 100)) 0 ile 100 arasında rastgele bir tam sayı

Genel formül: Rnd*(b-a) + a a ile b arasında rastgele bir sayı.

Bu fonksiyonlar denenirse her seferinde aynı sayıları ürettiği gözlenir. Bunu önlemek için Randomize() fonksiyonu kullanılır. Randomize fonksiyonu başlangıç referans sayısını belirler. Bunuda sistemin saatinden alır.

Örnek: 5 ile 15 arasında rastgele tamsayı üreten bir program yazın.

Private Sub Button1_Click( ...)

Page 10: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Randomize() MsgBox(Int(Rnd() * (15 - 5) + 5))

End Sub

Ödev: 0 dan 100 kadar bir rastgele sayı tutacak ve kullanıcının bu sayıyı bulmasını isteyecek basit bir sayı bulma oyunu hazırlayın. Bunu adam asmaca oyununa benzeterek resimli olarak yapıp süsleyin.

Örnek ÖDEV: Formun üzerine 1 tane buton ve 1 tane label ekleyin. Butona tıklayınca Rastgele şu şekilde bir sayı atsın. 23.4565656 gibi. Daha sonra bu sayıyı dönüştürüp 23.46 TL olarak göstersin. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

Randomize() 'Zamana bağlı olarak her seferinde rastgel sayı atar.

'Label1.Text = Int(Rnd() * 100) 'Tam sayı kısmını alır.

'Label1.Text = Fix(Rnd() * 100) 'Tam sayı kısmını alır.

'Label1.Text = Math.Round((Rnd() * 100), 2)

'Label1.Text = Format((Rnd() * 100), "##.## TL")

'Label1.Text = Format("{0:c}", (Math.Round(Rnd() * 100, 2)))

Dim a As String = (Rnd() * 100)

Label1.Text = a

Dim Dizi As String() = a.Split(New Char() {","c})

Dim parca As String

For Each parca In Dizi

ListBox1.Items.Add(parca)

Next

Dim sayi1 As String = parca(0)

Dim sayi2 As String = parca(1)

Dim yenisayi2 As Integer = Val(sayi2)

yenisayi2 = Math.Round(yenisayi2, 2)

Label2.Text = sayi1 & yenisayi2 & " TL"

Page 11: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End Sub

STRING TIPLER

Stringler üzerinde sayısal işlem yapılamayan ifadelerdir. Char ve String tip olmak üzere iki kısıma ayrılır. Char: İki baytlık bir karakter veri tipidir. İçinde sadece bir karakter barındırır. Fazla sayıda karakter ataması yapılırsa ilk karakteri dikkate alır. Geriye doğru silme yada Enter gibi Ascii kodu içinde bulunan karakterleride Chr() fonksiyonuyla birlikte kullanabilirsiniz. Örneğin enter tuşu için Chr(13) kullanabilirsiniz. Dim c1,c2, as Char c1=”A” c2=Chr(65) Msgbox(c1) Msgbox(c2) String: Karakter sınırı verilmezse 2 milyar karaktere kadar alabilir. İçerisine aldığı karakterler Unicode Stringlerdir. Unicode stringler uzak doğu dilleride dahil tüm dillerin karakterlerini kapsamaktadır. STRİNGLERLE İLGİLİ METODLAR : VB.Net de Stringler diğer tipler gibi birer nesnedir. String tipi değişkenin adı yazılıp nokta konduğunda o string üzerinde yapılabilecek özellik ve metodların (işlemlerin) bir listesi çıkar. Stringlerin iki adet özelliği (length, Chars) vardır. Diğerleri metoddur (string üzerinde yapılabilecek işlemleri gösterir). • Length(): Bu özellik Stringin uzunluğunu verir. [string.Length() ] • Chars(): Bu özellik Stringin istenen karakterini verir. İndis 0 dan başlar. [string.Chars(2) ]

Örnek: Bir TextBox’ın içine yazılan bir metindeki kelimeleri arada boşluk, virgül ve noktaları araştırarak yine aynı TextBox’ın içinde alt alta sıralasın.

Private Sub Button1_Click( ...) Dim metin, kelime As String Dim a As Char Dim i As Integer metin = TextBox1.Text TextBox1.Text = "" For i = 0 To metin.Length() - 1 a = metin.Chars(i) If a = " " Or a = "," Or a = "." Then kelime = kelime + Chr(13) TextBox1.Text = TextBox1.Text + kel ime kelime = "" Else kelime = kelime + a End If Next End Sub

Page 12: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Burada enterları kare sembolü şeklinde göstermiştir. Bu metni kopyalayıp Word’e atarsak word de kelimeler alt alta sıralanır. Yada kelimeleri listbox da listeleyebilirdiniz. • ToLower(): Stringi küçük harfe çevirir. [string.ToLower() ] • ToUpper(): Stringi büyük harfe çevirir. [string.ToUpper() ]

- Bu iki ifade windows’un dilinin kurallarına göre çevirir. Yani türkçe windows da türkçe dil kurallarına göre çevrim yapar. Eğer başka dil kurallarına göre çevrim yapılması isteniyorsa şöyle kullanılır. [string.ToUpper(New System.Globalization.CultureInfo(“en”) ]

-------------- 000 --------------- • Compare(): İki stringi gelişmiş özellikler kullanarak karşılaştırmak için kullanılır.

- Stringleri büyük küçük harf duyarlı olarak karşılaştırır. [ string.Compare(string1, string2)=0 ] - Büyük-küçük harf duyarlı olmaması isteniyorsa şöyle kullanılır [string.Compare(string1,string2,True)=0 ]. Bu iki ifadede iki string eşitse sonucu 0 olarak döndürür. - Stringin bir parçasını karşılaştırma. [ string.Compare( string1, kaçıncıHarfden, string2, kaçıncıHarfden, kaçHarf) - Hangi dil kuralına göre karşılaştırma yapacağını belirlemek içinse şöyle kullanılır. [string.Compare(string1, string2, True, New System.Globalization.CultureInfo(“en”)) ]

• CompareTo(): İki stringi büyük küçük harf duyarlı olarak karşılaştırmanın başka bir yöntemidir. [string1.CompareTo(string2)=0 ] . Büyük küçük harf duyarlılığı olduğu için string önce tamamen küçük harfe yada büyük harfe çevrilmelidir. [string1.ToLower.CompareTo(string2)=0] . stringler eşitse 0 döndürür.

• Equals(): İki stringi karşılaştırmanın üçüncü bir yolu ise bu metoddur. Burada 0 yerine True yada False döndürür. İki şekilde kullanılabilir. Büyük-küçük harf duyarlıdır. [string.Equals(string1,string2) ] yada [string1.Equals(string2) ] şeklinde kullanılabilir.

-------------- 000 --------------- • StringWith() : Stringin belirlenen verilen metinle başlayıp başlamadığını kontrol eder. True yada False

döndürür. Büyük-küçük harf duyarlı olduğu için ToUpper yada ToLower ile dönüştürülmesi lazım. Kullanımı şöyledir. [aranacakMetin.ToUpper.StringWith(arananMetin) ]

• EndsWith(): Stringin belirlenen metinle bitip bitmediğini kontrol eder. Kullanımı StringWith ile aynıdır. -------------- 000 ---------------

• TrimStart() : Stringin başındaki boşlukları atar. • TrimEnd() : Stringin sonundaki boşlukları atar. • Trim() : Stringin her iki tarafındaki boşlukları atar.

- Bu metodlar kullanılırken metinin içindeki özel karakterler şu şekilde atılabilir. [string.TrimEnd(“,”,”.”,”:”,”;”) ]

-------------- 000 --------------- • SubString(): Stringin bir parçasını almak için bu metod kullanılır. İki şekilde kullanılabilir.

[string1.SubString(başlangıç)] yada [ string1.SubString(başlangıç,uzunluk) ] • Split(): Bir stringi belli bir karakterler parçalara ayırmak için kullanılır. Parçalanan bölümler bir çok sayıda

olabileceği için geriye dönen karakterler diziye atılmalıdır. İki şekilde kullanılabilir. [diziDegişkeni=ArananString.Split(ayırıcıString) ] yada [diziDegişkeni=ArananString.Split(ayırıcıString,kaçAdetAlınaksa)]

-------------- 000 --------------- • IndexOf(): Bir stringi başka bir stringin içinde aramak için kullanılır. Aramaya baştan başlar. Bulursa

kaçıncı karakterde bulduğunu geri döndürür. Bulamazsa -1 döndürür. Kullanımı [aranılacakString.IndexOf(arananString) ] yada [aranılacakString.IndexOf(arananString,KaçıncıHarfden) ]

• LastIndexOf(): IndexOf la aynıdır sadece aramaya sondan başlar.

Page 13: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

• IndexOfAny(): Bir stringin içinde birden fazla stringin olup olmadığını aramak için kullanılır. Aramaya baştan başlar. Kullanımı [ string1.IndexOfArray(arananKarakterler) ]

• LastIndexOfAny(): Tek farkı aramaya sondan başlar. -------------- 000 ---------------

• Concat(): Bu metod iki veya daha fazla stringi birleştirmek için kullanılır. Kullanımı [string1=Str.Concat(str1,str2,str3) ]

• Join(): Bir grup stringin arasına bir karakter koyarak birleştirmek için kullanılır. Kullanımı [string1=Str.Join(konulacakKarakter, dizi) ]

• Insert(): Bir stringin içine belli bir stringi yerleştirmek için kullanılır. Kullanımı [string1.Insert(kaçıncıHarfden,yerleştirilecekString) ]

• Replace(): Bir stringin içinde geçen bir metni başka başka bir metinle değiştirmek için kullanılır. Kullanımı [string1=str.Replace(arananMetin, yerineKonacakMetin) ]

• Remove(): Bir stringin içinden belli bir bölümü çıkarmak için kullanılır. Kullanımı [string1=str.Remove(kaçıncıHarfden, kaçHarf) ]

-------------- 000 --------------- • PadLeft(), PadRight(): Stringin sağına ve soluna istenen sayıda karekter ekleyerek stringin boyunu

uzatmayı sağlar. [EklenecekString.PadRight(adet, karakter)] . Örneğin Ali.PadRight(2,”*”) ifadesinin sonucu Ali** olarak verir. Boşluk karakteri eklenerek stringin boyu uzatılmış olur.

• Format(): Bir stringi farklı şekillerde formatlamak için bu metod kullanılır. Örnekler; - String.Format(“Sayın {0} Bey, {1} Tarihinde sizleri düğünümüze bekliyoruz.”, Ali, 15.06.2005) Çıktısı “Sayın Ali Bey, 15.06.2005 Tarihinde sizleri düğünümüze bekliyoruz” olacaktır. - String.Format(“Bugün={0:d} “, Today) Çıktısı “Bugün= 06.11.2005” şeklinde olacaktır.

Örnek: Bir TextBox’ın içine yazılan bir metindeki kelimeleri aradaki boşluklardan parçalara ayırıp her bir parçayı diziye atsın. Ardından dizideki elemanları Listbox’ta görüntülesin.

Private Sub Button1_Click(... ) Dim kelime() As String Dim i As Integer kelime = TextBox1.Text.Split(" ") For i = 1 To UBound(kelime) ListBox1.Items.Add(kelime(i)) Next End Sub

Burada .Split() metoduyla textbox’ın içindeki tüm kelimeler boşluklardan parçalara ayrılmakta ve kelimeler dizi değişkenine aktarılmaktadır. For döngüsünde bir dizinin en yüksek eleman numarasını veren Ubound() fonksiyonu kullanılarak dizinin içindeki tüm kelimeler Listbox’da görüntülenmektedir. Stringler Üzerinde İşlem Yapan Fonksiyonlar

Page 14: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Daha öncede vurgulandığı gibi VB.Net de tüm değişkenler birer nesne gibi davranmaktadır. Her nesnenin özellikleri ve üzerinde işlem yapan metodları bulunmaktadır. String değişkenleri üzerinde işlem yapan Metodları daha önceden gördük. Şimdi ise yine stringler üzerinde işlem yapan Fonksiyonları görelim. Hemen hemen aynı işlemleri yine Fonksiyonlar kullanarak yapabiliriz. Stringler üzerinde Metodları kullanırken String değişkeninden sonra nokta konur ve metod yazılır. Fonksiyon kullanırken ise Fonksiyon yazılır ve parantezler içine string yazılır. Örneğin: ali.ToUpper() bir metod dur ve ali yazısını ALİ ye çevirir. Aynı işlemi fonksiyon kullanarak yapmak istersek Ucase(ali) dersek sonuçta yine ALİ çıkar. Strignlerle ilgili belli başlı fonksiyonlar şunlardır.

• StrComp(metin1, metin2, [şart]) : İki stringi karşılaştırmak için kullanılır. Şart yazan kısımda 0 verilirse büyük küçük ayrımı yapılır, 1 verilirse bu ayrım yapılmaz. Geri dönen değer 0 ise strignler eşittir. Pozitif ise birinci string büyüktür, negatif ise ikinci string büyüktür. Büyüklük alfabetik sıralamaya göredir.

• LTrim(metin) : Verilen stringin başındaki boşlukları kaldırır. • Rtim(metin) : Verilen stringin sonundaki boşlukları kaldırır. • Trim(metin) : Verilen stringin her iki tarafındaki boşlukları kaldırır. • Ucase(metin) : Verilen stringi büyük harfe çevirir. • Lcase(metin) : Verilen stringi küçük harfe çevirir. • StrReverse(metin) : Verilen stringin harflerini tersten yazar. • Len(metin) : Verilen stringin içindeki karakter sayısını verir. Boşluklar da dahil. • Strings.Right(metin,n) : Verilen stringin sağdan n karakter alınmasını sağlar. • Strings.Left(metin,n) : Verilen stringin soldan itibaren n karakter alınmasını sağlar. • Mid(metin,başlanğıç,[uzunluk]) : Verilen metnin içinde başlanğıç noktasından uzunluk kadar kadar

karakteri verir. • InsStr([KaçıncıHarfden], Neyinİçinde, neyi, [nasıl]) : Bir stringin içinde başka bir stringi baştan

itibaren arar. Nasıl parametresi 0 olursa büyük küçük ayrımı yapar, 1 olursa yapmaz. Geriye dönen değer 0 ise aranan ifade bulunamamıştır. Bulunmuşsa stringi bulduğu yerin sayısını verir.

• InsStrRev(Neyinİçinde, Neyi, [KaçıncıHarfden], [Nasıl]) : Bir stringin içinde başka bir stringi sondan itibaren arar.

• Replace(Neyinİçinde, Neyi, Neİle, [KaçıncıHaftden], [KaçTane],[Nasıl]) : Bir stringin içindeki bir ifadeyi (neyi) başka bir ifade ile (neile) değiştirir. KaçıncıHarfden parametresi kullanılmazsa baştan itibraren değiştirir. KaçTane parametresi kullanılmazsa bulduğu tüm değişiklikleri yapar. Nasıl parametresi 0 ise büyük küçük ayrımı yapar, 1 ise yapmaz.

• Space(sayı) : Verilen sayı kadar boşluk oluşturur. • Val(string) : Verilen stringi sayıya çevirir. • Str(sayı) : Verilen sayıyı stringe çevirir. • Asc(karakter) : Verilen karakterin Ascii kodunu verir. • Chr(AsciiKodu) : Verilen kodun karakter karşılığını üretir.

Karakter Gruplarını Tanıyan Metodlar

• Char.IsLetter : Karakterin alfabetik bir harf olup olmadığını öğrenmek için kullanılır. • Char.IsDigit : Karakterin 0-9 arası bir rakam olup olmadığını öğrenmek için kullanılır. • Char.IsLower: Karakterin küçük harf olup olmadığını öğrenmek için kullanılır. • Char.IsUpper: karakterin büyük harf olup olmadığını öğrenmek için kullanılır.

Örnek: Formun üzerinde 2 tane textbox olsun. Bunlardan birincisine ad soyad girilsin. İkincisine ise doğum tarihi girilsin. Eğer ad soyad kısmına rakam girilirse yada doğum tarih kısmına harf girilirse ses çıkararak uyarı versin.

Private Sub TextBox1_KeyPress( ByVal sender As Object , ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Char .IsDigit(e.KeyChar) Then e.Handled = True Beep() End If End Sub

Page 15: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub TextBox2_KeyPress( ByVal sender As Object , ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

If Not Char .IsDigit(e.KeyChar) Then e.Handled = True Beep() End If

End Sub

Burada basılan tuşları alabilmek için KeyPress olayını kullanacağız. Kullanıcı bir tuşa bastığında bu olay meydana gelir. Prosedür içinde bu olayı temsil eden değişken “e” değişkenidir. Bu olayın KeyChar özelliği bize basılan tuşu verir. Kullanıcının bastığı tuşu iptal etmek için ise aynı olayın Handled özelliği kullanılır. Beep() fonksiyonu ise sesli uyarı verir.

ÖRNEK: Bir çok satırlı textbox’ın içerine atılan metindeki kelimleri ayırıp listbox’da alt alta sıralı olarak gösterin.

Page 16: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

TARİH TİPİ DEĞİŞKENLER Date: Tarih tipi değişkenler bu ifadeyle tanımlanırlar. Tarihler “ “ işaretleri arasında yada # # işaretleri arasında tanımlanabilirler. Tırnak içinde tanımlanırlarda Windowsun ayarlarını kullanır. Yani Türkçede “gün/ay/yıl” olur. Oysa ingilizcede tarih “ay/gün/yıl” olarak kullanılır.

Dim tarih as Date şeklinde tanımlanır. IsDate(tarih ve saat): Bu fonksiyon verilen bir tarihin yada saatin geçerli olup olmadığını tespit eder, geçerli ise True döndürür. Windows’un ayarlarını kullanır. Today: Bilgisayarın tarihini öğrenmek ve değiştirmek için kullanılır. TimeOfDay: Bilgisayarın saatini öğrenmek ve değiştirmek için kullanılır. Now : Bilgisayarın hem tarihini hemde saatini sadece öğrenmek için kullanılır.

Örnek: Formun üzerine iki tane text box, bir tane buton koyun. Birinci textboxtan sistemin tarihini, ikinci textbox’tan sistemin saatini açılışta gösterin ve ardından değiştirin. Eğer formata uygun değer girilmezse uyarı versin.

Private Sub Form1_Load(... ) TextBox1.Text = Today TextBox2.Text = TimeOfDay End Sub Private Sub Button1_Click(... ) If IsDate(TextBox1.Text) Then Today = TextBox1.Text Else MsgBox("Tarih Geçersiz") End If If IsDate(TextBox2.Text) Then TimeOfDay = TextBox2.Text Else MsgBox("Saat Geçersiz") End If End Sub

Tarih Tipi De ğişkenlerin Metodları: Tarih tipi değişkenler üzerinde işlemler yapmak için hem metodlar (değişkenin yanına noktayı koyduğumuzda çıkan pencereden seçebilirsiniz) hemde fonksiyonlar kullanılır. Örneğin metodlardan add ile başlayanlar tarih yada saatle ilgili olarak ekleme veya çıkarma işlemi yapar. Bazı önemli metodlar şunlardır. • .AddDays(gün): Tarihe belirtilen gün kadar ekleme veya çıkarma yapar. • .AddMonths(ay): Tarihe belirtilen ay kadar ekleme veya çıkarma yapar. • .AddYears(yıl): Tarihe belirtilen yıl kadar ekleme veya çıkarma yapar. • .Month: Tarihin ayını verir. • .Year: Tarihin yılını verir.

Page 17: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

• .DayOfYear: Yılın kaçıncı gün olduğunu verir. • .DayOfWeek: Haftanın kaçıncı gün olduğunu verir. 0 Pazar, 1 Pazartesi şeklinde gider. • .IsLeapYear(yıl): Belirtilen yılın artık yıl olup olmadığını (29 şubat çekiyorsa) True değeri döndürerek

verir. • .AddHours(saat): Zamana belirtilen saat kadar ekleme veya çıkarma yapar. • .AddMinutes(dakika): Zamana belirtilen dakika kadar ekleme veya çıkarma yapar. • .AddSeconds(saniye): Zamana belirtilen saniye kadar ekleme veya çıkarma yapar. • .Hour: Zamanın saat kısmını verir. • .Minute: Zamanın dakika kısmını verir. • .Second: Zamanın saniye kısmını verir. • .Millisecond: Zamanın milisaniye (1/1000 saniye) kısmını verir. • .ToOADate: Tarih tipindeki değişkenin değerini integer türü bir değişkene çevirir. Böylece tarihler üzerinde

işlem yapmak kolaylaşır.

Örnek: Formun üzerine bir tane textbox, bir tane buton koyun. Doğum tarihinizi girdiğinizde size hangi gün doğduğunuzu veren programı en kısa şekilde yazmaya çalışın.

Private Sub Button1_Click( ...) Dim tarih As Date

Dim gunler() As String = {"paz", "pzt", "sal", "çar", "per", "cum", "cmt"}

tarih = TextBox1.Text MsgBox(gunler(tarih.DayOfWeek)) End Sub

Örnek: Satılan bir ürünün borcunun gecikmeli ödenmesi nedeniyle ödenecek ceza miktarını gösteren bir program yazın. Geciken her gün başına ürünün fiyatına 1/1000 ceza eklesin. Ödemenin yapıldığı gün sistem saati olsun ve kendiliğinden yüklensin.

Private Sub Button1_Click( ...) Dim tarih1, tarih2 As Date Dim fark, ceza As Long tarih1 = TextBox3.Text tarih2 = TextBox4.Text fark = tarih2.ToOADate - tarih1.ToOADate ceza = fark * 0.001 * Val(TextBox2.Text) TextBox5.Text = ceza TextBox6.Text = Format((Val(TextBox2.Text) + ceza), "##,##") End Sub Private Sub Form1_Load( ...) TextBox4.Text = Today End Sub

Page 18: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

DateAndTime.Timer: Bu özellik bir zaman sayacıdır ve gece yarısından itibaren kaç milisaniye (salise) geçtiğini verir. Sayının tam kısmı Saniyeyi, ondalık kısmı ise milisaniyeyi gösterir. Bu özellik kullanılarak iki işlem arasında geçen süre hesaplanabilir.

Örnek: Bir döngünün kaç saniye sürdüğünü kullanılan değişkenlerin tipini tanımlayarak ve tanımlamadan hesaplayın.

Private Sub Button1_Click( ...) Dim ilk, son As Double Dim i ilk = DateAndTime.Timer For i = 1 To 10000000 i = i Next son = DateAndTime.Timer MsgBox("geçen süre=" & (son - ilk)) End Sub

ÖDEV: Formun üzerine iki tane tane combobox yerleştirip buradan ay ve yılı seçtiğimizde bize o ayın tüm günlerini haftalık günleri ile birlikte gösteren bir program yazın. ÖDEV: Geçen süreyi tahmin etme üzerine

Page 19: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

HAZIR FONKS İYONLAR

A)Matematiksel Fonksiyonlar 1)Math.abs(Ondalık Sayı)=Ondalıklı sayıların mutlak değerini alır. ÖRNEK: Göster butonuna basıldığında textboxtaki negatif ondalıklı sayının mutlak değerini alan program kodlarını yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox2.Text = Math.Abs(Val(TextBox1.Text) ) End Sub

2) Math.Ceiling(Ondalık Sayı)=Ondalıklı sayıyı yukarıya yuvarlar. Math.Floor(Ondalık Sayı)=Ondalıklı sayıyı aşağıya yuvarlar. 3) Math.PI=Pi sayısını verir(22/7) 4) Math.Pow(Sayı1,Sayı2)=Sayının üssünü(kuvvetini) alır. Sayı1=Üssü alınacak sayı Sayı2=Üs ÖRNEK: 25 Sayısının 0.5 (1/2) üssünü alan programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("Sayının Kuvveti " & Math.Pow(25, 0. 5)) End Sub

5) Math.Round(Ondalıklı Sayı,Hassasiyet)=Ondalıklı sayıyı verilen hassasiyete göre yuvarlar. Hassasiyet=Ondalıklı sayının virgülden sonraki basamaklarının kaç tane olacağını belirtir. ÖRNEK: Msgbox(Math.Round(17.247691,3)) Sonuç olarak 17.248 gösterecektir.

6) Math.Sin()=Verilen açının sinüs değerini verir. Math.Cos()=Verilen açının kosinüs değerini verir. Math.Tan()=Verilen açının tanjant değerini verir. Math.ASin()=Verilen değerin sinüs cinsinden açısını bulur.

Math.ACos()=Verilen değerin kosinüs cinsinden açısını bulur.

Math.ATan()=Verilen değerin tanjant cinsinden açısını bulur.

Page 20: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK: Msgbox(Math.Tan(22/28)) Sonuç olarak 1 değerini verecektir. NOT: Açılar radyan cinsinden verilmelidir. Yukarıdaki örnekte de 22/28 (yani 45˚ ) radyan cinsinden verilmiştir. ÖRNEK: Msgbox(Math.A.Sin(0.5)) Sonuç olarak 0.5235 radyan değerini verir. Bu değerde 30˚ dereceye karşılıktır.

Page 21: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

DÖNGÜLER VE BLOKLAR

Program içerisinde kontrolü, tekrarlı işlemlerin yapılmasını sağlarlar. IF THEN ELSE DEY İMİ: Programın koşullara bağlı olarak karar vermesini sağlar. Yapısı A) IF Koşul THEN İşlemler B)IF Koşul1 THEN İşlemler1 ELSEIF Koşul2 THEN İşlemler2 ELSEIF Koşul3 THEN İşlemler3 … ELSE İşlemler N END IF NOT 1: ELSEIF istenilen sayı kadar arttırılır. Her seferinde yanına koşul yazılmalıdır. NOT 2: Sadece ELSE deyimi hiçbir şartın sağlanmadığı durumlarda kullanılır. Yanına koşul yazılmaz. ÖRNEK 1: Girdiğimiz notun harfsel olarak karşılığını veren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim puan As Integer puan = Val(TextBox1.Text) If puan <= 100 And puan >= 90 Then MsgBox("A1 ile Geçtiniz") ElseIf puan < 90 And puan >= 80 Then MsgBox("A2 ile Geçtiniz") ElseIf puan < 80 And puan >= 70 Then MsgBox("B1 ile Geçtiniz") ElseIf puan < 70 And puan >= 65 Then MsgBox("B2 ile Geçtiniz") ElseIf puan < 65 And puan >= 60 Then MsgBox("C ile Geçtiniz") ElseIf puan < 60 And puan >= 0 Then MsgBox("F3 ile Kaldınız") Else : MsgBox("Hatalı Giri ş Yaptınız") End If

Page 22: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End Sub

ÖRNEK 2: Kullanıcı adı ve şifreye göre giriş yapan ve Msgbox’la şifrenin doğru olup olmadığını gösteren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim kullanici, sifre As String kullanici = TextBox1.Text sifre = TextBox2.Text If kullanici = "Ali" And sifre = "123" Then MsgBox(" Şifre Do ğru") Else : MsgBox(" Şifre Yanlı ş") End If End Sub

NOT 3: Textbox’ın içeriğini yıldız(*) olarak göstermek için Textbox’ın properties penceresinden “Password Char” özelliğine “*” yazılır.

ÖRNEK 3: Örnek 2 için form daha yüklenirken bir pencere açılsın ve burada bizden sadece şifre istesin. Tamam tuşuna basıldığında şifre doğru ise form gözüksün,yanlış ise programı kapatsın.Bu işlemi yapan programın kodlarını yazınız.

Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sifre As String sifre = InputBox(" Şifre Giriniz", " ŞİFRE KONTROLÜ", "", 300, 200) If sifre <> "123" Then End End Sub

NOT 4: Dışarıdan bir pencere ile bir değer alınırken inputbox() fonksiyonu kullanılır. Kullanılışı: sifre=inputbox(“Şifrenizi Giriniz:”,”SIFRE KONTROLU”,” ”,300,200) NOT 5: Programdan çıkışı sağlamak için “End” komutu kullanılır. Örnek 3’te IF koşulunun sonuna yazılan “End” ; eğer şifre 123 ‘e eşit değilse programdan çık anlamındadır. IF tek satırda yazıldığı için “end if “ ’e gerek yoktur.

Page 23: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

FOR… NEXT DÖNGÜSÜ

Çalışmasını istediğimiz kodları birçok kez çalıştırmak istersek bu döngüyü kullanabiliriz. Yapısı: FOR sayaç değişkeni =ilk değer TO son değer [step sayacın artış miktarı] …Çalışacak Kodlar NEXT sayaç değişkeni NOT 1: “[ ]” ‘ler tercihe bağlı olduğunu gösterir ve program yazarken kullanılmaz. NOT 2:FOR NEXT döngüsünde step adımı kullanılmazsa sayaç birer birer artar.

ÖRNEK 4: İlk değer ve son değer arasındaki sayıları toplatıp Label’a yazdıran programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim toplam As Integer = 0 Dim ilkdeger, sondeger, i As Integer ilkdeger = Val(TextBox1.Text) sondeger = Val(TextBox2.Text) For i = ilkdeger To sondeger toplam = toplam + i Next i Label4.Text = toplam End Sub

ÖRNEK 5: 1’den 6’ya kadar olan sayıları 2’şer 2’ şer olmak üzere ekranda Msgbox’la gösteren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Byte For i = 1 To 6 Step 2 MsgBox(i) Next i End Sub

Page 24: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK 6: İlk değer ile son değer arasındaki değerleri artış miktarına göre Msgbox’ la ekranda gösteren programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, ilk, son, art_mik As Integer ilk = Val(TextBox1.Text) son = Val(TextBox2.Text) art_mik = Val(TextBox3.Text) For i = ilk To son Step art_mik MsgBox(i) Next i End Sub

FOR EACH DÖNGÜSÜ For Each döngüsü bir dizinin içerisindeki elemanları otomatik olarak bir değişkene atıp bu değişkeni kullanarak sırayla elemanları görüntülememizi yada üzerinde işlem yapmamızı sağlar. Örnek: Biz diziye 6 tane ili tanımlama satırında atayıp daha sonra butona basıldığında bu dizi deki her bir elemanı for next döngüsü kullanmadan Listeye ekletin.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim Sehirler() As String = {"Adana", "Ankara", "Bursa", "İstanbul", "İzmir"}

Dim Sehir As String

For Each Sehir In Sehirler

ListBox1.Items.Add(Sehir)

Next

End Sub

DO LOOP, DO WHİLE – LOOP , DO UNTIL – LOOP , WHILE – LOOP DONGULERİ

Page 25: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Do-Loop Döngüsü: Bu döngü içeriden çıkılmadığı sürece sonsuza kadar döner Örnek: 1-100 kadar olan sayıları sonsuz döngü kullanarak Listeye ekleyin

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim i As Integer

Do

i = i + 1

ListBox1.Items.Add(i)

If i = 100 Then Exit Do

Loop

End Sub

Do while-Loop Döngüsü Başlangıçta bizden bir şart ister ve bu şart geçerli olduğu müddetçe çalışır. Eğer yinede arada bir şart gerçekleştiğinde çıkmak istersek Exit Do ile çıkabiliriz. Örnek: 1-100 kadar olan sayıları Do while-loop döngüsü ile listeye ekletin.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim i As Integer

Do While (i < 100)

i = i + 1

ListBox1.Items.Add(i)

'If i = 78 Then Exit Do

Loop

End Sub

Page 26: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Do Until- Loop döngüsü: Şart sağlana kadar döngüyü çalıştıracaktır.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim i As Integer

Do Until (i > 100)

i = i + 1

ListBox1.Items.Add(i)

'If i = 78 Then Exit Do

Loop

End Sub ***********************

Do

i = i + 1

ListBox1.Items.Add(i)

'If i = 78 Then Exit Do

Loop Until (i > 100) ******************

Do

i = i + 1

ListBox1.Items.Add(i)

'If i = 78 Then Exit Do

Loop While (i < 100)

ÖRNEK 1: 0–100 arasındaki sayılardan rasgele seçen ve ne zamanki sayı 50 olduğunda döngüden çıkan ve kaçıncı seferde bulduğunu gösteren programı yazınız.

Page 27: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, i As Integer i = 0 Randomize() Do a = Int(Rnd() * (100) + 1) If a = 50 Then Exit Do i = i + 1 Loop MsgBox("Sayi=" & a & " " & "Kaç Seferde Bul duğunuz=" & i) End Sub

Aynı program Do-Loop While döngüsü ile yapılacak olursa komutları şu şekilde olurdu: Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a, i As Integer i = 0 Randomize() Do a = Int(Rnd() * (100) + 1) i = i + 1 Loop While a <> 50 MsgBox("Sayi=" & a & " " & "Sayaç=" & i) End Sub

NOT: 100 ile 10000 arasındaki sayıları listeye eklemek isteyelim. Eğer Do While Kullanılırsak (i>100) yada i<10000 şeklinde ifade etmeliyiz. “i 100 den büyük mü? =Evet” yada üst sınırı kullanırsak “i 10000 den küçük mü=Evet. Her ikisindede evet dediğimiz için döngü çalışacaktır. Eğer Until kullanırsak. (i>10000) “i 10000 den büyük olana kadar devam et. İ=100 olsun. “i 10000 den büyükmü?” Hayır Cevabı aldığımız için döngü çalışacaktır. Ne zaman çıkacak evet cevabını aldığımızda çıkacaktır. Dikkat edilirse birinde Evet dediğimizde çalışıyor, Diğerinde ise hayır dediğimizde çalışıyor. Aşağıdaki örnekleri inceleyin. Dim i As Integer = 100 'Dim kare As Integer 'For i = 1 To 100 'ListBox1.Items.Add(i) 'Next

Page 28: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

'Do 'i = i + 1 'ListBox1.Items.Add(i) 'kare = i * i 'If kare > 30000 Then Exit Do 'Loop 'Do While (i >= 100) 'i = i + 1 'ListBox1.Items.Add(i) 'If i = 10000 Then Exit Do 'Loop 'Do 'i = i + 1 'ListBox1.Items.Add(i) 'Loop While (i = 10000) 'Do Until (i >= 10000) 'i = i + 1 'ListBox1.Items.Add(i) 'Loop Do i = i + 1 ListBox1.Items.Add(i) Loop Until (i > 10000)

Page 29: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

LİSTBOX (LİSTE KUTUSU)

NOTLAR: 1)”ListBox1.Selectedindex” komutu listede seçili olan elemanın numarasını verir. 2)”ListBox1.Selecteditem” komutu listede seçili olan elemanı gösterir. 3)”ListBox1.Items.RemoveAt(…)” komutu index (sıra) numarası verilen elemanı siler. Parantez içine sıra numarası yazılır. 4)”ListBox1.Items.Remove(…)” komutu ismi yazılan elemanı siler. Parantez içine isim yazılır. 5) ”ListBox1.Items.Count” komutu listedeki eleman sayısını verir. 6) ”ListBox1.Items.IndexOf(…)” komutu listeden seçilen elemanın kaçıncı eleman olduğunu gösterir. ÖRNEK 1: Aşağıdaki çıktıyı veren programı yapınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Add(TextBox1.Text) TextBox1.Text = " " End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ListBox1.Items.RemoveAt(ListBox1.SelectedIn dex) ListBox1.Items.Remove(ListBox1.SelectedItem ) End Sub Private Sub Button4_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click If ListBox1.Items.Count < TextBox2.Text Then ListBox1.Items.Insert(ListBox1.Items.Co unt, TextBox3.Text)

Page 30: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Else : ListBox1.Items.Insert(Val(TextBox2.Text), TextBo x3.Text) End If End Sub Private Sub Button5_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click MsgBox("Eleman Sayısı " & ListBox1.Items.Co unt) End Sub Private Sub Button6_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click MsgBox("Seçti ğiniz Ki şinin Sıra Numarası " & ListBox1.Items.IndexOf(TextBox4.Text)) End Sub Private Sub ListBox1_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged MsgBox(ListBox1.SelectedItem) End Sub

COMBOBOX(AÇILIR L İSTE)

ComboBox, ListBox’ ın aynısıdır. Aralarındaki tek fark maddeler burada gizlenmiş olarak gösterilir. Kullanılan komutlar ListBox komutları ile aynıdır. ÖRNEK 2: 0 ile 100 arasından 10 tane sayıyı rasgele olarak ComboBox’ ın içerisinde toplayan programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sayi, i As Integer Randomize() For i = 1 To 10 sayi = Int(Rnd() * (100 - 0) + 0) ComboBox1.Items.Add(sayi) Next i End Sub NOT: Randomize() fonksiyonu zamana bağlı olarak “Rnd()” fonksiyonunu çalıştırır. Eğer bu fonksiyon kullanılmaz ise Rnd() programda hep aynı sayıları üretecektir. Bu fonksiyon sayesinde Rnd() zamana bağlı olarak yeni sayılar üretir. Zaman sürekli ilerlediği için dolayısıyla her üretilen sayı grubu bir öncekilerden farklı olacaktır. Rnd Fonksiyonunun Kullanılışı Int(Rnd()*(son değer-ilk değer)+ilk değer)

Page 31: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Örnek: Sayfaya 1 tane ComboBox, 1 tane ListBox 2 tane buton ekleyin. Birinci butona tıkladığımızde 0-100 arasından 100 tane sayıyı Combobox’a attırın. Daha sonra ikinci butona tıkladığımızda her sayıdan kaç tane attığını Listbox’da göstersin.

Public Class Form1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim RastgeleSayi As Integer For i = 1 To 100 RastgeleSayi = Int((Rnd() * 100)) ComboBox1.Items.Add(RastgeleSayi) Next End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sayac As Integer Dim OkunanSayi As Integer For i = 0 To 99 sayac = 0 OkunanSayi = ComboBox1.Items.Item(i) For j = 0 To 99 If OkunanSayi = ComboBox1.Items.Item(j) Then sayac = sayac + 1 End If Next ListBox1.Items.Add(OkunanSayi & "-" & sayac) Next End Sub End Class

Page 32: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖDEV: Google arama motoru benzeri Tam kelime Kısmı kelime arama yapan bir program yazın.

CHECKBOX Seçenekler arasından bir veya birden fazla seçim yapmamızı sağlar. ÖRNEK 3: Aşağıdaki çıktıyı veren programı yapınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim takim As String takim = " " If CheckBox1.Checked = True Then takim = takim + "FENERBAHÇE " End If If CheckBox2.Checked = True Then takim = takim + "GALATASARAY " End If If CheckBox3.Checked = True Then takim = takim + "BE ŞİKTAŞ " End If If CheckBox1.Checked = False And CheckBox2.Checked = False And CheckBox3.Checked = False Then MsgBox("Takım Tutmuyorsunuz") Else MsgBox("Tuttugumuz Takım/Takımlar " & t akim) End If End Sub

RADİOBUTTON

Seçenekler arasından sadece bir tanesini seçmemizi sağlar. Kullanımı Checkbox nesnesi ile aynıdır. Yalnız burada RadioButton’ların mutlaka daha önceden GroupBox nesnesi içerisine konması gerekir. Bu nesne RadioButton’ ları grup haline getirir. Butonlarda biri seçildiğinde diğerinin seçimini iptal eder.

Page 33: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK 4: Aşağıdaki çıktıyı veren programı yapınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If RadioButton1.Checked = True Then MsgBox("Tutugunuz Takım FENERBAHÇE") ElseIf RadioButton2.Checked = True Then MsgBox("Tutugunuz Takım GALATASARAY") ElseIf RadioButton3.Checked = True Then MsgBox("Tutugunuz Takım BE ŞİKTAŞ") Else MsgBox("Takım Tutmuyorsunuz") End If End Sub

Örnek: Formun üzerine

Page 34: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

PİCTUREBOX

ÖZELL İKLER İ 1) Picturebox’ın “properties” özellikler penceresindeki “Image” özelliğine resmin yolu verilir. Kullanımı: Picturebox1.Image= Image.FromFile (“Resmin Konumu “) 2) Picturebox’ın “properties” özellikler penceresindeki “SizeMode” özelliğindeki StretchImage seçeneği resmi çerçeveye uydurur, AutoSize seçeneği ise çerçeveyi resme uydurur. Kullanımı: Picturebox1.SizeMode= StretchImage Picturebox1.SizeMode= AutoSize 3) Picturebox’ın “Width” özelliği resmin genişliğini ayarlamamızı sağlar Kullanımı: Picturebox1.Width= ( sayı ) 4) Picturebox’ın “Height” özelliği resmin yüksekliğini ayarlamamızı sağlar Kullanımı: Picturebox1.Height= ( sayı ) ÖRNEK 1: Aşağıdaki çıktıyı veren program kodlarını yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Width = Val(TextBox1.Text) PictureBox1.Height = Val(TextBox2.Text) PictureBox1.Image = Image.FromFile("C:\Docu ments and Settings\All Users\Belgeler\Resimlerim\Örnek Resimler\Kı ş.Jpg") End Sub Private Sub RadioButton1_CheckedChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged PictureBox1.SizeMode = PictureBoxSizeMode.S tretchImage End Sub

Page 35: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub RadioButton2_CheckedChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged PictureBox1.SizeMode = PictureBoxSizeMode.A utoSize End Sub

OPENFİLEDİALOG Resimlerin konumunun otomatik olarak alınmasını sağlar. OpenFileDialog kutusu tasarım aşamasında gözükürken program çalıştırıldığında bu kutu görünmez. OpenFileDialog kutusunun “Properties “ özellikler penceresinden Filter özelliğine (Dosya Türü kısmında görünecek isim|*.Dosyanın uzantısı) yazılır.

ÖRNEK 2: Aşağıdaki resmi görüntüleyen ve msgbox ile resmin konumunu veren program kodlarını yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.Filter = "Bitmap Resimleri| *.bmp|Jpeg Resimleri|*.jpg" OpenFileDialog1.ShowDialog() PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName.ToString) MsgBox(OpenFileDialog1.FileName.ToString) End Sub

NOT 1: OpenFileDialog kutusunun ShowDialog( ) özelliği bize otomatik olarak resimlerin bulunduğu diyalog kutusunu getirir. NOT 2: OpenFileDialog kutusunun FileName.ToString özelliği ise bize resmin konumunu verir.

Page 36: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK: Listeden seçilen resmi picturebox’ta görüntüleyen programı yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click OpenFileDialog1.Filter = "Bitmap Resimleri| *.bmp|JPEG Resimleri|*.jpg" OpenFileDialog1.ShowDialog() ListBox1.Items.Add(OpenFileDialog1.FileName .ToString) End Sub Private Sub ListBox1_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged PictureBox1.Image = Image.FromFile(ListBox1 .SelectedItem) End Sub PICTUREBOX NESNESİ Örnek: Bir resim albümü yapınız.

Public Class Form1

Dim s As Integer

Page 37: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

Dim resimyolu As String

OpenFileDialog1.ShowDialog()

resimyolu = OpenFileDialog1.FileName

PictureBox1.Image = Image.FromFile(resimyolu)

ListBox1.Items.Add(resimyolu)

End Sub

Private Sub RadioButton2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles RadioButton2.Click

PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

End Sub

Private Sub RadioButton1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles RadioButton1.Click

PictureBox1.SizeMode = PictureBoxSizeMode.Normal

End Sub

Private Sub ListBox1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles ListBox1.Click

PictureBox1.Image = Image.FromFile(ListBox1.SelectedItem)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim ilkresim As String

s = 0

ilkresim = ListBox1.Items.Item(s)

PictureBox1.Image = Image.FromFile(ilkresim)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

Dim sonresim As String

s = ListBox1.Items.Count - 1

sonresim = ListBox1.Items.Item(s)

Page 38: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

PictureBox1.Image = Image.FromFile(sonresim)

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button5.Click

Dim resim As String

s = s + 1

If s > ListBox1.Items.Count - 1 Then

s = 0

End If

resim = ListBox1.Items.Item(s)

PictureBox1.Image = Image.FromFile(resim)

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button4.Click

Dim resim As String

s = s - 1

If s < 0 Then

s = ListBox1.Items.Count - 1

End If

resim = ListBox1.Items.Item(s)

PictureBox1.Image = Image.FromFile(resim)

End Sub

End Class

Page 39: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

TİMER Bu nesne belirlenen bir işlemi belli zaman aralıklarında yapılmasını sağlar. Nesnenin en önemli özelliği “Interval” özelliğidir. Eğer Interval =1000 olarak alırsak zaman aralıkları 1 saniye olacaktır. Yani timer nesnesinin içerisine yazmış olduğumuz kodlar her 1 saniyede bir çalışacaktır. ÖRNEK 1:Formun üzerinde dakika ve saniyeleri gösteren bir sayaç yapınız.

Dim i As Integer = 0 Dim j As Integer = 0 Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick i = i + 1 Label2.Text = i If i Mod 60 = 0 Then j = j + 1 Label1.Text = j i = 0 End If End Sub

ÖRNEK 2:Form üzerine yerleştirilen resmin zamanla hareket etmesini sağlayan program kodlarını yazınız.

Dim i As Integer = 0 Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick i = i + 1 PictureBox1.Left = PictureBox1.Left + i End Sub

ÖRNEK 3:Forma bir resim eklenip bu resmin form üzerinde rasgele yer değiştirmesini sağlayan ve resim üzerine tıklandığında da resmi kaç saniyede yakaladığını msgboxla gösteren programı kodlarını yazınız.

Page 40: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Dim l As Integer Dim t As Integer Dim en, boy, s As Integer Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Randomize() l = Int(Rnd() * 200) t = Int(Rnd() * 200) PictureBox1.Left = l PictureBox1.Top = t s = s + 1 End Sub Private Sub PictureBox1_Click( ByVal sender As Object , ByVal e As System.EventArgs) Handles PictureBox1.Click Timer1.Enabled = False MsgBox(s & " Saniyede Yakaladınız") End Sub

ÖDEV: Gerçek bir tetris programı yazın. Bunun için Picturebox ve Timer nesnesi kullanın. Yardımcı olacak kodlar aşağıda verilmiştir.

Public Class Form1 Dim x As Integer = 200 Dim y As Integer Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick y = y + 10

Page 41: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

KoordinatHesaplama(x, y) End Sub Private Sub Form1_KeyDown( ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = Keys.Left Then x = x - 10 End If If e.KeyCode = Keys.Right Then x = x + 10 End If If e.KeyCode = Keys.Up Then End If If e.KeyCode = Keys.Down Then y = 400 Timer1.Enabled = False KoordinatHesaplama(x, y) End If End Sub Sub KoordinatHesaplama( ByVal x As Integer , ByVal y As Integer ) PictureBox2.Location = New Point(x, y) PictureBox3.Location = New Point(x + 32, y) PictureBox4.Location = New Point(x + 64, y) PictureBox5.Location = New Point(x + 96, y) End Sub End Class

Page 42: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

DİZİLER Aynı değişken içerisinde indis kullanılarak çok sayıda değeri hafızada tutmak istersek dizileri kullanabiliriz. Dizilerin indisi 0’dan başlar ve hafızada ayrılan yer sayısınca sayısı artırılabilir. Diziler bilgileri geçici olarak hafızada tutarlar(Memory(RAM))( Elektrik kesintisinde bilgiler kaybolur) Diziler 1,2,3 ya da çok sayıda boyutlu olarak tanımlanabilir. Örnek: Dışarıdan n adet sayıyı diziye alan ve daha sonra bunları sırayla listbox’a ekleyen bir program yazınız. Dışarıdan sayıları Inputbox’a alın. Daha öncesinde kaç sayı girileceğini de isteyin.

Public Class Form1 Dim isim() As String Dim i, j As Integer Dim ElemanSayisi As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = i + 1 ReDim Preserve isim(i) isim(i) = TextBox1.Text ElemanSayisi = i TextBox1.Clear() 'Bu satır Textbox'ın içerisini bo şaltır. TextBox1.Select() 'Bu satır imlecin içerisine otomatik olarak yerle şmesini sa ğlar End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() For j = 1 To ElemanSayisi ListBox1.Items.Add(isim(j)) Next End Sub End Class

ÖRNEK 1: Aşağıdaki programı deneyiniz.

Page 43: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a(3) As Integer 'Bu dizi toplam 4 tane sayıyı içinde tutar. Dim i As Integer a(0),a(1),a(2),a(3)’ a( 0) = 5 a(1) = 3 a(2) = 7 a(3) = 8 For i = 0 To 3 MsgBox(a(i)) Next i End Sub

ÖRNEK 2: 3 tane ismi içinde tutacak olan bir diziyi string olarak tanımlayınız ve bu diziye 3 tane isim atayın. Daha sonra bu isimleri msgboxla gösteren program kodlarını yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim isim(2) As String Dim i As Integer isim(0) = "Ali" isim(1) = "Can" isim(2) = "Oya" For i = 0 To 2 MsgBox(isim(i)) Next i End Sub

ÖRNEK 3: Bir Textbox’a girilen 3 tane ismi Ekle butonuyla bir diziye ekleyin.Daha sonra Göster butonuna basıldığında bu isimleri msgbox ‘la listeleyen program kodlarını yazınız.

Dim ad(2) As String Dim i As Integer

Page 44: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ad(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer For j = 0 To 2 MsgBox(ad(j)) Next j End Sub

ÖRNEK 4: 3.Örneği başlangıçta diziye kaç tane isim girileceğini bilmeden yapalım.

Dim ad() As String Dim i As Integer = 0 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReDim Preserve ad(i) ad(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer For j = 0 To i - 1 MsgBox(ad(j)) Next j End Sub

NOT :” ReDim Preserve ad(i) “ komutunda Preserve kelimesini kullanırsak dizinin önceki elemanlarını da dizi içinde tutmuş oluruz. Eğer bu kelimeyi kullanmazsak her seferinde dizinin içerisini boşaltır önce yazılan elemanlar kaybolur. Örnek: ??? Public Class Form1 Dim kisi(10, 2) As String Dim i, j As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kisi(i, 0) = TextBox1.Text

Page 45: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

kisi(i, 1) = TextBox2.Text i = i + 1 End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim k As Integer For k = 0 To i - 1 ListBox1.Items.Add(kisi(k, 0) & "," & kisi(k, 1)) Next End Sub End Class

ÖRNEK 5: İstediğimiz kadar sayı ekleyip eklediğimiz sayıları Listboxta gösteren topla dediğimizde de sayıların toplamını Label’da gösteren program kodlarını yazınız.

Dim sayi() As Integer Dim i As Integer = 0 Dim toplam As Integer = 0 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReDim Preserve sayi(i) sayi(i) = TextBox1.Text i = i + 1 TextBox1.Text = " " End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim j As Integer ListBox1.Items.Clear() toplam = 0 For j = 0 To i - 1 ListBox1.Items.Add(sayi(j)) toplam = toplam + sayi(j) Next j End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Label1.Text = "Toplam=" & toplam

Page 46: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End Sub

ÖRNEK: Bir öğrenci listesini “Ad, vize, Final” bilgileri olmak üzere dışarıdan sırayla alın. En sonunda bu listeyi Listeboxda “Ali,23,56” şeklinde göstersin.

Public Class Form1 Dim Dizi(100, 3) As String Dim i, j As Integer Dim ElemanSayisi As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = i + 1 Dizi(i, 0) = TextBox1.Text Dizi(i, 1) = TextBox2.Text Dizi(i, 2) = TextBox3.Text ElemanSayisi = i End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Clear() For j = 1 To ElemanSayisi ListBox1.Items.Add(Dizi(j, 0) & "," & Dizi(j, 1) & "," & Dizi(j, 2)) Next End Sub End Class

Araştırma: Bur örnekte Redim çalıştırılamadı. İnternetten araştırılıp bulunacak. ÖRNEK 6:┌ ┐ │ b00 b01 b02 │ │ b10 b11 b12 │ └ ┘ Yukarıda verilen matrisin elemanlarını dışarıdan alıp bu değerleri toplatan program kodlarını yazınız.

Page 47: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Dim SatirSayisi, SutunSayisi As Integer Dim i, j As Integer Dim toplam As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click SatirSayisi = Val(TextBox1.Text) - 1 SutunSayisi = Val(TextBox2.Text) - 1 Dim B(SatirSayisi, SutunSayisi) As Integer For i = 0 To SatirSayisi For j = 0 To SutunSayisi B(i, j) = InputBox("B" & i & j & " Elemanını Giriniz", "MATRİS GİRİŞİ") toplam = toplam + B(i, j) Next j Next i End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MsgBox("SAYILARIN TOPLAMI=" & toplam) End Sub

Page 48: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Örnek: Dinamik olarak iki matrisin toplamını yapan bir program yazınız

Public Class Form1 Dim M, N, i, j As Integer Dim A(10, 10), B(10, 10), C(10, 10) As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click M = Val(TextBox1.Text) N = Val(TextBox2.Text) End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For i = 1 To M For j = 1 To N A(i, j) = InputBox( "A Matrisi" & i & "," & j & "Gir" , "A Matrisi" ) Next Next For i = 1 To M For j = 1 To N B(i, j) = InputBox( "B Matrisi" & i & "," & j & "Gir" , "B Matrisi" ) Next Next For i = 1 To M For j = 1 To N C(i, j) = A(i, j) + B(i, j) Next Next End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Page 49: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

For i = 1 To M For j = 1 To N MsgBox( "(C" & i & "," & j & ")=" & C(i, j)) Next Next End Sub End Class ÖDEV: mxn boyutlu iki matrisin çarpımını yapan programı görsel düzeyi yüksek olarak programlayın ÖDEV: Rastgele ormanda uçan bir kelebeği yakalayan bir oyun programı hazırlayın.

Dim hiz As Integer

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer1.Tick

Dim X, Y As Integer

Randomize()

X = Rnd() * 400

Y = Rnd() * 300

PictureBox2.Location = New Point(X, Y)

End Sub

Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles PictureBox2.Click

'MsgBox("Yakaladın")

'Timer1.Enabled = False

ListBox1.Items.Add(hiz)

hiz = hiz - 200

If hiz > 0 Then

Page 50: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Timer1.Interval = hiz

End If

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

hiz = 1000

Timer1.Interval = Hiz

End Sub

Page 51: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Örnek: Dışarıdan girilen N adet sayıyı sıralayan bir program yazın.

Dim Sayi(100) As Integer

Dim s As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

s = s + 1

Sayi(s) = Val(TextBox1.Text)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

Dim i, j As Integer

Dim A As Integer

For j = 1 To s

For i = 1 To s - 1

If Sayi(i) > Sayi(i + 1) Then

A = Sayi(i)

Sayi(i) = Sayi(i + 1)

Sayi(i + 1) = A

Page 52: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End If

Next

Next

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

For i = 1 To s

ListBox1.Items.Add(Sayi(i))

Next

End Sub

Örnek: Dışarıdan alınan n adet sayıyı for each döngüsü kullanarak listeye ekletin.

Dim sayi() As Integer

Dim s As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click

ReDim Preserve sayi(s)

sayi(s) = Val(TextBox1.Text)

s = s + 1

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

For Each Rakam In sayi

ListBox1.Items.Add(Rakam)

Next

End Sub

Page 53: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÇİZİM KOMUTLARI Çizim komutları için aşağıdaki örneği inceleyin Örnek: Formun üzerine 3 tane butona ekleyin. Bunların her birine tıklayıp Line (doğru), Circle( Daire), Rectangle (Dikdörtgen) çizim işlemini yaptırın. Bunlardan sadece daireyi çizerken Picturbox’ın tam ortasına 100 yarıçapında daire çizsin

Public Class Form1 Dim X1, Y1, X2, Y2 As Integer Dim CizgiRengi As Pen Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click X1 = 10 Y1 = 30 X2 = 150 Y2 = 200 CizgiRengi = Pens.Yellow PictureBox1.CreateGraphics.DrawLine(CizgiRe ngi, X1, Y1, X2, Y2) End Sub

Page 54: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim R As Integer R = 100 X1 = PictureBox1.Width / 2 - R Y1 = PictureBox1.Height / 2 - R X2 = 2 * R Y2 = 2 * R CizgiRengi = Pens.Red PictureBox1.CreateGraphics.DrawEllipse(Cizg iRengi, X1, Y1, X2, Y2) End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click X1 = 10 Y1 = 30 X2 = 150 Y2 = 200 CizgiRengi = Pens.LightGreen PictureBox1.CreateGraphics.DrawRectangle(Ci zgiRengi, X1, Y1, X2, Y2) End Sub End Class ÖRNEK 1:Tıklanan noktanın 10 ve 10 ‘un katları şeklinde Label’da x1 ve y1 koordinatlarını gösteriniz.

Page 55: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Dim x1, y1, a, b As Integer Private Sub PictureBox1_MouseDown( ByVal sender As Object , ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x1 = e.X y1 = e.Y a = x1 Mod 10 b = y1 Mod 10 Label1.Text = x1 Label2.Text = y1 Label3.Text = a Label4.Text = b If a < 5 Then x1 = x1 - a Else : x1 = x1 + (10 - a) End If If b < 5 Then y1 = y1 - b Else : y1 = y1 + (10 - b) End If Label5.Text = x1 Label6.Text = y1 End Sub ÖRNEK 2: Bir pictureboxüzerinde dışarıdan alınan bir sayıya bağlı olarak o sayının katları şeklinde noktaları gösteriniz.

Dim sayi, i, j, x, y As Integer Dim kalem As Pen Dim ciz As Graphics Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics sayi = Val(TextBox1.Text) For i = 0 To 300 Step sayi For j = 0 To 300 Step sayi x = i y = j ciz.DrawEllipse(kalem, x - 1, y - 1 , 2, 2) Next j Next i End Sub

Page 56: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK 3: Ekrana önce 20 piksel aralıklarla ızgara noktalarını çizdirelim. Daha sonra Mouse ile picturebox’ın üzerinde çizgi çizerken bu noktalar üzerinde çizgileri çizdirelim. Ara değerlerde çizgi çizmesin(Grid aralığı 20 piksel olacak).

Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics For i = 0 To 300 Step 20 For j = 0 To 300 Step 20 x = i y = j ciz.DrawEllipse(kalem, x - 1, y - 1 , 2, 2) Next j Next i End Sub Private Sub PictureBox1_MouseDown( ByVal sender As Object , ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics x = e.X y = e.Y a = x Mod 20 b = y Mod 20 If a < 10 Then x = x - a Else : x = x + (20 - a) End If If b < 10 Then y = y - b Else : y = y + (20 - b) End If If tiklama = 1 Then x1 = x y1 = y

Page 57: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

tiklama = 2 ElseIf tiklama = 2 Then x2 = x y2 = y tiklama = 1 ciz.DrawLine(kalem, x1, y1, x2, y2) End If End Sub ÖRNEK 4: Örnek 3’te verilen uygulamada çizilen her çizgiyi diziye kaydedin. Bir temizleme butonuyla Picturebox temizlendikten sonra “Yeniden Çiz” butonuyla aynı duvarları tekrar çizdirin.

Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Dim cizgi(100, 3) As Integer Dim k, s, t As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For i = 0 To 300 Step 20 For j = 0 To 300 Step 20 x = i y = j ciz.DrawEllipse(kalem, x - 1, y - 1 , 2, 2) Next j Next i End Sub Private Sub PictureBox1_MouseDown( ByVal sender As Object , ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x = e.X y = e.Y a = x Mod 20 b = y Mod 20 If a < 10 Then x = x - a Else : x = x + (20 - a) End If If b < 10 Then y = y - b Else : y = y + (20 - b) End If If tiklama = 1 Then x1 = x

Page 58: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

y1 = y tiklama = 2 ElseIf tiklama = 2 Then x2 = x y2 = y tiklama = 1 ciz.DrawLine(kalem, x1, y1, x2, y2) k = k + 1 cizgi(k, 0) = x1 cizgi(k, 1) = y1 cizgi(k, 2) = x2 cizgi(k, 3) = y2 End If End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PictureBox1.Image = Nothing End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For s = 1 To k ciz.DrawLine(kalem, cizgi(s, 0), cizgi( s, 1), cizgi(s, 2), cizgi(s, 3)) Next s End Sub Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics End Sub

ÖRNEK 5: 25 Piksellik aralıklarla ızgarayı gösterin. Daha sonra Mouse ile herhangi bir noktaya tıklanıp buna en yakın olan ızgara noktası üzerine bir daire çizdirin. Bu daire fareyi temsil etsin. Başka bir butona tıklayarak fare 25 piksellik aralıklarla rasgele hareket etsin.

Page 59: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Dim kalem As Pen Dim ciz As Graphics Dim x, y, i, j As Integer Dim x1, y1, a, b, x2, y2 As Integer Dim tiklama As Integer = 1 Dim cizgi(100, 3) As Integer Dim k, s, t As Integer Dim farex, farey As Integer Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For i = 0 To 300 Step 25 For j = 0 To 300 Step 25 x = i y = j ciz.DrawEllipse(kalem, x - 1, y - 1 , 2, 2) Next j Next i End Sub Private Sub PictureBox1_MouseDown( ByVal sender As Object , ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown x = e.X y = e.Y a = x Mod 25 b = y Mod 25 If a < 12.5 Then x = x - a Else : x = x + (25 - a) End If If b < 12.5 Then y = y - b Else : y = y + (25 - b) End If farex = x farey = y ciz.DrawEllipse(kalem, farex - 10, farey - 10, 20, 20) End Sub Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load kalem = New Pen(Color.Blue, 2) ciz = PictureBox1.CreateGraphics farex = 200 farey = 200 End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Enabled = True End Sub Private Sub Timer1_Tick( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Randomize() s = Rnd() * 3 If s = 0 Then farex = farex + 25 farey = farey + 0 End If If s = 1 Then farex = farex + 0 farey = farey - 25 End If If s = 2 Then farex = farex - 25

Page 60: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

farey = farey + 0 End If If s = 3 Then farex = farex + 0 farey = farey + 25 End If ciz.DrawEllipse(kalem, farex - 10, farey - 10, 20, 20) End Sub

MENÜ VE ARAÇ ÇUBUKLARI (MENUS & TOOLBARS) Programlarımızı daha görsel hale getirmek için Menus (Menü) , Toolbars (Araç Çubuğu) , Status Bar (Durum Çubuğu) gibi elemanlar kullanabiliriz. Bu işlem için Yan taraftaki Toolbox (araç kutusu) ndan elemanı seçip formun üzerine bırakırız. Ve resimlerde olduğu gibi gerekli ayarlamaları yaparız. Menü Ekleme

Public Class Form1 Private Sub KapatCtrlZToolStripMenuItem_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KapatCtrlZToolStripMenuItem.Click End End Sub

Page 61: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub YeniToolStripMenuItem_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles YeniToolStripMenuItem.Click MsgBox( "Merhaba" ) End Sub End Class

Page 62: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

VB.NET DE DATABASE KULLANIMI .NET ortamı veritabanı ile haberleşirken iki temel yapıyı kullanır. Bunlar.

a) SQL Server .NET Data Provider: SQL server 7.0 sonrası için kullanılır. b) OLE DB .NET Data Provider: OLE DB destekli veri kaynakları için kullanılır. Microsoft Access,

Oracle, XML document gibi. Veri tabanıyla bağlantının yapısı şu şekildedir.

Bunları sırayla açıklayalım. OLEDBCONNECTION (bağlantı) Burada OleDb veri tabanıyla bağlantıda kullanılan Nesnedir. OleDbConnection ise bunun bir alt işlemlerini gören yani bağlantıyı sağlayan bir metoddur. ConnectionString ise bağlantının nasıl yapacağını bildiren tanımlamalar içermektedir. Bu tanımlamalar microsoft Access için kulanılırken şöyledir. Provider= Microsoft.Jet.OLEDB.4.0 Data Source= Veri tabanın adresi Örnek: Access veritabanın açarak bir deneme.mdb isminde bir veri tabanı oluşturun. Bunun içindeki tablonun adınıda Tablo1 olarak atayın. Tabloların genelikle ilk sütünü primary key olarak atanırki her kayıt için farklı bir bilgi bulundurur. Böylece kayıtlar karıştırılmaz. Tablonun içinede bilgiler yazın. VB.net geçip bir form açın ve üzerine bir buton yerleştirin. Butonun içerisine aşağıdaki kodu yazın. Private Sub Button1_Click( ...) Dim baglantim As New OleDb.OleDbConnection Try baglantim.ConnectionString = "Provider=Microsoft.Je t.OLEDB.4.0;" & "Data Source=deneme.mdb;"

Veri Tabanı

Connection

Command

DataAdapter

DataSet

Uygulama

Page 63: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

baglantim.Open() Catch hata As System.Exception MsgBox(hata.Message) End Try baglantim.Close() End Sub Eğer veri tabanını verilen adreste bulduysa herhangi bir şey söylemez. Bulamadıysa aşağıdaki gibi bir hata verir.

VB.net projelerinin kaydedildiği yeri bulun yada ilk projeyi oluştururken çalıştığınız yeri belirleyin. Proje dizini oluşturulduktan sonra database /bin dizinin içine atın. Zaten verilen bu hata mesajındada database nerede aradığı gözükmektedir. OLEDBCOMMAND: (sorgulama) veri tabanından sorgulama yapmak için kullanılır. Kullanım yeri Connection dan sonra gelir. Örnek: Aynı örneğin içirisinde Connection satırlarından sonra şu satırları ekleyin. Private Sub Button1_Click( ...)

... Dim sorgu As New OleDb.OleDbCommand sorgu.Connection = baglantim sorgu.CommandText = "SELECT * FROM Tablo1" baglantim.Close()

End Sub OLEDBDATAREADER: (bilgileri geçici yükleme) Veri tabanından okunan bilgiler geçici olarak bu nesneye yüklenir. Bu bir nevi dizidir. Bu nedenle dizinin her elemanı sütünları ifade eder. Daha sonra bir döngü kullanılarak bilgiler buradan bir Görüntüleme nesnesine (Datalist, DataGrid) aktarılabilir. Örnek: Aynı örneğin içirisinde Connection satırlarından sonra şu satırları ekleyin. Private Sub Button1_Click( ...)

... ... Dim okuyucu As OleDb.OleDbDataReader 'Okuyucu nesnesi olu şturuluyor. okuyucu = sorgu.ExecuteReader 'Sorguyu çalı ştırıyor ve Sorgudan gelen bilgiler okuyucuya yükleniyor. Do While okuyucu.Read = True ListBox1.Items.Add(okuyucu(0) & " " & okuy ucu(1) & " " & okuyucu(2) & " " & okuyucu(3)) Loop baglantim.Close()

Page 64: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End Sub

Örnek: Veritabanına Access üzerinden kişilerin ad soyad ve yaşlarını girin. Yaşı 20 den büyük olanları listeletin. Private Sub Button1_Click( ...)

... ... Dim okuyucu As OleDb.OleDbDataReader 'Okuyucu nesnesi olu şturuluyor. okuyucu = sorgu.ExecuteReader 'Sorguyu çalı ştırıyor ve Sorgudan gelen bilgiler okuyucuya yükleniyor. Do While okuyucu.Read = True If okuyucu(3) > 20 Then ListBox1.Items.Add(okuyucu(0) & " " & okuyucu(1) & " " & okuyucu(2) & " " & okuyucu(3)) End If

Loop baglantim.Close() End Sub

Bu örnekteki gibi istenilen bilgileri görüntülemek için iki yöntem vardır. Bunlardan birincisi

a) SQL sorgudan tüm bilgiler okunduktan sonra bunlardan istenilenleri görüntülenir. Burada yapılan bu şıktır.

b) SQL sorgusu esnasında istenilen bilgiler okunur ve bunlar görüntülenir. Bunu sağlamak için aşağıdaki şekilde sorgu komutlarını degiştirmeliyiz.

...

...

Dim sorgu As New OleDb.OleDbCommand sorgu.Connection = baglantim sorgu.CommandText = "SELECT * FROM Table1 W HERE val(yas)>20"

... ...

NOT: Buradaki kodları denerken bir hata ile karşılaşırsanız hatanın oluştuğu kodu Yukarıda örnek olarak verildiği gibi mutlaka Try –Catch bloku içinde çalıştırın. Hangi hatanın neden meydana geldiğini türkçe olarak size söyler.

Page 65: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ÖRNEK 1: ID, ADI, SOYADI ve YAŞ bilgilerini Microsoft Access’te oluşturulan veri tabanındaki bilgilere göre listeleyen programın kodlarını yazınız.

LİSTELE BUTONU Imports System.Data.OleDb Public Class Form1 Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'ba ğlantı Dim baglanti As OleDbConnection baglanti=New OleDbConnection

( "provider=microsoft.jet.oledb.4.0;data source=D:\vt2.mdb" ) baglanti.Open() 'sorgulama Dim sorgu As String sorgu= "select * from tablo1" Dim komut As New OleDbCommand(sorgu, baglanti) 'okuyucu Dim okuyucu As OleDbDataReader

ID AD SOYAD YAS

______

sorgu okuyucu

komut

baglanti

Visual Basic Formu Access Veritabanı

Ve

ritab

anı

Bağ

lant

ısı

Bilg

ileri

Taş

ıma

Ve

ritab

anı

nda

n ha

ngi

bilg

ilerin

a

lınac

ağı

Page 66: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

okuyucu = komut.ExecuteReader() While okuyucu.Read = True ListBox1.Items.Add(okuyucu.Item( "ID" ) & " " & okuyucu.Item( "AD" ) & " " & okuyucu.Item( "SOYAD") & " " & okuyucu.Item( "YAS" )) End While 'KAPATMA İŞLEMLERİ okuyucu.Close() baglanti.Close() End Sub End Class

ÖRNEK 2:Yukarıdaki örneğe göre kaydetme işlemini yapan program kodlarını yazınız.

KAYDET BUTONU Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim baglanti As OleDbConnection baglanti= New OleDbConnection ( "provider=microsoft.jet.oledb.4.0;data source=D:\vt1.mdb" ) baglanti.Open() Dim sorgu As String sorgu = "INSERT INTO TABLO1 (AD,SOYAD,YAS) VALUES('" & TextBox1.Text & "' , '" & TextBox2.Text & "','" & TextBox3.Text & "')" Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) komut.ExecuteNonQuery() baglanti.Close() MsgBox( "B İLGİLER EKLENDİ" ) End Sub End Class

ÖRNEK 3:Yukarıdaki örneğe göre ID numarasına göre kayıt bulma(arama) işlemini yapan program kodlarını yazınız.

Bilg

ileri

List

ele

me

Ve

ritab

anı

Bağ

lant

ısı

Ve

ritab

anı

Bağ

lant

ısı

Page 67: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

ARAMA BUTONU

Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim yol As String yol = "provider=microsoft.jet.oledb.4.0;data source=D:\vt 1.mdb" Dim baglanti As OleDbConnection baglanti = New OleDbConnection(yol) baglanti.Open() Dim aranan As Integer aranan = Val(TextBox1.Text) Dim sorgu As String sorgu = "select*from tablo1 where ID like'%" & aranan & "%'" Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) Dim okuyucu As OleDbDataReader okuyucu = komut.ExecuteReader While okuyucu.Read = True TextBox2.Text = okuyucu.Item( "AD" ) TextBox3.Text = okuyucu.Item( "SOYAD") TextBox4.Text = okuyucu.Item( "YAS" ) End While okuyucu.Close() baglanti.Close() End Sub

ÖRNEK 4:Yukarıdaki örneğe göre kayıtları güncelleme işlemini yapan program kodlarını yazınız.

Ve

ritab

anı

Bağ

lant

ısı

Ara

nan

K

elim

e V

erit

aban

ın

dan

hang

i b

ilgile

ri a

lacağı

mız

ın

ifa

desi

Oku

nan

B

ilgile

rin

Taş

ınd

ığı

Kıs

ım

Bilg

ilerin

G

öst

eril

diği

K

ısım

Page 68: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

GÜNCELLEME BUTONU

Private Sub Button4_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim yol As String yol = "provider=microsoft.jet.oledb.4.0;data source=D:\vt 1.mdb" Dim baglanti As OleDbConnection baglanti = New OleDbConnection(yol) baglanti.Open() Dim idguncelleme As Integer Dim adguncelleme, yasguncelleme, soyadguncelleme As String idguncelleme = Val(TextBox1.Text) adguncelleme = TextBox2.Text soyadguncelleme = TextBox3.Text yasguncelleme = TextBox4.Text Dim sorgu As String 'sorgu = "update tablo1 set SOYAD='" & soyadguncell eme & "' where ID like '%" & idguncelleme & "%'" sorgu = "update tablo1 set AD='" & adguncelleme & "',SOYAD='" & soyadguncelleme & "', YAS='" & yasguncelleme & "' where ID like '%" & idguncelleme & "%'" 'sorgu = "update tablo1 set YAS='" & yasguncelleme & "' where AD like '%" & adguncelleme & "%' AND SOYAD like '%" & soyadguncelleme & "%' " Dim komut As OleDbCommand komut = New OleDbCommand(sorgu, baglanti) Dim adet As Integer = komut.ExecuteNonQuery() MsgBox( "Güncelleme Tamamlandı" ) baglanti.Close() End Sub

B)DATASET KULLANARAK VER İTABANINDAN B İLGİLERİN OKUNMASI a)Sadece DataSet Kullanarak Bilgileri Gösterme ÖRNEK 1: ID, ADI, SOYADI ve YAS bilgilerini Microsoft Access’te oluşturulan veri tabanındaki bilgilere göre DataSet kullanarak bilgileri listeleyen programın kodlarını yazınız.

Page 69: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'ba ğlantı Dim baglanti As OleDbConnection baglanti = New

OleDbConnection( "provider=microsoft.jet.oledb.4.0;data source=D:\vt1.mdb" )

'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti)

Dim veritut As DataSet veritut = New DataSet komut.Fill(veritut, "Tablo2" ) DataGridView1.DataSource = veritut.Tables( "Tablo2" ) End Sub End Class

b)DataSet ve DataView Kullanarak Bilgileri Görüntüleme(DataBinding Nesnesi Kullanımı) Listele Butonuna Yazınız Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ID AD SOYAD YAS

______

sorgu DataSet

OleDbAdapter

OleDbConnection

Visual Basic Formu Access Veritabanı

DataView DataGridView

Ole

DbC

onn

ect

ion

So

rgu

Ole

Db

Da

taA

dap

ter

Da

taS

et

Page 70: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

'ba ğlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection( "provider=microsoft.jet.oledb.4.0;data source=D:\vt 1.mdb" )

'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti)

Dim veritut As DataSet veritut = New DataSet komut.Fill(veritut, "Tablo2" )

Dim verisuz As DataView verisuz = New DataView verisuz.Table = veritut.Tables( "Tablo2" )

DataGridView1.DataSource = verisuz End Sub End Class **Sayfadaki nesnelerin (Textbox vs) DataSet’in sütunlarına bağlanması Formun Load’ına Yazınız Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'ba ğlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection( "provider=microsoft.jet.oledb.4.0;data

source=D:\vt1.mdb" ) 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim komut As OleDbDataAdapter komut = New OleDbDataAdapter(sorgu, baglanti)

Dim veritut As DataSet veritut = New DataSet komut.Fill(veritut, "Tablo2" )

Dim verisuz As DataView

Ole

DbC

onn

ect

ion

So

rgu

Ole

Db

Da

taA

dap

ter

Da

taS

et

Da

taS

et

DataGridView

Ole

DbC

onn

ect

ion

So

rgu

Ole

Db

Da

taA

dap

ter

Da

taV

iew

D

ata

Set

Page 71: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

verisuz = New DataView verisuz.Table = veritut.Tables(

TextBox1.DataBindings.Add( TextBox2.DataBindings.Add( TextBox3.DataBindings.Add( DataGridView1.DataSource = verisuz End Sub End Class

CURRENCY MANAGER(DATASET ÜZER

Burada yapılan tüm işlemler (öncekiDataSet’te gerçekleşmektedir.DataSet’le yapılan bir i Bu uygulamanın amacı yapmıgerçekleştirmektir.Çünkü DataSet üzerinde çalıdoğrudan çalışsaydık işlemler daha yavaçalıştığı bir ortamda işlemler yürütülürken veritabanı üzeolacaktır. ÖRNEK: Veritabanındaki bilgiler arasında gezinti yapmamızı saekleme,güncelleme, silme gibi iş

SONRAKİ KAYIT BUTONU Private Sub Button2_Click(System.EventArgs) Handles Dim cm As CurrencyManager Dim adet, sira As cm = Me.BindingContext(ds.Tables( adet = ds.Tables( sira = cm.Position If sira < adet - sira = sira + 1 cm.Position = sira Else : MsgBox( "son kayıttasınız"

Da

ta

Bin

ding

s DataView

verisuz.Table = veritut.Tables( "Tablo2" )

TextBox1.DataBindings.Add( "Text" , veritut.Tables(0), TextBox2.DataBindings.Add( "Text" , veritut.Tables(0), TextBox3.DataBindings.Add( "Text" , veritut.Tables(0),

DataGridView1.DataSource = verisuz

CURRENCY MANAGER(DATASET ÜZER İNDE YAPILAN UYGULAMALAR)

şlemler (önceki kayıt, sonraki kayıt, kayıt ekle, kayıt sil, ilk kayıt vs.) şmektedir.DataSet’le yapılan bir işlem veritabanına yansımamaktadır.

Bu uygulamanın amacı yapmış olduğumuz işlemleri daha hızlı bir şekilde tirmektir.Çünkü DataSet üzerinde çalışıldığında işlemler hızlıdır. Eğ

şlemler daha yavaş olacaktı.Birçok kişinin network üzerinden ortaklaşlemler yürütülürken veritabanı üzerinde çalışmak yavaş

Veritabanındaki bilgiler arasında gezinti yapmamızı sağlayan kayıt ekleme,güncelleme, silme gibi işlemleri de yapan program kodlarını yazınız.

KAYIT BUTONU

Button2_Click( ByVal sender As System.Object, ByValHandles Button2.Click CurrencyManager

As Integer .BindingContext(ds.Tables( "tablo2" ))

adet = ds.Tables( "tablo2" ).Rows.Count sira = cm.Position

1 Then sira = sira + 1 cm.Position = sira

"son kayıttasınız" )

, veritut.Tables(0), "AD" ) , veritut.Tables(0), "SOYAD") , veritut.Tables(0), "YAS" )

NDE YAPILAN UYGULAMALAR)

kayıt sil, ilk kayıt vs.) lem veritabanına yansımamaktadır.

şekilde lemler hızlıdır. Eğer veritabanıyla inin network üzerinden ortaklaşa

şmak yavaş bile olsa uygun

ğlayan kayıt lemleri de yapan program kodlarını yazınız.

ByVal e As

Page 72: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End If End Sub

ÖNCEKİ KAYIT BUTONU Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim cm As CurrencyManager Dim adet, sira As Integer cm = Me.BindingContext(ds.Tables( "tablo2" )) adet = ds.Tables( "tablo2" ).Rows.Count sira = cm.Position If sira > 0 Then sira = sira - 1 cm.Position = sira Else : MsgBox( "ilk kayıttasınız" ) End If End Sub

SON KAYIT BUTONU Private Sub Button5_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim cm As CurrencyManager Dim adet, sira As Integer cm = Me.BindingContext(ds.Tables( "tablo2" )) adet = ds.Tables( "tablo2" ).Rows.Count sira = cm.Position If sira <> adet Then sira = adet cm.Position = sira End If End Sub

İLK KAYIT BUTONU Private Sub Button4_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim cm As CurrencyManager Dim sira As Integer cm = Me.BindingContext(ds.Tables( "tablo2" )) sira = cm.Position If sira <> 0 Then sira = 0 cm.Position = sira End If End Sub

KAYIT EKLE BUTONU Private Sub Button6_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables( "tablo2" )) cm.AddNew() End Sub

KAYIT S İL BUTONU

Page 73: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button7_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Dim sira As Integer Dim adet As Integer Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables( "tablo2" )) adet = cm.Count If adet > 0 Then sira = cm.Position cm.RemoveAt(sira) MsgBox( "KAYIT S İLİNDİ" ) Else : MsgBox( "S İLİNECEK KAYIT YOK" ) End If End Sub

KAYIT GÜNCELLEME BUTONU Private Sub Button8_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Dim cm As CurrencyManager cm = Me.BindingContext(ds.Tables( "tablo2" )) cm.EndCurrentEdit() MsgBox( "de ği şiklikler güncellendi" ) End Sub

Page 74: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Sır

ala

ma

Y

ap

ar

KAYIT F İLTRELEME İŞLEMLER İ Birçok durumda kayıtların tamamına değil de sadece belirli kriterlere uyan kayıtların listesi istenebilir. Bu gibi durumlarda filtreleme (RowFilter Methodu) işlemi gerçekleştirilir. ÖRNEK: ID, AD, SOYAD ve YAS bilgileri Microsoft Access’te oluşturulan veri tabanındaki bilgilere göre soyadı dışarıdan girilip bu soyada sahip kişilerin bilgilerini filtreleyen, filtreleme yaptıktan sonra kayıtlar arasında gezinmeyi sağlayan programın kodlarını yazınız.

Formun Load’ına Yazınız Imports System.Data.OleDb Public Class Form1 Dim ds As DataSet Dim dv As DataView Dim cm As CurrencyManager Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ba ğlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection( "provider=microsoft.jet.oledb.4.0;data source=D:\personel.mdb" ) 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim elci As OleDbDataAdapter elci = New OleDbDataAdapter(sorgu, baglanti) ds = New DataSet elci.Fill(ds, "Tablo2" ) dv = New DataView dv.Table = ds.Tables( "Tablo2" ) dv.Sort = "SOYAD" DataGridView1.DataSource = dv

Page 75: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

End Sub

KAYIT F İLTRELE BUTONU Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click Dim veri As String veri = TextBox2.Text dv.RowFilter = "SOYAD='" + veri + "'" End Sub

SONRAKİ KAYIT BUTONU Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click Dim sonraki As CurrencyManager If (dv.RowStateFilter <> DataViewRowState.None) Then sonraki = Me.BindingContext(dv) sonraki.Position = sonraki.Position + 1 End If End Sub

ÖNCEKİ KAYIT BUTONU Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click Dim onceki As CurrencyManager If (dv.RowStateFilter <> DataViewRowState.None) Then onceki = Me.BindingContext(dv) onceki.Position = onceki.Position - 1 End If End Sub

Filtreleme İşlemlerinde Ve-Veya Mantığı ÖRNEK:

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click Dim veri1, veri2 As String

Page 76: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

veri1 = TextBox3.Text veri2 = TextBox4.Text If RadioButton1.Checked = True Then dv.RowFilter = "AD='" + veri1 + "' or SOYAD='" + veri2 + "'" ElseIf RadioButton2.Checked = True Then dv.RowFilter = "AD='" + veri1 + "' and SOYAD='" + veri2 + "'" End If End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click dv.RowFilter = Nothing End Sub

DataView Kullanarak Sütun Toplamı Aldırma ÖRNEK: DataGridView’deki kişilerin yaşlarını toplayıp Label’da gösteren programın kodlarını yazınız.

Formun Load’ına Yazınız Imports System.Data.OleDb Public Class Form1 Dim ds As DataSet Dim dv As DataView Dim cm As CurrencyManager Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ba ğlantı Dim baglanti As OleDbConnection baglanti = New OleDbConnection( "provider=microsoft.jet.oledb.4.0;data source=D:\personel.mdb" ) 'sorgulama Dim sorgu As String sorgu = "select * from Tablo1" Dim elci As OleDbDataAdapter elci = New OleDbDataAdapter(sorgu, baglanti) ds = New DataSet elci.Fill(ds, "Tablo2" ) dv = New DataView dv.Table = ds.Tables( "Tablo2" ) dv.Sort = "soyad" DataGridView1.DataSource = dv Dim adet, i, toplam As Integer adet = dv.Count 'Kayıt Sayısını verir For i = 0 To adet - 1 toplam = toplam + (dv(i)( "yas" ))

Page 77: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Next i Label2.Text = toplam.ToString( "##### yıl" ) End Sub End Class

Page 78: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

MASTER-DETA İL BAĞLANTISI KURMA Tablolar Arası İlişki Kurma vt1.mdb altında iki tablo oluşturun.

1. Tabloya Tablo1 ismini verin. 2. Tabloya Tablo2 ismini verin.

Tablo1 Tablonun Yapısı Tablo2 Tablosunun Yapısı

NO Metin

AD Metin

SOYAD Metin

Tablolar arasında ilişki kuran nesne DataRelation nesnesidir. ÖRNEK: Yukarıda verilen bilgilere göre iki tablo arasındaki ilişkiyi aşağıdaki şekilde gösteren program kodlarını yazınız.

Form’un Load’ına Yazınız. 'ANA TABLO ILE BAGLANTI KURACAK==================== ======================== Dim baglanti As String baglanti = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=D:\vt1.mdb" 'Dim ds As DataSet ds = New DataSet() Dim sorgu1 As String sorgu1 = "SELECT * FROM Tablo1" Dim verial1 As OleDbDataAdapter verial1 = New OleDbDataAdapter(sorgu1, baglanti) verial1.Fill(ds, "Tablo10" )

NO Metin

VIZE Sayı

FINAL Sayı

Page 79: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

'ALT TABLO ILE BAGLANTI KURACAK==================== ============ Dim sorgu2 As String sorgu2 = "SELECT * FROM Tablo2" Dim verial2 As OleDbDataAdapter verial2 = New OleDbDataAdapter(sorgu2, baglanti) verial2.Fill(ds, "Tablo20" ) 'ANA TABLO ILE ALT TABLO ARASINDAKI ILISKIYI KURUYO R ========= iliski = New DataRelation( "AnaAlt" , ds.Tables( "Tablo10" ).Columns( "NO" ), ds.Tables( "Tablo20" ).Columns( "NO" )) ds.Relations.Add(iliski) 'DATAVIEW VE DATAGRIDVIEW ICERISINDE DATASET IN ICE RISINDEKI TABLO10 GORUNTULUYOR.======== goruntu1 = ds.Tables( "Tablo10" ).DefaultView DataGridView1.DataSource = goruntu1 'HAYALI BIR YENI TABLO OLUSTURUYORUZ.============== ============ tablo = New DataTable Dim sutun1 As DataColumn sutun1 = New DataColumn( "NO" ) sutun1.DataType = System.Type.GetType( "System.String" ) tablo.Columns.Add(sutun1) Dim sutun2 As DataColumn sutun2 = New DataColumn( "VIZE" ) sutun2.DataType = System.Type.GetType( "System.String" ) tablo.Columns.Add(sutun2) Dim sutun3 As DataColumn sutun3 = New DataColumn( "FINAL" ) sutun3.DataType = System.Type.GetType( "System.String" ) tablo.Columns.Add(sutun3) İki tablo arasındaki ili şkinin DataGridView ‘de gösterilmesi Private Sub DataGridView1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.Click Dim AltTablonunAktifSatiri() As DataRow Dim satir1 As DataRow Dim satir2 As DataRow Dim goruntu2 As DataView Dim i, adet As Integer Dim yonet As CurrencyManager yonet = Me.BindingContext(goruntu1) AktifSatir = yonet.Position Me.Text = AktifSatir.ToString() tablo.Clear() AltTablonunAktifSatiri = ds.Tables( "Tablo10" ).Rows(AktifSatir).GetChildRows( "AnaAlt" )

Page 80: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

adet = AltTablonunAktifSatiri.Length - 1 For i = 0 To adet satir2 = AltTablonunAktifSatiri(i) satir1 = tablo.NewRow() satir1.ItemArray = satir2.ItemArray tablo.Rows.Add(satir1) Next goruntu2 = New DataView(tablo) DataGridView2.DataSource = goruntu2 End Sub

Page 81: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

BİLGİLERİN RAPORLANMASI Veritabanı tablo bilgilerine ulaşmak ve bu bilgileri yazıcıya göndermek için projenize Crystal Reports dökümanı eklemelisiniz. Projenize bu dökümanı eklemek için aşağıdaki adımları izleyiniz.

1) Öncelikle veritabanınızı hazırlayınız. Daha sonra yeni bir proje sayfası açınız. 2) Project menüsüne tıklayarak açılan seçeneklerden “Add New Item” menüsüne

tıklayınız. Aşağıdaki pencere açılacaktır.

Bu pencereden “Crystal Reports” dökümanını seçip “Add” butonuna tıklayınız. 3)Karşınıza aşağıdaki gibi rapor seçeneklerini gösteren bir ekran görüntüsü gelecektir. Bu pencereden “Using The Report Wizard” seçeneğini ve Choose an Expert kısmından da “Standard’ı “ seçiyoruz.

Page 82: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

4)Karşınıza gelen yeni pencereden ilk olarak “Available Data Sources” listesinden “Create New Connection” seçeneğinin solundaki “+” işaretine tıklayın. Daha sonra açılan seçeneklerden bağlanacağınız veritabanını seçiniz.

Page 83: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Microsoft Access’le bağlantı kuracağımız için OLEDB (ADO) klasörünün solundaki “+” işaretine tıklayın. Aşağıdaki pencere açılacaktır.

Page 84: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

5)Bu pencerede Microsoft Jet 4.0 OLE DB Provider seçeneğini seçerek İleri butonuna tıklayın. 6)Açılan yeni pencereden DataBase Name kısmındaki butona tıklayarak daha önce oluşturduğumuz veritabanını bulun. Veritabanını bulduktan sonra Son butonuna tıklayın.

Page 85: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

7)Karşımıza gelen pencerede veritabanı içerisindeki tüm tablolar görünecektir. Kullanmak istediğimiz tabloyu seçip sağ ok tuşuna basarak tablonun Selected Tables kısmında gözükmesini sağlayın.

Page 86: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

8)İleri butonuna tıkladıktan sonra tablonun alanları “Fields” gelecektir. Bunları görmek için “+” i şaretine tıklayın. Hangi sütun başlıklarına ihtiyacınız varsa bunları sağ ok tuşuna basarak Fields to Display listesinde görünmesini sağlayınız. Sağ taraftaki listeye aktardığınız sütunların sayfa üzerindeki yerlerini ayarlamak için sağ üst tarafta yer alan aşağı – yukarı düğmelerini kullanabilirsiniz. İleri tuşuna basarak bu pencereyi kapatın. 9) ”Grouping” ve “Record Selection” sayfalarını İleri düğmesini tıklayarak geçeniz. 10)Açılan “Record Style” (Raporlama Stilleri) penceresinden raporunuza ait stili seçip Son düğmesine tıklayabilirsiniz.

Page 87: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Bu aşamadan sonra aşağıdaki şekilde uygulamanıza bir adet “rpt” uzantılı sayfa oluşacaktır.

11)Şablonumuz hazırdır. Bu şablonu uygulamamıza eklemeliyiz. Bunun için normal bir uygulama sayfa açalım.”Project” menüsünden “Add Windows Form” seçeneğini seçiniz. Gelen pencereden “Windows Form” seçeneğini seçip “Add” düğmesine tıklayınız.

Page 88: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

12)Normal uygulama sayfasını göreceğiz. Bu Form2 olacaktır. Daha önceden açılan Form1’e bir buton ekleyip Form2’yi çağıracağız.Form2’nin içerisinde de hazırladığımız raporlama sayfası görüntülenecektir. 13)Form2 açıkken sol tarafta “Toolbox” penceresinden “CrystalReportViewer” kontrolünü sürükleyerek formunuzun üzerine bırakın. Sayfada bu nesne gözükecektir.

13)Formunuza sürüklediğiniz CrystalReportViewer1 kontrolünü seçin. Properties penceresinden “Report Source(Raporlama Kaynağını)” özelliğinde bulunan “Browse” seçeneğini tıklayarak daha önceden kaydetmiş olduğunuz “CrystalReport1.rpt” dosyasını bulun. Şayet raporunuz aktif klasör içerisinde ise bu pencereden direk seçebilirsiniz.

14)Şablonumuzu görmüş olacağız.

Page 89: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

15)Form1’e bir buton yerleştirip Form2’yi çağıracağız. Bunun için butonun içerisine aşağıdaki kodları yazınız.

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm As New Form2 frm.Show() End Sub

GRAFİK OLU ŞTURMAK

“Crystal Report” dökümanlarını kullanarak tablonuza ait verilerin grafiklerini bastırabilirsiniz. Bunun için önce veritabanını hazırlayınız. Daha sonra aşağıdaki adımları izleyiniz.

3) 1)Yeni bir proje sayfası açınız. Project menüsüne tıklayarak açılan seçeneklerden “Add New Item” menüsüne tıklayınız. Aşağıdaki pencere açılacaktır.

Page 90: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Bu pencereden “Crystal Reports” dökümanını seçip “Add” butonuna tıklayınız. 3)Karşınıza aşağıdaki gibi rapor seçeneklerini gösteren bir ekran görüntüsü gelecektir. Bu pencereden “Using The Report Wizard” seçeneğini ve Choose an Expert kısmından da “Standard’ı “ seçiyoruz.

Page 91: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

4)Karşınıza gelen yeni pencereden ilk olarak “Available Data Sources” listesinden “Create New Connection” seçeneğinin solundaki “+” işaretine tıklayın. Daha sonra açılan seçeneklerden bağlanacağınız veritabanını seçiniz.

Page 92: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Microsoft Access’le bağlantı kuracağımız için Access/Excel(DAO) klasörünün solundaki “+” işaretine tıklayın. Aşağıdaki pencere açılacaktır. 5)Açılan yeni pencereden DataBase Name kısmındaki butona tıklayarak daha önce oluşturduğumuz veritabanını bulun. Veritabanını bulduktan sonra Son butonuna tıklayın.

Page 93: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

6)Karşımıza gelen pencerede veritabanı içerisindeki tüm tablolar görünecektir. Kullanmak istediğimiz tabloyu seçip sağ ok tuşuna basarak tablonun Selected Tables kısmında gözükmesini sağlayın.

Page 94: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

7)İleri butonuna tıkladıktan sonra tablonun alanları “Fields” gelecektir. Bunları görmek için “+” i şaretine tıklayın. Hangi sütun başlıklarına ihtiyacınız varsa bunları sağ ok tuşuna basarak Fields to Display listesinde görünmesini sağlayınız. İleri tuşuna basarak bu pencereyi kapatın.

Page 95: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

8)”Grouping” ve “Record Selection” sayfalarını İleri düğmesini tıklayarak geçeniz. 9) Açılan “Record Style” (Raporlama Stilleri) penceresinden raporunuza ait stili seçip Son düğmesine tıklayabilirsiniz.

Page 96: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Bu aşamadan sonra aşağıdaki şekilde uygulamanıza bir adet “rpt” uzantılı sayfa oluşacaktır.

Araç çubuklarında yer alan aşağıdaki nesneyi aktifleştirin.

Page 97: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

“Grafik” iconu üzerine Mouse ile tıklayarak aşağıdaki pencerenin açılmasını sağlayın.

“Type” yaprağında yer alan “Chart Type” listesinden verilerinize uygun bir stil seçin. Ardından “Data” yaprağına geçebilirsiniz.

Page 98: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Yukarıdaki pencerede gösterilen ayarları yaptıktan sonra “Text” yaprağına geçebilirsiniz.

Page 99: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Bu bölümde dilediğiniz alanı değiştirebilirsiniz. Yapmış olduğunuz değişiklikler grafiğiniz üzerindeki etiketlere yansıyacaktır.”Tamam” düğmesine tıklayarak işlemler son bulacaktır.

Page 100: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Ekran görüntünüz yukarıdaki şekilde olacaktır. Bu şablonu uygulamamıza eklemeliyiz. Bunun için normal bir uygulama sayfa açalım.”Project” menüsünden “Add Windows Form” seçeneğini seçiniz. Gelen pencereden “Windows Form” seçeneğini seçip “Add” düğmesine tıklayınız.

12)Normal uygulama sayfasını göreceğiz. Bu Form2 olacaktır. Daha önceden açılan Form1’e bir buton ekleyip Form2’yi çağıracağız.Form2’nin içerisinde de hazırladığımız raporlama sayfası görüntülenecektir.

Page 101: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

13)Form2 açıkken sol tarafta “Toolbox” penceresinden “CrystalReportViewer” kontrolünü sürükleyerek formunuzun üzerine bırakın. Sayfada bu nesne gözükecektir.

13)Formunuza sürüklediğiniz CrystalReportViewer1 kontrolünü seçin. Properties penceresinden “Report Source(Raporlama Kaynağını)” özelliğinde bulunan “Browse” seçeneğini tıklayarak daha önceden kaydetmiş olduğunuz “CrystalReport1.rpt” dosyasını bulun. Şayet raporunuz aktif klasör içerisinde ise bu pencereden direk seçebilirsiniz.

14)Şablonumuzu görmüş olacağız. 15)Form1’e bir buton yerleştirip Form2’yi çağıracağız. Bunun için butonun içerisine aşağıdaki kodları yazınız.

Private Sub Button1_Click_1( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim yeni As New Form2 yeni.Show() End Sub

Page 102: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal
Page 103: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

VB.NET DE RANDOM DOSYA KULLANIMI

Public Class Form1

Structure sablon

Dim no As Long

Dim ad As String

Dim vize As Byte

Dim final As Byte

End Structure

Dim kayitno As Integer

Dim ogrenci As sablon

Private Sub Button1_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles Button1.Click

'KAYDET

FileOpen(1, "C:\Documents and Settings\Ktef\dosya1.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

kayitno = 0

Do While Not EOF(1) = True

kayitno = kayitno + 1

FileGet(1, ogrenci, kayitno)

Loop

ogrenci.no = Val(TextBox1.Text)

ogrenci.ad = TextBox2.Text

ogrenci.vize = Val(TextBox3.Text)

ogrenci.final = Val(TextBox4.Text)

kayitno = kayitno + 1

FilePut(1, ogrenci, kayitno)

FileClose(1)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button2.Click

'LISTELEME

FileOpen(1, "C:\Documents and Settings\Ktef\dosya1.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

kayitno = 0

ListBox1.Items.Clear()

Do While Not EOF(1) = True

kayitno = kayitno + 1

FileGet(1, ogrenci, kayitno)

ListBox1.Items.Add(kayitno & "." & ogrenci.no & "," & ogrenci.ad & "," &

ogrenci.vize & "," & ogrenci.final)

Loop

FileClose(1)

End Sub

Page 104: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click

'ARAMA

FileOpen(1, "C:\Documents and Settings\Ktef\dosya1.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

kayitno = 0

ListBox2.Items.Clear()

Do While Not EOF(1) = True

kayitno = kayitno + 1

FileGet(1, ogrenci, kayitno)

If TextBox2.Text = ogrenci.ad Then

ListBox2.Items.Add(kayitno & "." & ogrenci.no & "," & ogrenci.ad & "," &

ogrenci.vize & "," & ogrenci.final)

End If

Loop

FileClose(1)

End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button4.Click

'KAYIT SİLME

Dim i As Integer

FileOpen(1, "C:\Documents and Settings\Ktef\dosya1.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

FileOpen(2, "C:\Documents and Settings\Ktef\dosya2.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

kayitno = 0

i = 0

Do While Not EOF(1) = True

kayitno = kayitno + 1

FileGet(1, ogrenci, kayitno)

'silinecek kayıt bulunduysa bunu ikinci dosyaya kaydetme

If TextBox2.Text <> ogrenci.ad Then

i = i + 1

FilePut(2, ogrenci, i)

End If

Loop

FileClose(1)

FileClose(2)

Page 105: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Kill("C:\Documents and Settings\Ktef\dosya1.txt") 'Harddiskten ana dosyayı

siler

Rename("C:\Documents and Settings\Ktef\dosya2.txt", "C:\Documents and

Settings\Ktef\dosya1.txt") '2. dosya ile 1. dosyanın adını değiştirir.

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button5.Click

'KAYIT DUZELTME

FileOpen(1, "C:\Documents and Settings\Ktef\dosya1.txt", OpenMode.Random,

OpenAccess.ReadWrite, , 200)

kayitno = 0

Do While Not EOF(1) = True

kayitno = kayitno + 1

FileGet(1, ogrenci, kayitno)

If TextBox1.Text = ogrenci.no Then

ogrenci.no = Val(TextBox1.Text)

ogrenci.ad = TextBox2.Text

ogrenci.vize = Val(TextBox3.Text)

ogrenci.final = Val(TextBox4.Text)

FilePut(1, ogrenci, kayitno)

End If

Loop

FileClose(1)

End Sub

End Class

Public Class Form1

'Alt Degişken yapısı

Structure AltDegiskenler

Dim Ad As String

Page 106: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Dim Soyad As String

Dim Vize As Integer

Dim Final As Integer

Dim Ortalama As Double

End Structure

'Ana degişkeni tanımlıyoruz.

Dim Ogrenci As AltDegiskenler

Dim KayitNo, i, j As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles Button1.Click

FileOpen(1,

"C:\Users\icayiroglu\Documents\DENEME\deneme1.txt",

OpenMode.Random, OpenAccess.ReadWrite, , 100)

'Dosyadaki kayit sayısını bulmamızı sağlıyor.

Do While Not EOF(1) = True

i = i + 1

FileGet(1, Ogrenci, i)

Loop

KayitNo = i

KayitNo = KayitNo + 1

Ogrenci.Ad = TextBox1.Text

Ogrenci.Soyad = TextBox2.Text

Ogrenci.Vize = Val(TextBox3.Text)

Ogrenci.Final = Val(TextBox7.Text)

Ogrenci.Ortalama = Ogrenci.Vize * 0.4 + Ogrenci.Final * 0.6

FilePut(1, Ogrenci, KayitNo)

FileClose(1)

End Sub

Page 107: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

Private Sub Button2_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles Button2.Click

FileOpen(1,

"C:\Users\icayiroglu\Documents\DENEME\deneme1.txt",

OpenMode.Random, OpenAccess.ReadWrite, , 100)

'Sonsuz döngü, dosyanın sonu degilken çalışacaktır.

Do While Not EOF(1) = True

j = j + 1

FileGet(1, Ogrenci, j)

ListBox1.Items.Add(Ogrenci.Ad & "," & Ogrenci.Soyad & "," &

Ogrenci.Vize & "," & Ogrenci.Final & "," & Ogrenci.Ortalama)

Loop

FileClose(1)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles Button3.Click

Dim AranacakAd, AranacakSoyad As String

ListBox2.Items.Clear()

AranacakAd = TextBox11.Text

AranacakSoyad = TextBox10.Text

FileOpen(1,

"C:\Users\icayiroglu\Documents\DENEME\deneme1.txt",

OpenMode.Random, OpenAccess.ReadWrite, , 100)

KayitNo = 0

Do While Not EOF(1) = True

Page 108: VISUAL BASIC - ibrahimcayiroglu.com · VISUAL BASIC.NET ÖRNEK 1:Tamam butonuna basıldı ğında “MERHABA” mesajını veren programı yazınız. Private Sub Button1_Click( ByVal

KayitNo = KayitNo + 1

FileGet(1, Ogrenci, KayitNo)

If Ogrenci.Ad = AranacakAd Or Ogrenci.Soyad =

AranacakSoyad Then

ListBox2.Items.Add(Ogrenci.Ad & "," & Ogrenci.Soyad & ","

& Ogrenci.Vize & "," & Ogrenci.Final & "," & Ogrenci.Ortalama)

End If

Loop

FileClose(1)

End Sub

End Class