1. Yeni başlayanlara kısa Visual Basic tanıtımı

Microsoft firması tarafından geliştirilen Visual Basic, atası olan QBASIC derleyicisinin geliştirilmiş ve Windows ortamına uyarlanmış olan sürümü olarak adlandırılabilir. Windows ortamına uyarlandığı için de Nesneye Yönelimli bir dildir. VBX kontrollerini destekleyen ilk dillerden biridir. VBasic'de, 1.0 sürümünden 6.0 sürümüne kadar bir çok yenilik ve değişiklik olmuştur. Bunlardan biri de, arayüzünün güçlü ve etkili bir görünüm kazanmasıdır. Visual Basic, devamlı geliştiği bu süre sonunda yüksek hızlı uygulamalar, OLE serverlar, ActiveX kontrolleri ve daha bir çok şey geliştirilebilecek hale gelmiştir.

Microsoft Windows için program geliştiren programcıların yüzde yirmibeşi Visual Basic'i tercih etmektedirler. Visual Basic'i en popüler programlama dillerinden biri yapan en önemli nedenlerden biri de büyük olasılıkla kolay olmasıdır. Visual Basic de program yazmak için çok fazla teknik bilgiye sahip olmak gerekmez. Sadece kontrolleri form üzerine yerleştirmek ve kodu yazmak yeterli. Kısaca Visual Basic, programcıyı, programın kullanıcıya yansıyan şekli için kod yazmak zorunda bırakmayan bir dildir.

Zamanla Microsoft dışındaki bazı şirketler tarafından benzer programlama dilleri geliştirildi. Muhtemelen bunların en popüleri Borland Delphi'dir.

İşte Visual Basic'in 5.0 sürümüne eklenen en önemli değişiklik ve yenilikler:

Derlenme işlemci tipine, hızına ve program büyüklüğüne göre optimize ediliyor.
Tekrar tasarlanmış form derleyici
3 Boyutlu grafik desteği
Visual C++’daki gibi sınıf, form ve kontrol "büyücüleri" (wizard)
Otomatik kod tamamlama
Birden çok veritabanı desteği
Animasyonlu GIF’leri destekleyen kontroller
Resim kontrolü JPEG formatını destekliyor
Birden çok kaynak dosyasını destekliyor.
Fonksiyon adresleme
Visual C++ ‘ın 4.x sürümündeki sürükle ve bırak destekli düzenlemeyi destekliyor.
Windows tabanlı ActiveX kontrollerini yaratmak için yeni derleyici
OCX kontrollerini yaratma imkanı !
Ağ üzerinde OLE
Yeni kullanıcı arabirimi ve ActiveX desteği
Birden çok projeyi kontrol edebilen proje penceresi
16 Bit uygulama yaratılamıyor...
Visual C++ Developer Studio tabanlı yeni arabirim
Visual Basic formlarını otomatik olarak HTML sayfasına çevirebilme imkanı
Internet üzerinde bulunabilen TCP/IP kontrollerini tanıyabiliyor
Kullanıcı arabiriminde projenin hiyerarşisini görüntüleyen bir pencere var
Yığın olarak güncellenen geliştirilmiş RDO (Remote Data Objects)
Yazım hatası yaptığınızda o komutu nasıl kullanacağınıza dair ipuçları veriliyor.
Yeni komutlar (Debug.Assert, AddressOf...) ve veri tipleri (Decimal Variant...)
Derleyici artık bir çok derleme opsiyonu sunuyor.
Çok hızlı ve küçük EXE’ler oluşturuluyor!

 

2. Program üretiyorsunuz; ama ürettiğiniz program nelerden oluşuyor? Her bir parça ne işe yarıyor? Biliyor musunuz? Ama olmaz ki! İşte bilgiler aşağıda:

 

Bir proje geliştirirken, uygulamanızda bulunabilecek proje parçaları şunlardır:
. Projeye ait tüm elemanları tutan (.vbp) proje dosyası
. Her bir form için (.frm) form modülü
. Her bir formun resim, icon gibi özelliklerini tutan veri dosyası (.frx)
. Opsiyonel olarak, (.cls) class modül
. Opsiyonel olarak, (.bas) standart modül
. Opsiyonel olarak, bir yada fazla ActiveX kontroller (.ocx)
. Opsiyonel olarak, kaynak dosyası (.res)


Proje dosyası (vbp) projenin tüm dosyalarını ve proje ile ilgili tüm dosyaları tutar. Bu bilgi projeyi her kaydedişinizde yenilenir. Proje tamamlandığında onu bir exe dosyasına dönüştürebilirsiniz. File menüsünden Make project.exe 'yi seçmeniz gerekir. VB'nin Professional ve Enterprise versiyonları ile ocx ve dll uzantılı yürütülebilir dosyalar da üretebilirsiniz
   

Project Explorer


Yeni dosyalar ekleyip yada çıkardıkça VB yapılan değişiklikleri Project Explorer penceresinde
gösterir. Bu pencerede projeye ait olan dosyaların listesi vardır.

Project Explorer Penceresi

3.Olay Yönlendirmeli Programcılık Nedir?

Visual Basic için olay yönlendirmeli programlama dili denir. Peki bu olaylar nedir?


GİRİŞ:

