Visual Basic

**Visual Basic**, Microsoft tarafından, Basic programlama dili üzerinde geliştirilmiş, olay yönlendirmeli, üst seviye, nesne tabanlı ve görsel bir programlama dilidir. Öğrenilmesi de kullanılması da oldukça kolaydır.

Görsel programlama için basit bir tanım yapmak gerekirse "*göz göre göre program yapmak*" diyebiliriz. Bu programlama anlayışı; önceki yıllarda kullanılan temel programlama dillerindeki bir düzenleyici (editör) ekran üzerine satır satır yazılan programlamanın yerine, Grafiksel Kullanıcı Arabirimi (GUI)’nin ve bu arabirim içerisinde program geliştirme amacıyla bulunan Entegre Geliştirme Ortamı (IDE) adlı bir araçlar koleksiyonunun almasıyla ortaya çıkmıştır.

Visual Basic'e gelince, öncelikle Basic programlama dili temel alınarak ortaya çıkarılmış olduğunu söylemek gerekir. Basic (**B**eginners-**A**ll Purpose **S**ymbolic **I**nstruction **C**ode) kelime anlamı olarak "*Yeni Başlayanlar İçin Çok Amaçlı Sembolik Talimat Kodu*" anlamına gelmektedir. Basic metin tabanlı düzenleyiciler (editörler) arasında en çok rağbet göreni olmuştur. Başlangıçta çok basit programların geliştirilmesi amacıyla kullanılırken, bu ilgi dolayısıyla gitgide gelişerek son halini almıştır.

## MS visual basic türevleri
Microsoft, Visual Basic dilinin değişik türevlerini oluşturmuştur.

* **VBA** (*Visual Basic for Applications*)

Microsoft Office gibi yazılımlar içerisinde otomasyon oluşturabilmek için geliştirilmiş bir yapıdır.
 
* **VB Script**

**ASP** (*Active Server Pages*) web Platformunun standart dilidir.
Visual Basic sözdizimine dayalıdır. **ASP** ve **VB Script**, **ASP.NET** ile aynı şey değildir. ASP.NET, Visual Basic.Net ile benzer kategoridedir.

* **Visual Basic.NET**

**Visual Basic.NET**, Visual Basic 6.0 Platformunun varisi olmakla birlikte farklı bir yapıdır ve **.NET Frame work** üzerinde çalışır. Bu Platform Visual Basic dilinin Obje Temelli özelliklerini güçlendirmek için atılmış bir adımdır. Ancak Visual Basic dilinin onu ileri seviye bir dil yapan kullanıcı dostu özelliklerinden ödün verildiği söylenebilir. Microsoft'un Visual Basic.NET'le birlikte Visual Basic'i VB 6.0'dan farklı bir yapıya dönüştürmesinin ardından RAD Basic ve TwinBASIC gibi VB 6.0 uyumlu olduğu iddia edilen 3. parti yazılımlar piyasaya çıkmıştır.

## Yardım ve kullanım
Visual Basic programlama diline ait tüm komutları ve bunların kullanım kurallarını bilmeniz oldukça güçtür. Bu nedenle programlarınızı hazırlarken birçok defa yardım almak amacıyla bir kitaba ya da internete ihtiyaç duyarız. İnternette programlama üzerine hazırlanmış yardım alabileceğimiz pek çok site mevcuttur. Bunun yanı sıra Visual Basic programlama dili kendi içerisinde de bir yardım menüsü barındırmaktadır. F1 tuşuna basılarak yardım menüsü görüntülenebilir.

Visual Basic'de yardım alabilmemiz için, bunların kütüphanelerini yani yardım içeriğini barındıran **MSDN** (**''M**icro**s**oft **D**eveloper **N**etwork*)'yi kurmamız gereklidir. MSDN'i Visual Basic kurulumu tamamlandıktan sonra karşınıza gelecek olan uyarı ekranını takip ederek kurabilirsiniz. Ancak Visual Basic kurulum CD'lerinin tamamına ya da MSDN kurulum dosyalarına ihtiyacınız olacaktır.