Belki Windows’a yeni geçiş yapan bir DOS programcısısınız, veya VB’ ye henüz yeni başlamış bir programcısınız. Bu alandaki geçmişinize bakmaksızın, öğrenmeniz gereken en önemli konulardan biri olay sürümlü programlarıdır. Geleneksel programlama işleminde, uygulama başlar (genellikle MAİN procedure ismi ile), bu noktadan program ilerler ve bütün olaylardan sorumludur. Keyboard , mouse girişini, ekran görüntüsünü, ve benzeri tüm olayları kapsamak zorundadır. Artık WINDOWS ve VB bu detayları sizin için düşünmüştür. Hangi uygulamayı yapmak istiyorsanız bu olay üzerine yoğunlaşma imkanını size verir. Örneğin bir düğmeye tıkladığınızda mesaj yazdıran, bir program yazmak istiyorsunuz. DOS tabanlı bir programda; mouse’un konumunu, bir kursör göstermeye, mouse düğmesini tanımlamaya, düğme tıklandığında tekrar tanımlamaya vb. ihtiyacınız vardır. Visual Basic ve windows bu işlemleri çok daha kolay yapmanızı sağlar. Aynı işi yapmak için form üzerine basit bir command button çizin, yapılacak işlemi click olayına yazın. VB ve Windows mouse’u izler ve kullanıcı düğmeye bastığı anda istediğiniz işlemi yürürlüğe koyar. Tek yapmanız gereken düğmenin click olayına gidip orada istediğiniz işlemin kodunu yazmaktadır. Bir olay prosedürü yaratmak ve bunu bir forma veya kontrole eklemek istiyorsanız, sadece code penceresinden formu veya kontrolü "Object" combo boxından seçin , "Proc" combosundan istediğiniz olayı tıklayın.

VB olay prosedürünü sizin için kod penceresinde yaratacaktır. Sizin için geriye sadece olay gerçekleştiğinde meydana gelmesini istediğiniz işlemin kodunu yazmak kalıyor. İşte size ekrana mesaj yazdıran bir olay prosedürü:

Private Sub cmd_Click()
MsgBox "Hello World!"
End Sub

"cmd" düğmesine tıklandığında mesaj kutusu görünecektir. Bu basit konsepti anladıktan sonra VB uygulamalarınız için code yazmaya hazırsınız demektir.

3.1 Formun Olayları (Form Events)

Uygulamalarınızda VB form ve kontrolleri düzinelerce olayı gerçekleştirir. Formlar ve kontroller, hepsinin olayları vardır. Şimdi formların bazı olaylarına göz atalım ve nasıl ne zaman meydana geldiklerini araştıralım.

(Formun olayları: Initialize, Load, Resize, Activate, Paint, QueryUnload, Unload,Terminate)

Form olaylarını gösterebilmek için yeni bir form yarattım ve formun herbir olayına bu kodu yazdım.

Private Sub Form_Load()
Debug.Print "Load"
End Sub

Private Sub Form_Initialize()
Debug.Print "Initialize"
End Sub


Her olay gerçekleştiğinde olayın ismi debug penceresine yazdırılmıştır. Yani her olay kendini debug penceresine yazmıştır. Çıktı şöyle olmuştur:

Initialize
Load
Resize
Activate
Paint
'Burada formu kapattım. Form kapandıktan sonra da bazı olaylar olur:
QueryUnload
Unload
Terminate

Yukarıda gerçekleşen form olayları (Form Events) gösterilen sırada olur.
Formun Click olayı gibi başka olayları da var tabii ki ama onlar kullanıcı tarafından meydana getirilen olaylardır.

Aşağıdaki sıra bir formda her zaman oluşan ve meydana geliş sırasıdır. Bir form ekranda görünür hale gelirken sırayla bu olaylar oluşur:

--------Initialize (başlama)
Bu olay form yülendiğinde, load’dan önce meydana gelir. Formun yüklenmesi için gereken datanın kullanıma uygun hale gelmesini sağlar.

--------Load (yükleme)
Load genellikle formun özel (private) data, kontrol dizileri (control arrays) tasarım zamanı değil de çalışma (runtime) sırasında tasarlanan elemanları gibi dinamik komponentlerinin başlatılması için kullanılır.

--------Resize (tekrar boyutlandırma)
Bu olay (ekranı kapla, minimize, simge durumuna küçült vs) veya kullanıcı tarafından formun boyutu değiştirildiği anda meydana gelir. Örneğin eğer metin editörü programlamak istiyorsanız form_resize olayının oluşması halinde metin kutusunu da aynı oranda boyutlandırmalısınız. Bunu yapmazsanız, kullanıcı formu küçülttüğü halde textbox aynı büyüklükte kalacaktır.

--------Activate (Aktif hale getirme)
Bu olay form kontrolü ele geçirdiğinde (form aktif hale geldiğinde) meydana gelir. Form aktif hale geldiğinde çalışmasını istediğiniz bir code’unuz varsa bu olaya yazmalısınız.

--------Paint (Boyama)
Bu olay VB nin tam olarak formu ekrana çizdiği andır. Eğer formun üzerine grafik metodları ile çizim yapacaksanız kod buraya yazılmalıdır.

--------QueryUnload (Formu kapatma sorgusu)
Bu olay form kapatıldığında meydana gelir. Formun nasıl kapatıldığını öğrenebilirsiniz (kendi
kodunuzla, kullanıcı veya windows tarafından) ve kapatma işlemini iptal edebilirsiniz.

--------Unload (Kapatma)
Bu olay form kapatıldığında meydana gelir.