Yardım ekranı, internet sayfasına çok benzeyen bir görüntüye sahiptir. "*Contents*" yazan bölümden konu başlıklarına göre istediğiniz başlığı seçerek, "*Index*" bölümünden tüm başlık ve alt başlıkları alfabetik sıraya uygun şekilde inceleyerek ya da aradığınız konunun ilk harflerini girerek, "*Search*" bölümünden ise aradığınız konu içeriğini yazıp o konu ile ilgili tüm başlık ve alt başlıklara ulaşarak arama yaptırabilirsiniz. Aranıp bulunan konunun üzeri tıklanarak aynen bir web sayfasında olduğu gibi yan
tarafta görüntülenmesi sağlanabilir. "*Favorites*" kısmı ise arama için değil daha çok eski yapmış olduğumuz aramalara kolay ulaşmak için kullanılır. Örneği araştırıp bulduğunuz bir konu ile ilgili yardım ekranı açık iken, *Favorites* kısmına gider ve "*Add*" butonuna basarsanız, orada yer alan listeye o sayfanın eklendiğini göreceksiniz. Bir konu ile ilgili yardım sayfası görüntülenirken, bir sayfaya sığmayabilir bu durumda araç çubuğunda yer alan "*Forward*" butonu yardımıyla ilerlenebilir. Konu ile ilintili olabileceğini düşündüğünüz bir alt başlığa gitmek için "*Next*", bir üst başlığa gitmek için ise "*Previous*" butonu kullanılabilir. Arayıp bulmuş olduğunuz konu ile ilgili açılan sayfanın hemen üstünde "*See Also*", "*Example*", "*Specifics*", "*Applies To*" ve "*Tasks*" gibi linklerin birini ya da birkaçını görebilirsiniz. Bunlar eğer var ise bu konuyla ilintili başka konuları, örnekleri, özellikleri, uygulamaları görmenizi sağlar. Ayrıca sayfanın içerisinde, konu anlatımı sırasında altı çizili ve mavi renkte göreceğiniz kelimelerinde, o kelimelerle ilgili yardım sayfalarına sizi yönlendiren birer link olduğunu belirtmemiz gerekir eğer link belirtmezseniz düzgün bir sonuç çıkartamazsınız.

== Özellikleri ==
* [[DAO]], [[RDO]] ve [[ADO]] yöntemleri ile [[SQL]], [[MySQL]], [[Microsoft Access]], [[Paradox]] ve [[Oracle]] gibi çeşitli veri tabanlarına bağlanabilir.
* [[Active-X]] denetimleri ve nesneleri oluşturabilir.
* [[Ascii]] ve [[İkili]] dosya biçimleriyle çalışabilir.
* Nesne tabanlı bir dildir.
* [[Wındows API]] çağrısı ve benzeri harici işlev çağrıları yapabilir.

== Örnek kodlar ==
=== Yorum Satırları ===
 <syntaxhighlight lang="vb">
'Bu 1. öntanımlı kod/yorum satırıdır
REM Bu ise 2. öntanımlı tanım/yorum satırıdır.
 </syntaxhighlight>
=== Mesaj kutusu ===
* Bu örnek kod, bir mesaj penceresi açmayı sağlar, örneğin bu kodu bir butonun içine yazarsanız, programı çalıştırıp o butona bastığınızda küçük bir pencere açılır ve içinde "Merhaba, Dünya!" yazar:

<code>
 <syntaxhighlight lang="vb">
 Private Sub Button1_Clicked() Handles Button1.Click
    ' Button1'e tıklayınca Button 1'un Click Event'i Tetiklenir ve Bu Event'a Bağlı Prosedürler Çalışır.
    MsgBox("Merhaba, Dünya!") 
 End Sub
 </syntaxhighlight>
</code>

=== Basit Yönetimler ===
* Bu kod kullanıldığı Form Load'a yazıldığı zaman, Checkbox'umuz işaretli iken Textbox yazılabilir olacak. Fakat işaretli değilse Textbox kapalı kalacak.
 <syntaxhighlight lang="vb">
 Private Sub FormLoad()
    If checkbox1.Checked = False Then 'CheckBox işaretli değil
        textbox1.Enabled = True 'CheckBox işaretli değilken TextBox'umuz yazı yazılabilir. Yani "enabled" olacak.
    Else
        textbox1.Enabled = False
    End If
 End Sub
 </syntaxhighlight>

* Bu kod Button1'e yazıldığında Label1'deki text sayı ise 1 artar. Yoksa "Less Than Infinity" hatası alınır.
 <syntaxhighlight lang="vb">
 Private Sub Button1_Clicked() Handles Button1.Click
    Label1.Text = (Label1.Text) + 1
    'Alttaki kod ise daha karmaşık. Label2'yi x kabul edersek, Label1'e x'in bir fazlasını ekleyecek.
    Label1.Text = (Label1.Text) + (Label2.Text + 1)
    'Alttaki kod öncekilerden daha karmaşık. Label3'ü y kabul edersek, x ile y'nin 1'er fazlasını toplayıp label1'e ekleyecek.
    Label1.Text = (Label1.Text) + ((Label2.Text + 1) + (Label3.Text + 1))
    'En karmaşık olarak alttakini örnek verebiliriz. Label4'ü z kabul edersek, x + 1 ile y+1'i çarpacak ve bunun sonucu ile
    'z'yi çarparak Label1'e ekleyecek.
    Label1.Text = (Label1.Text) + (((Label2.Text + 1) * (Label3.Text + 1)) * Label4.Text)
    'Alttaki komut button'a yazıldığında Label1'deki değer Textbox 1'e eşitlenecek (Less Than hatası yok.)
    Label1.Text = TextBox1.Text
 End Sub
 </syntaxhighlight>
Kod içinde yeşil yazıyla yazan kısım, bir açıklama metnidir. Yani yazmış olduğunuz kodun ne anlama geldiğini istediğiniz şekilde yazabilirsiniz, programınızı daha sonra güncellemek isterseniz ve hangi kodun ne işe yaradığını unutmamak isterseniz, yeni bir satıra geçip veya kodun bulunduğu satırın sonuna bir tane tek tırnak (*' ' **) işareti koymalısınız, daha sonra boşluk bırakarak açıklamanızı yazabilirsiniz.

=== İki sayıyı toplama ===
* Bu kod ise iki sayıya işlem yaptırmaya yaramaktadır, örneğin toplama, çıkarma, çarpma, bölme, kalanı gösterme vs. yeni açtığınız bir forma üç tane "TextBox" (metin kutusu) ve bir tane de "Button" (buton) koyunuz. Daha sonra butonun içine şu kodları yazın:

<code>
 <syntaxhighlight lang="vb">
 Private Sub Button1_Click()
    ' Button1'e tıklayınca Text1 ve Text2'deki sayıları toplar, sonucu Text3'te gösterir
    TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)
 End Sub
 </syntaxhighlight>
</code>

İki sayıya işlem yaptırma kodu bu kadar basittir, istediğiniz işlemi yaptırmak için kod içinde geçen artı (<font color="red">**+**</font>) işareti yerine; eksi (<font color="red">**-**</font>), çarpma (<font color="red">*****</font>), bölme (<font color="red">**/**</font>), tam sayı bölme (<font color="red">**\**</font>), bölümün kalanını gösterme (<font color="red">**mod''') gibi işaretleri ya da kısaltmaları yazabilirsiniz.

## Ayrıca bakınız
* Microsoft yazılımları listesi

## Dış bağlantılar
* Computer-Books.us  - Ücretsiz indirilebilen Visual Basic kitap koleksiyonu. 
* HashVB Wiki 
* VB 6.0 at MSDN 
* VB City  
* VB Lessons on Free-Ed.net  
* Visual Studio | MSDN