--------Terminate (Yoketme)
Bu olay form yokedildiğinde meydana gelir.

Bir form Terminate olduğunda oluşan üç olay (QueryUnload, Unload, Terminate) karıştırılmaktadır.
QueryUnload üçünün arasında tek iptal edilebilendir. Bu konuda ipucu şudur: Terminate olayı gerçekleşmeden form hafızadan silinmez). Şu iki durumu kıyaslayın:

Unload form1
Set form1 = Nothing

Birinci ifade QueryUnload ve Unload olaylarının meydana gelmesini sağlar. Fakat sadece ikinci ifadede terminate olayını gerçekleştirebilirsiniz. Form değişkenleri, Unload olayından sonra sıfırlanmaz, sadece terminate olayından sonra sıfırlanır (yani form bellekten tamamen silindikten sonra).

 

3.2 Kontrol Olayları

Kontrol Nedir?

Form, picturebox, textbox, image, commandbutton, data, grid, combobox, label vs gibi kullanıcının
programla iletişime geçmesini sağlayan bir arabirim (interface) oluşturan elemanlardır.

Kontrollerin de olayları vardır, fakat kontrolün tipine bağlı olarak değişik şekilde meydana gelirler. Çoğu kontrolun klavye olayları vardır: KeyUp, KeyDown, KeyPress; yada fare olayları: MouseDown, MouseMove, MouseUp, Click, DoubleClick gibi. Yapmak istediğiniz işlem olayın isminden rahatlıkla anlaşılabilir. Sürükle bırak işlemleri için de olaylar vardır: DragDrop ve DragOver. Bazı farklı kontrol olayları şunlardır.

--------Change: bir kontrolün içeriği değiştiği zaman meydana gelir. Örnek olarak: Textbox'a tek bir karakter bile girildiğinde text içeriği değişmiş olur ve change olayı meydana gelir.

--------GotFocus, LostFocus : Kullanıcı mouse veya klavye ile kontrol üzerine geldiğinde ve kontrol seçili hale geldiğinde GotFocus ve çıktığı zaman LostFocus olayları meydana gelir. Diyelim ki, bir commandbuton'un GotFocus olayına Msgbox "Nesne şimdi seçili!" yazarsanız, o commandbuton herhangi bir şekilde focus alırsa yani seçili hale gelirse o zaman GotFocus içine yazdığınız yukarıdaki basit mesajkutusu kodu çalışacak ve ekranda "Nesne şimdi seçili!" yazılı mesajkutusu çıkacaktır.

--------Link olayları: DDE işlemleri için kullanılır.

Bütün kontrol olayları arasında en çok kullanılan click olayıdır. Bir commandbutton yada bir menu kontrolunda click kullanılır

ACCESS PROGRAMCILARI İÇİN ÖZEL NOT
Eğer Access Basic veya makro kullanarak Access programlamada tecrübeli iseniz, form ve kontrollerde BeforeUpdate ve AfterUpdate olayların eksik oldğunu göreceksiniz. Bu kontrolleri kullanmaya alışıksanız; bunları yapmanın farklı yolları:

--------Kontrolün Change olayında olay, kullanıcı yazarken her tuş darbesi ile gerçekleşir.

--------Diğer taraftan Access'te klavye tabanlı kod yazmak zorunda kaldıysanız, VB’de KeyPreview
özelliğini bulacaksınız ki işinizi büyük ölçüde kolaylaştıracaktır.

4.Değişkenlerin Faaliyet Alanı

Değişken yada Variable denir durur. Peki değişkenler tam olarak ne yaparlar - değişmekten başka? Hadi değişmeleri gerekirken aynı kaldılar ne yapacağız. Neyse değişkenler nerede geçerlidir nerede değildir... Tüm bilgi burada.

GİRİŞ
Visual Basic değişkenlerini anlayabilmek için gerekli 2 adet önemli özellik vardır:

Faaliyet Alanı:

Faaliyet alanı bir değişkenin görünebilirliğini belirler. Değişkenlerin faaliyet alanları evrenselden ( uygulamadaki her alt yordam ona ulaşabilir) yerele ( sadece tek bir alt yordam için kullanılabilir) kadar değişebilir.

Yaşam Süresi:

Yaşam süresi bir değişkenin ömrünü tanımlar. Değişkenler bütün bir program boyunca çalışabilecekleri gibi, tek bir alt yordam içinde yaratılıp yok edilebilirler.


Değişkenlerin Faaliyet Alanları:

Bir değişkenin faaliyet alanı, o değişkene kodun hangi bölümlerinden ulaşabileceğinizi belirler. Eğer bir değişken faaliyet alanının içindeyse onu okuyup, değerini değiştirebilirsiniz.Ama eğer değilse o değişkene ulaşamazsınız!

Visual Basic'de değişkenler için 3 çeşit faaliyet alanı tanımlanabilir:

Evrensel Faaliyet Alanı:
Evrensel değişkenler uygulamanın her bölümünde faaliyet alanı içindedir.

Modül Faaliyet Alanı:
Modül değişkenleri tanımlandıkları modülün içindeki her yerde faaliyet alanı içindedir.

Yerel Faaliyet Alanı:
Yerel değişkenlerin faaliyet alanı sadece tanımlandıkları alt yordamdır.


YORUMLAR

İyi bir programcılık için değişkenlerinizin faaliyet alanlarını mümkün olan en dar alan seçmelisiniz. Eğer mümkünse alt yordamların veri paylaşımını parametre kullanarak çözmeye çalışın! Bu çok net bir veri paylaşım yöntemidir ve "alt yordam değeri hangi değişkenden alacak" karmaşasını yok eder!

Alt yordamlardan bağımsız paylaşılması gereken veriler için en iyi çözüm modül değişkenleridir.Modül değişkenler o modül dışından kullanıma kapalı oldukları için , başka bir modülün o değişkenin var olup olmadığından ya da o değişkenin değerinin değişeceğinden korkmasına gerek yoktur.

Evrensel değişkenler genel olarak kullanılmamalıdır.Modüller arası veri paylaşımı için uygun olmalarına rağmen , kullanımları tehlikelidir. Programdaki herhangi bir alt yordam bir evrensel değişkeni değiştirebildiği için değişkenleriniz beklemediğiniz şekilde değişebilir. Ve son derece zor bir hata ayıklama süreci gerektirebilir.

Bu arada , evrensel değişkenlerle , evrensel sabitleri karıştırmayın. Evrensel değişkenlerin ne kadar kullanılmamaları tavsiye ediliyorsa , evrensel sabitlerin kullanılması da o kadar TAVSİYE EDİLİR! Sabitlerin değerleri , çalışma zamanında değiştirilemediği için evrensel değişkenlerin problemleri, sabitlerde yaşanmaz. Sabitlerin ilk amacı 'sihirli Numaralar' ın önüne geçmektir.'Sihirli Numaralar' kodlanmış özellik değerleridir. Örnek olarak:
Bir liste kutusu (Combo Box) şu 3 stilde olabilir:
Dropdown Combo - Aşağı doğru açılan bir listeye sahip metin kutusu
Simple Combo - Liste her zaman görüntülenir
Dropdown List - Kullanıcı listeden bir değer seçmelidir

Bu stiller sırayla 0,1 ve 2 değerlerine sahiptir. Bu değerleri kullanmak yerine bu değerle sahip sabitler kullanmak kodu daha anlaşılabilir hale getirecektir. Liste kutusu için Visual Basic'de , vbComboDropdownList,vbComboSimple ve vbComboDropdownList sabitleri mevcuttur. Numaralar yerine bu sabitleri kullanmak kodu daha okunabilir hale getirecektir.

ÖZET:
Değişkenlerin faaliyet alanları ve yaşam süreleri hakkında hatırlanması gerekenler:

- Değişkenlerin faaliyet alanları, o değişkene programın hangi bölümlerinden ulaşabileceğinizi belirler.

- Yaşam süreleri, bir değişkenin programın çalışma süresince, ne kadar hafızada kalacağını belirler.
- Visual Basic 'gölgeleme' olayında en yerel değişkeni kullanır.

- Form ve sınıf modüllerindeki değişkenler için özel kurallar geçerlidir.

- İyi bir programcılık örneği için değişkenlerinizin faaliyet alanını mümkün olan en düşük düzeyde tutmaya çalışın!

   Visual Basic olay temelli bir programlama dilidir; bunun anlamı şudur: kullanıcı tarafından gerçekleştirilen işlemlere göre programın yanıt vermesi ,yada şöyle diyelim, programın bazı olaylar ortaya çıkarmasıdır. Bir form kapatılırken birkaç tane olay meydana gelir, örnek olarak, bir textbox'a bir harf girilmiş ise CHANGED olayı meydana gelir ve programcı bu olayın meydana gelip gelmediğini kontrol eden ufak bir kod yazarak kullanıcının yazılanları kaydedip etmediğini kontrol edebilir. Konu ile ilgili detaylı bilgi için Olay Yönlendirmeli Programlama Sayfasını ziyaret ediniz.

          Program yazmak için kullanılan Visual Basic editör ve derleyicisinin kullanıcı arayüzüne gelince, yazmaya başlıyacağımız her program bir proje olarak başlatılır. Her projede en az bir form bulunur. Uygulama içinde bulunan her nesne bu formun üzerine yerleştirilir. Kullanıcının birebir etkileşim halinde olacağı kısım formlardır. Form üzerine yerleştirilecek her nesne programcı tarafından isteği üzerine yerleştirilir. Yeni bir projenin adı program tarafından Project1 olarak konur, proje içinde bulunan formun başlangıç adı ise Form1 olur. Bunlar daha sonra değiştirilebilir. Form üzerine yerleştirilen nesneler toolbox (alet kutusu) penceresinde yeralır. Bir nesne toolbox ta seçildikten sonra , form üzerinde nereye yerleştirilecekse o noktaya fare yardımıyla taşınır, çekilerek istenilen boyutlara getirilir.  Burada gördüğünüz Visual Basic'in çalışma ortamıdır. İşte bu yazının olduğu yerde kod penceresi ve form düzenleme pencereleri olacaktır. Sağ taraftaki Properties penceresinde aktif konumda olan formun tüm özelliklerini görürsünüz. Sol tarafta Araç Kutusu (ToolBox) vardır. Yukarıda ise Visual Basic menüsünü görüyorsunuz

 

 

1. Yeni başlayanlara kısa Visual Basic tanıtımı

Microsoft firması tarafından geliştirilen Visual Basic, atası olan QBASIC derleyicisinin geliştirilmiş ve Windows ortamına uyarlanmış olan sürümü olarak adlandırılabilir. Windows ortamına uyarlandığı için de Nesneye Yönelimli bir dildir. VBX kontrollerini destekleyen ilk dillerden biridir. VBasic'de, 1.0 sürümünden 6.0 sürümüne kadar bir çok yenilik ve değişiklik olmuştur. Bunlardan biri de, arayüzünün güçlü ve etkili bir görünüm kazanmasıdır. Visual Basic, devamlı geliştiği bu süre sonunda yüksek hızlı uygulamalar, OLE serverlar, ActiveX kontrolleri ve daha bir çok şey geliştirilebilecek hale gelmiştir.

Microsoft Windows için program geliştiren programcıların yüzde yirmibeşi Visual Basic'i tercih etmektedirler. Visual Basic'i en popüler programlama dillerinden biri yapan en önemli nedenlerden biri de büyük olasılıkla kolay olmasıdır. Visual Basic de program yazmak için çok fazla teknik bilgiye sahip olmak gerekmez. Sadece kontrolleri form üzerine yerleştirmek ve kodu yazmak yeterli. Kısaca Visual Basic, programcıyı, programın kullanıcıya yansıyan şekli için kod yazmak zorunda bırakmayan bir dildir.

Zamanla Microsoft dışındaki bazı şirketler tarafından benzer programlama dilleri geliştirildi. Muhtemelen bunların en popüleri Borland Delphi'dir.

İşte Visual Basic'in 5.0 sürümüne eklenen en önemli değişiklik ve yenilikler:

Derlenme işlemci tipine, hızına ve program büyüklüğüne göre optimize ediliyor.
Tekrar tasarlanmış form derleyici
3 Boyutlu grafik desteği
Visual C++’daki gibi sınıf, form ve kontrol "büyücüleri" (wizard)
Otomatik kod tamamlama
Birden çok veritabanı desteği
Animasyonlu GIF’leri destekleyen kontroller
Resim kontrolü JPEG formatını destekliyor
Birden çok kaynak dosyasını destekliyor.
Fonksiyon adresleme
Visual C++ ‘ın 4.x sürümündeki sürükle ve bırak destekli düzenlemeyi destekliyor.
Windows tabanlı ActiveX kontrollerini yaratmak için yeni derleyici
OCX kontrollerini yaratma imkanı !
Ağ üzerinde OLE
Yeni kullanıcı arabirimi ve ActiveX desteği
Birden çok projeyi kontrol edebilen proje penceresi
16 Bit uygulama yaratılamıyor...
Visual C++ Developer Studio tabanlı yeni arabirim
Visual Basic formlarını otomatik olarak HTML sayfasına çevirebilme imkanı
Internet üzerinde bulunabilen TCP/IP kontrollerini tanıyabiliyor
Kullanıcı arabiriminde projenin hiyerarşisini görüntüleyen bir pencere var
Yığın olarak güncellenen geliştirilmiş RDO (Remote Data Objects)
Yazım hatası yaptığınızda o komutu nasıl kullanacağınıza dair ipuçları veriliyor.
Yeni komutlar (Debug.Assert, AddressOf...) ve veri tipleri (Decimal Variant...)
Derleyici artık bir çok derleme opsiyonu sunuyor.
Çok hızlı ve küçük EXE’ler oluşturuluyor!

 

2. Program üretiyorsunuz; ama ürettiğiniz program nelerden oluşuyor? Her bir parça ne işe yarıyor? Biliyor musunuz? Ama olmaz ki! İşte bilgiler aşağıda:

 

Bir proje geliştirirken, uygulamanızda bulunabilecek proje parçaları şunlardır:
. Projeye ait tüm elemanları tutan (.vbp) proje dosyası
. Her bir form için (.frm) form modülü
. Her bir formun resim, icon gibi özelliklerini tutan veri dosyası (.frx)
. Opsiyonel olarak, (.cls) class modül
. Opsiyonel olarak, (.bas) standart modül
. Opsiyonel olarak, bir yada fazla ActiveX kontroller (.ocx)
. Opsiyonel olarak, kaynak dosyası (.res)


Proje dosyası (vbp) projenin tüm dosyalarını ve proje ile ilgili tüm dosyaları tutar. Bu bilgi projeyi her kaydedişinizde yenilenir. Proje tamamlandığında onu bir exe dosyasına dönüştürebilirsiniz. File menüsünden Make project.exe 'yi seçmeniz gerekir. VB'nin Professional ve Enterprise versiyonları ile ocx ve dll uzantılı yürütülebilir dosyalar da üretebilirsiniz
   

Project Explorer


Yeni dosyalar ekleyip yada çıkardıkça VB yapılan değişiklikleri Project Explorer penceresinde
gösterir. Bu pencerede projeye ait olan dosyaların listesi vardır.

Project Explorer Penceresi

3.Olay Yönlendirmeli Programcılık Nedir?

Visual Basic için olay yönlendirmeli programlama dili denir. Peki bu olaylar nedir?


GİRİŞ:

Belki Windows’a yeni geçiş yapan bir DOS programcısısınız, veya VB’ ye henüz yeni başlamış bir programcısınız. Bu alandaki geçmişinize bakmaksızın, öğrenmeniz gereken en önemli konulardan biri olay sürümlü programlarıdır. Geleneksel programlama işleminde, uygulama başlar (genellikle MAİN procedure ismi ile), bu noktadan program ilerler ve bütün olaylardan sorumludur. Keyboard , mouse girişini, ekran görüntüsünü, ve benzeri tüm olayları kapsamak zorundadır. Artık WINDOWS ve VB bu detayları sizin için düşünmüştür. Hangi uygulamayı yapmak istiyorsanız bu olay üzerine yoğunlaşma imkanını size verir. Örneğin bir düğmeye tıkladığınızda mesaj yazdıran, bir program yazmak istiyorsunuz. DOS tabanlı bir programda; mouse’un konumunu, bir kursör göstermeye, mouse düğmesini tanımlamaya, düğme tıklandığında tekrar tanımlamaya vb. ihtiyacınız vardır. Visual Basic ve windows bu işlemleri çok daha kolay yapmanızı sağlar. Aynı işi yapmak için form üzerine basit bir command button çizin, yapılacak işlemi click olayına yazın. VB ve Windows mouse’u izler ve kullanıcı düğmeye bastığı anda istediğiniz işlemi yürürlüğe koyar. Tek yapmanız gereken düğmenin click olayına gidip orada istediğiniz işlemin kodunu yazmaktadır. Bir olay prosedürü yaratmak ve bunu bir forma veya kontrole eklemek istiyorsanız, sadece code penceresinden formu veya kontrolü "Object" combo boxından seçin , "Proc" combosundan istediğiniz olayı tıklayın.

VB olay prosedürünü sizin için kod penceresinde yaratacaktır. Sizin için geriye sadece olay gerçekleştiğinde meydana gelmesini istediğiniz işlemin kodunu yazmak kalıyor. İşte size ekrana mesaj yazdıran bir olay prosedürü:

Private Sub cmd_Click()
MsgBox "Hello World!"
End Sub

"cmd" düğmesine tıklandığında mesaj kutusu görünecektir. Bu basit konsepti anladıktan sonra VB uygulamalarınız için code yazmaya hazırsınız demektir.

3.1 Formun Olayları (Form Events)

Uygulamalarınızda VB form ve kontrolleri düzinelerce olayı gerçekleştirir. Formlar ve kontroller, hepsinin olayları vardır. Şimdi formların bazı olaylarına göz atalım ve nasıl ne zaman meydana geldiklerini araştıralım.

(Formun olayları: Initialize, Load, Resize, Activate, Paint, QueryUnload, Unload,Terminate)

Form olaylarını gösterebilmek için yeni bir form yarattım ve formun herbir olayına bu kodu yazdım.

Private Sub Form_Load()
Debug.Print "Load"
End Sub

Private Sub Form_Initialize()
Debug.Print "Initialize"
End Sub


Her olay gerçekleştiğinde olayın ismi debug penceresine yazdırılmıştır. Yani her olay kendini debug penceresine yazmıştır. Çıktı şöyle olmuştur:

Initialize
Load
Resize
Activate
Paint
'Burada formu kapattım. Form kapandıktan sonra da bazı olaylar olur:
QueryUnload
Unload
Terminate

Yukarıda gerçekleşen form olayları (Form Events) gösterilen sırada olur.
Formun Click olayı gibi başka olayları da var tabii ki ama onlar kullanıcı tarafından meydana getirilen olaylardır.

Aşağıdaki sıra bir formda her zaman oluşan ve meydana geliş sırasıdır. Bir form ekranda görünür hale gelirken sırayla bu olaylar oluşur:

--------Initialize (başlama)
Bu olay form yülendiğinde, load’dan önce meydana gelir. Formun yüklenmesi için gereken datanın kullanıma uygun hale gelmesini sağlar.

--------Load (yükleme)
Load genellikle formun özel (private) data, kontrol dizileri (control arrays) tasarım zamanı değil de çalışma (runtime) sırasında tasarlanan elemanları gibi dinamik komponentlerinin başlatılması için kullanılır.

--------Resize (tekrar boyutlandırma)
Bu olay (ekranı kapla, minimize, simge durumuna küçült vs) veya kullanıcı tarafından formun boyutu değiştirildiği anda meydana gelir. Örneğin eğer metin editörü programlamak istiyorsanız form_resize olayının oluşması halinde metin kutusunu da aynı oranda boyutlandırmalısınız. Bunu yapmazsanız, kullanıcı formu küçülttüğü halde textbox aynı büyüklükte kalacaktır.

--------Activate (Aktif hale getirme)
Bu olay form kontrolü ele geçirdiğinde (form aktif hale geldiğinde) meydana gelir. Form aktif hale geldiğinde çalışmasını istediğiniz bir code’unuz varsa bu olaya yazmalısınız.

--------Paint (Boyama)
Bu olay VB nin tam olarak formu ekrana çizdiği andır. Eğer formun üzerine grafik metodları ile çizim yapacaksanız kod buraya yazılmalıdır.

--------QueryUnload (Formu kapatma sorgusu)
Bu olay form kapatıldığında meydana gelir. Formun nasıl kapatıldığını öğrenebilirsiniz (kendi
kodunuzla, kullanıcı veya windows tarafından) ve kapatma işlemini iptal edebilirsiniz.

--------Unload (Kapatma)
Bu olay form kapatıldığında meydana gelir.

--------Terminate (Yoketme)
Bu olay form yokedildiğinde meydana gelir.

Bir form Terminate olduğunda oluşan üç olay (QueryUnload, Unload, Terminate) karıştırılmaktadır.
QueryUnload üçünün arasında tek iptal edilebilendir. Bu konuda ipucu şudur: Terminate olayı gerçekleşmeden form hafızadan silinmez). Şu iki durumu kıyaslayın:

Unload form1
Set form1 = Nothing

Birinci ifade QueryUnload ve Unload olaylarının meydana gelmesini sağlar. Fakat sadece ikinci ifadede terminate olayını gerçekleştirebilirsiniz. Form değişkenleri, Unload olayından sonra sıfırlanmaz, sadece terminate olayından sonra sıfırlanır (yani form bellekten tamamen silindikten sonra).

 

3.2 Kontrol Olayları

Kontrol Nedir?

Form, picturebox, textbox, image, commandbutton, data, grid, combobox, label vs gibi kullanıcının
programla iletişime geçmesini sağlayan bir arabirim (interface) oluşturan elemanlardır.

Kontrollerin de olayları vardır, fakat kontrolün tipine bağlı olarak değişik şekilde meydana gelirler. Çoğu kontrolun klavye olayları vardır: KeyUp, KeyDown, KeyPress; yada fare olayları: MouseDown, MouseMove, MouseUp, Click, DoubleClick gibi. Yapmak istediğiniz işlem olayın isminden rahatlıkla anlaşılabilir. Sürükle bırak işlemleri için de olaylar vardır: DragDrop ve DragOver. Bazı farklı kontrol olayları şunlardır.

--------Change: bir kontrolün içeriği değiştiği zaman meydana gelir. Örnek olarak: Textbox'a tek bir karakter bile girildiğinde text içeriği değişmiş olur ve change olayı meydana gelir.

--------GotFocus, LostFocus : Kullanıcı mouse veya klavye ile kontrol üzerine geldiğinde ve kontrol seçili hale geldiğinde GotFocus ve çıktığı zaman LostFocus olayları meydana gelir. Diyelim ki, bir commandbuton'un GotFocus olayına Msgbox "Nesne şimdi seçili!" yazarsanız, o commandbuton herhangi bir şekilde focus alırsa yani seçili hale gelirse o zaman GotFocus içine yazdığınız yukarıdaki basit mesajkutusu kodu çalışacak ve ekranda "Nesne şimdi seçili!" yazılı mesajkutusu çıkacaktır.

--------Link olayları: DDE işlemleri için kullanılır.

Bütün kontrol olayları arasında en çok kullanılan click olayıdır. Bir commandbutton yada bir menu kontrolunda click kullanılır

ACCESS PROGRAMCILARI İÇİN ÖZEL NOT
Eğer Access Basic veya makro kullanarak Access programlamada tecrübeli iseniz, form ve kontrollerde BeforeUpdate ve AfterUpdate olayların eksik oldğunu göreceksiniz. Bu kontrolleri kullanmaya alışıksanız; bunları yapmanın farklı yolları:

--------Kontrolün Change olayında olay, kullanıcı yazarken her tuş darbesi ile gerçekleşir.

--------Diğer taraftan Access'te klavye tabanlı kod yazmak zorunda kaldıysanız, VB’de KeyPreview
özelliğini bulacaksınız ki işinizi büyük ölçüde kolaylaştıracaktır.

4.Değişkenlerin Faaliyet Alanı

Değişken yada Variable denir durur. Peki değişkenler tam olarak ne yaparlar - değişmekten başka? Hadi değişmeleri gerekirken aynı kaldılar ne yapacağız. Neyse değişkenler nerede geçerlidir nerede değildir... Tüm bilgi burada.

GİRİŞ
Visual Basic değişkenlerini anlayabilmek için gerekli 2 adet önemli özellik vardır:

Faaliyet Alanı:

Faaliyet alanı bir değişkenin görünebilirliğini belirler. Değişkenlerin faaliyet alanları evrenselden ( uygulamadaki her alt yordam ona ulaşabilir) yerele ( sadece tek bir alt yordam için kullanılabilir) kadar değişebilir.

Yaşam Süresi:

Yaşam süresi bir değişkenin ömrünü tanımlar. Değişkenler bütün bir program boyunca çalışabilecekleri gibi, tek bir alt yordam içinde yaratılıp yok edilebilirler.


Değişkenlerin Faaliyet Alanları:

Bir değişkenin faaliyet alanı, o değişkene kodun hangi bölümlerinden ulaşabileceğinizi belirler. Eğer bir değişken faaliyet alanının içindeyse onu okuyup, değerini değiştirebilirsiniz.Ama eğer değilse o değişkene ulaşamazsınız!

Visual Basic'de değişkenler için 3 çeşit faaliyet alanı tanımlanabilir:

Evrensel Faaliyet Alanı:
Evrensel değişkenler uygulamanın her bölümünde faaliyet alanı içindedir.

Modül Faaliyet Alanı:
Modül değişkenleri tanımlandıkları modülün içindeki her yerde faaliyet alanı içindedir.

Yerel Faaliyet Alanı:
Yerel değişkenlerin faaliyet alanı sadece tanımlandıkları alt yordamdır.


YORUMLAR

İyi bir programcılık için değişkenlerinizin faaliyet alanlarını mümkün olan en dar alan seçmelisiniz. Eğer mümkünse alt yordamların veri paylaşımını parametre kullanarak çözmeye çalışın! Bu çok net bir veri paylaşım yöntemidir ve "alt yordam değeri hangi değişkenden alacak" karmaşasını yok eder!

Alt yordamlardan bağımsız paylaşılması gereken veriler için en iyi çözüm modül değişkenleridir.Modül değişkenler o modül dışından kullanıma kapalı oldukları için , başka bir modülün o değişkenin var olup olmadığından ya da o değişkenin değerinin değişeceğinden korkmasına gerek yoktur.

Evrensel değişkenler genel olarak kullanılmamalıdır.Modüller arası veri paylaşımı için uygun olmalarına rağmen , kullanımları tehlikelidir. Programdaki herhangi bir alt yordam bir evrensel değişkeni değiştirebildiği için değişkenleriniz beklemediğiniz şekilde değişebilir. Ve son derece zor bir hata ayıklama süreci gerektirebilir.

Bu arada , evrensel değişkenlerle , evrensel sabitleri karıştırmayın. Evrensel değişkenlerin ne kadar kullanılmamaları tavsiye ediliyorsa , evrensel sabitlerin kullanılması da o kadar TAVSİYE EDİLİR! Sabitlerin değerleri , çalışma zamanında değiştirilemediği için evrensel değişkenlerin problemleri, sabitlerde yaşanmaz. Sabitlerin ilk amacı 'sihirli Numaralar' ın önüne geçmektir.'Sihirli Numaralar' kodlanmış özellik değerleridir. Örnek olarak:
Bir liste kutusu (Combo Box) şu 3 stilde olabilir:
Dropdown Combo - Aşağı doğru açılan bir listeye sahip metin kutusu
Simple Combo - Liste her zaman görüntülenir
Dropdown List - Kullanıcı listeden bir değer seçmelidir

Bu stiller sırayla 0,1 ve 2 değerlerine sahiptir. Bu değerleri kullanmak yerine bu değerle sahip sabitler kullanmak kodu daha anlaşılabilir hale getirecektir. Liste kutusu için Visual Basic'de , vbComboDropdownList,vbComboSimple ve vbComboDropdownList sabitleri mevcuttur. Numaralar yerine bu sabitleri kullanmak kodu daha okunabilir hale getirecektir.

ÖZET:
Değişkenlerin faaliyet alanları ve yaşam süreleri hakkında hatırlanması gerekenler:

- Değişkenlerin faaliyet alanları, o değişkene programın hangi bölümlerinden ulaşabileceğinizi belirler.

- Yaşam süreleri, bir değişkenin programın çalışma süresince, ne kadar hafızada kalacağını belirler.
- Visual Basic 'gölgeleme' olayında en yerel değişkeni kullanır.

- Form ve sınıf modüllerindeki değişkenler için özel kurallar geçerlidir.

- İyi bir programcılık örneği için değişkenlerinizin faaliyet alanını mümkün olan en düşük düzeyde tutmaya çalışın!

   Visual Basic olay temelli bir programlama dilidir; bunun anlamı şudur: kullanıcı tarafından gerçekleştirilen işlemlere göre programın yanıt vermesi ,yada şöyle diyelim, programın bazı olaylar ortaya çıkarmasıdır. Bir form kapatılırken birkaç tane olay meydana gelir, örnek olarak, bir textbox'a bir harf girilmiş ise CHANGED olayı meydana gelir ve programcı bu olayın meydana gelip gelmediğini kontrol eden ufak bir kod yazarak kullanıcının yazılanları kaydedip etmediğini kontrol edebilir. Konu ile ilgili detaylı bilgi için Olay Yönlendirmeli Programlama Sayfasını ziyaret ediniz.

          Program yazmak için kullanılan Visual Basic editör ve derleyicisinin kullanıcı arayüzüne gelince, yazmaya başlıyacağımız her program bir proje olarak başlatılır. Her projede en az bir form bulunur. Uygulama içinde bulunan her nesne bu formun üzerine yerleştirilir. Kullanıcının birebir etkileşim halinde olacağı kısım formlardır. Form üzerine yerleştirilecek her nesne programcı tarafından isteği üzerine yerleştirilir. Yeni bir projenin adı program tarafından Project1 olarak konur, proje içinde bulunan formun başlangıç adı ise Form1 olur. Bunlar daha sonra değiştirilebilir. Form üzerine yerleştirilen nesneler toolbox (alet kutusu) penceresinde yeralır. Bir nesne toolbox ta seçildikten sonra , form üzerinde nereye yerleştirilecekse o noktaya fare yardımıyla taşınır, çekilerek istenilen boyutlara getirilir.  Burada gördüğünüz Visual Basic'in çalışma ortamıdır. İşte bu yazının olduğu yerde kod penceresi ve form düzenleme pencereleri olacaktır. Sağ taraftaki Properties penceresinde aktif konumda olan formun tüm özelliklerini görürsünüz. Sol tarafta Araç Kutusu (ToolBox) vardır. Yukarıda ise Visual Basic menüsünü görüyorsunuz

 

ÖZET:
Değişkenlerin faaliyet alanları ve yaşam süreleri hakkında hatırlanması gerekenler:

- Değişkenlerin faaliyet alanları, o değişkene programın hangi bölümlerinden ulaşabileceğinizi belirler.

- Yaşam süreleri, bir değişkenin programın çalışma süresince, ne kadar hafızada kalacağını belirler.
- Visual Basic 'gölgeleme' olayında en yerel değişkeni kullanır.

- Form ve sınıf modüllerindeki değişkenler için özel kurallar geçerlidir.

- İyi bir programcılık örneği için değişkenlerinizin faaliyet alanını mümkün olan en düşük düzeyde tutmaya çalışın!

Make your own free website on Tripod.com