Temel Bilgiler

Visual Basic, nesneye yonelik bir programlama dilidir. Yani temel olarak nesneleri kullanırız. Peki nedir bu nesneler ? Bu satırları gorebildiğinize gore windows kullanımı hakkında bilginiz vardır. Ekranda gorduğunuz o tuşlar, metin kutuları, acılan pencereler hepsi birer nesnedir.

Klasik programlama dilleri ile uğraştıysanız (C, Basic,..vb), programı yazarken yukarıdan aşağı doğru yazdığınızı ve programın da calışırken aynı mantıkla hareket ettiğini bilirsiniz. VB’de ise durum farklıdır. Visual Basic’de kodu yazarsınız, gerisini kullanıcıya bırakırsınız. Tabi istediğiniz oranda. Kullanıcı ancak sizin izin verdiğiniz kadar hareket edebilir. Tabi kullanıcıyı devre dışı bırakmakta mumkun.

Butun bunlar “olay”lar , “metot”lar ve “ozellikler” kullanılarak kolaylıkla yapılabilir. Cok sık duyacağınız bu terimlerle daha sonra iyice uğraşacağız ama şimdi bir ornek vererek hem bunları, hem de Visual Basic mantığını anlamaya calışalım.

Kapınızın onunde duran kırmızı, celik cantlı, siyah camlı 98 model bir Doğan duşunun. Arka camında da bir şeyler yazılmış olsun.( Genelde anlamını bile bilmedikleri ingilizce birşeyler yazdırırlar.).Şimdi arabayı Visual Basic mantığı ile bir inceleyelim:

Nesnemiz işte o gorduğunuz Doğan marka otomobil. Gercek araba tutkunları her zaman arabalarına bir isim verirler. Bizim Doğan’ın adı da: “Atılgan” olsun. Anlaştık değil mi? Şimdi, Atılgan’ın rengi kırmızı idi. O halde;

Atılgan.renk = kırmızı

Sırada diğer ozellikleri var.

Atılgan.cant = celik

Atılgan.cam = siyah

Atılgan.yazı = True

Atlgan’ın cantları celik idi. Camları da siyahtı. Sanırım o anlaşıldı. Peki ama aşağıdaki ne oluyor? Hatırlarsanız, Atılgan’ın arka camında bir şeyler yazılıydı. Şimdi biz arkada ne yazılı olduğuyla değil, yazı olup olmamasıyla ilgileniyoruz. Arkada yazı var mı, yok mu? Var. Yani “olumlu”.İşte yukarıdaki “true” bu anlama geliyor. Eğer yazı olmasaydı “false” (yanlış) diyecektik.

İşte visual basic tamamen Nesne.Ozellik = Değer mantığıyla calışır.Bu değerin nasıl belirtileceği konusunda ise bize değişkenler yardım eder. Biraz onceki True-False boolean turunde idi. Merak etmeyin bunlara daha sonra geleceğiz. Atılgan’ın gaz pedalına bastığımız zaman araba yurur.( Arabaların calışması ve ileri suruculuk tekniklerine burada değinemeyeceğiz.). İşte bu da, Atılgan nesnesine ait bir olaydır.” Gaza Basılması” olayı. Şimdilik Atılgan’ı burada bırakıyoruz..

Visual Basic’i calıştırdığınızda, icinde beş-altı tane pencere olan bir yere gelirsiniz. İnceleyeceğimiz ilk pencere, ekranın en solunda bulunan Arac Kutusu.

Arac Kutusu ismi ona boşuna verilemiş. Gercekten de o, icinde ihtiyacımız olan her turlu aracı bulabileceğimiz bir alet cantası. Cekicinden tornavidasına kadar her şey onun icinde. Yapacağımız işe gore onun icine istediğimiz aletleri koyup cıkartabiliyoruz da! Bunu ust taraftaki menuden “project/components “‘ı secerek yapıyoruz. Boylelikle hem gerekli aletleri alıyor, hem de işimize yaramayacak aletleri boşuna taşımaktan kurtulmuş oluyoruz.

Visual Basic ilk calıştığında ihityacınız olan temel aletler, siz zahmet etmeyin diye emrinize verilmiş durumda.

Arac kutusundakiler aslında, hakkında sıkca konuştuğumuz nesnelerdir. Evet sonunda onlarla tanıştınız işte. Ne kadar sevimliler değil mi? Onları kullanmak icin ustune tıklamanız yeterli. Daha sonra formun ustune, tıpkı paintte dikdortgen cizermiş gibi bırakırsınız. Form ve bunlar hakkında daha sonra konuşacağız.

Hani daha once Atılgan’dan bahsetmiş ve onu bir nesne olarak kabul etmiştik. Hatırlarsanız onun ozellikleri uzerinde calışmıştık. İşte bu arac kutusundakilerin de her nesne gibi bazı ozellikleri var. Bu ozelliklerine Ozellikler Pencereresi (Properties Window) sayesinde ulaşabiliyoruz.
Ekranın sağında bulunan ve uzerinde “properties” yazan pencere, ozellikler penceresidir. O anda secili olan nesnenin ozelliklerini gosterir. İşin guzel tarafı, bu pencere sayesinde onları gormekle kalmaz, değiştirebilirsiniz de! Secili olan nesnenin ozelliklerini ve o ozelliğin o anki değerini gosterir.

Visual Basic kullanırken yeni projeye başladığınızda yada daha onceki bir projeyi cağırdığınızda form otomatik olarak secilecektir. Madem secili, o halde bu pencereyi kullanrak bazı ozelliklerine bir bakalım.

(Name) : Secili nesnenin ismidir. Burda form’un ismi Form1 imiş
BackColor : Sanırım anladınız. Arka plÂn rengi.
Caption : Nesnenin uzerindeki yazıyı bununla ayarlarsınız. Mesela şu anda ekranın en ustunde mavi bir şeritte “ozellikler penceresi -” yazıyor. Bunu, ‘caption’ ozelliği sayesinde gorebiliyorsunuz.
ForeColor: Onrenk demek biraz sacma olur herhalde ama doğru. Yazı rengi.
Borderstyle: Cerceve bicimi. Hani pencerelerin ustunde mavi bir şerit var ya, onunla ilgili işte.

Burada tum ozellikler anlatılmayacak. Sadece bir fikir sahibi olmanız icin kısaca goz gezdirdik. Properties yazısının altındaki bolumde o an secili olan nesnenin adı ve turu yazıyor. Altaki iki duğmeden ozellikleri alfabetik mi, katogorize edilmiş olarak mı gormek istediğinize karar veriyorsunuz.

Biraz once bir formdan bahsettik.Biraz forum hakkında bilgi verelim.

Visual Basic’de form icin “onemli bir nesnedir” demek doğru olmakla beraber, “onemli” kelimesi yerine “zorunluluk” koyarak, formun ne demek olduğunu daha iyi anlatmış olacağız. Cunku form olmaksızın diğer nesnelerle hic bir şey yapamayız. Form bir bakıma diğer nesneler icin bir biosfer konumundadır. Butun bunlara rağmen formun kendisi de aslında bir nesnedir. Aslında onu hepimiz tanıyoruz. Pencereler, dialog kutuları,… hepsi Windows kullanmaya başladığımızdan beri beraber yaşadığımız şeyler.

Nesnelerin Ortak Noktaları
Standart Ozellikler

Align: Bu ozellik, nesne genişliğinin form genişliğine eşitlenmesini sağlayarak, Formun ustunde mi yoksa altında mı duracağına karar verir.
Alignment: CheckBox, OptionButton ve TextLabel nesneleri uzerinde bulunan metinlerin sola dayalı, sağa dayalı veya ortalanmış olmasını sağlar. Sadece tasarım aşamasında değiştirilebilir.
Apparance: Herhangi bir nesnenin gorunuşuile ilgili ozelliktir. 3 boyutlu veya duzlem halinde olmasını ayarlar.
Autosize: Nesne boyunun, nesne iceriğine gore otomatik olarak ayarlanmasını sağlar. Mesela Label nesnesine bir sozcuk yazıp, bu ozelliği true yaparsanız, label nesnesinin boyu, sozcuğunkine eşit olacaktır.(Bir deneyin, anlarsınız.)
BackColor: Nesne zeminin rengini belirler. Kod esnasında değiştiriken renklerin adını yazarak kolayca yapabilirsiniz. (Orn: Label1.backcolor = vbblue (“vb” yazmayı unutmayın.))
BorderStyle: Nesneye ait cercevenin tipini belirler.(Orn:Form icin, “fixed single”; min ve max butonsuz bir cerceve yapar.)
Cancel: Form uzerinde bulunan button nesnesinin, “iptal” tuşu olup olmadığını belirler
Caption: Form nesnesi icin pencerenin taşıma cubuğundaki yazıyı, diğer nesneler icin, nesnenin uzerinde yazan yazıyı belirtir.
DataField: Data nesnesine bağlı bir kontrolun, veri tabanı dostyasındaki hangi alana bağlı olduğunu gosterir.
DataSource: Nesnenin bağlı olduğu Data kontrolunun adını belirtir.
Default: Bir form uzerindeki CommandButton’lardan hangisinin secili olduğunu belirtir.
DragIcon: Surukle ve Bırak (Drag&Drop) işlemi sırasında fare imlecinin sembolunu belirtir.
DragMode: Surukle&Bırak işleminin el ile m, yoksa otomatik olarak mı yapılacağını ayarlar.
Enabled: Nesnenin kullanılabilirliğini ayarlar. “False” ise kullanıcı o nesneyi kullanamaz. (mesela benim ses kartımda, “bas” ve “tiz” ozelliğini secemiyorum. Cunku enabled ozelliği false. Ulan alcan bir adam gibi kart. O zaman gor bakim. Kotu ESS işte.)
Font: Nesnenin yazıtipi ile ilgili tum ayarları bununla yapabilrsiniz. (Eski versiyonlarda bulunan fontbold, fontitalic… gibi ozellikler uyumluluk acısında halÂa varlar.)
ForeColor: Nesnenin on plÂnda kullandığı rengi belirler.
Height: Nesnenin boyunu gosterir.
hWind: Nesneyi referans gosteren handle’ı icerir. İleri duzey VB progrmlamakta kullanılır. API larda falan.
Index: Eğer form uzerinde, aynı tur ve aynı adda nesneler varsa, indexleri farklı olmalıdır.Bu ozellik o indexin kac numara olduğunu beliritr. (En iyisi bir ornekle acıklayayım. Bkz: Ornek_Index)
Left: Nesnenin, uzerinde bulunduğu nesneden yatay olarak ne kadar uzakta olacağını belirtir. Bir nevi X koordinatı olayı yani.
ListCount: Nesnenin listelediği verilerin toplam sayısını verir.
ListIndex: Nesnenin listelediği verilerden hangisinin secili olduğunu gosterir.
Locked: Metin kutusunun (TextBox) kilitli olup olmayacağını belirtir. Kilitli iken kullanıcı, metin kutusundaki metni değiştiremez.
MaxLength: Nesne icndeki metnin, en fazla kac karakterden oluşacağını belirler.
MouseIcon: Fare imlecini belirler. MousePointer ozelliğinin 99 olması durumunda gecerlidir.
MousePointer: Farenin nesne uzerinde dolaşırken, hangi imleci kullanacağını gosterir.99 ise MouseIcon’da secili ikonu kullanır.
MultiLine: Nesnenin icindeki metnin, tek satırda yazılıp yazılmayacağına karar verir. “True” ise metin yazarken, nesnenin sonuna gelindiğinde; bir alt satıra gecer.
Name: Nesnenin adını gosterir. Sadece tasarım aşamasında değiştirilebilir.
Parent: Nesnenin hangi nesne uzerinde bulunduğunu veya hangi nesneye bağlı olduğunu gosterir.
Picture: Nesne iceriği olan resim dosyasının bulunduğu sdizini ve dosya adını icerir.
ScrollBars: Nesnenin, yatay veya dikey kaydırma cubuklarına sahip olup olmadığını belirtir.
SelLength: Secili metnin, metnin tamamı icerisinde bulunduğu yeri gosterir.
SelText: Secili metni icerir.
TabIndex: Nesnenin, Tab tuşu değişimlerinde kacıncı sırada olduğunu belirler.
TabStop: Nesnenin Tab tuşu sektirmelerine dahil olup olmadığını belirtir.
ToolTipText: Bir nesnenin uzerinde, mouse ile bekleyince cıkan sarı zeminli yaznın ne olacağını belirler. ( bişeyler yaz ve nesnenin uzerinde bekle gorursun.)
Top: Nesnenin, uzerinde bulunduğu nesneden duşey olark ne kadar uzakta olduğunu belirler. Y koordinatı yani.
Value: Nesneye ait secili veri tipi ile ilgili değeri icerir.(RadioBox lar icin mesela. Secili değilken 0, seciliyken 1.)
Visible: Nesnenin gorunur olup olmadığını ayarlar.
Width: Nesnenin genişliğini belirler.

Standart Olaylar

Change: Nesne iceriği uzerinde değişiklik yapılmasıdır.
Click: Nesne uzerine fareyle kliklemek. (Klik: Fare duğmesine basılıp cekilmesi. (Bir kitapta gormuştum. Aynen boyle yazıyordu.))
DblClik: Cift klikleme.
DragDrop: Surukle&Bırak işleminin tamalanmasıyla ortaya cıkan olaydır.( Bırakma işlemi olarak da yorumlayabiliriz.)
DragOver: Surukle+Bırak devam ederken ortaya cıkar.(Bu da surukleme işlemi.)
GotFocus: Nesnenin, kullanıcı tarafından secilmesi ya da etkin hale donuşturulmesidir.
KeyDown: Bir tuşa basılması.
KeyUp: Basılı olan bir tuşun bırakılması.
KeyPress: Bir tuşa basılıp cekilmesi. (Bu key olaylarının kullanılabilmesi icin, nesnenin keypreview ozelliğinin acık olması gerekir.)
LostFocus: GotFocus olayının tersi. Yani nesnenin pasif duruma gecmesi.
MouseDown: Fare duğmesine basılması.
MouseUp: Basılı olan fare duğmesinin bırakılması.
MouseMove: Farenin nesne uzerinde gezinmesi.


Standart Metotlar

Drag: Surukle & Bırak işleminin başlamasını, bitmesini ya da iptal edilmesini sağlayan metot.
Hide: Form’un bellekteki yerini kaybetmeksizin, yalnızca gorunmez olmasıdır.
Move: Herhangi bir nesnenin ekran uzerinde taşınmasını sağlar.
PrintForm: MDI tipinde olmayan bir formun iceriklerinin yazıcıdan dokumunu almaya yarar.
Refresh: Nesnenin hem icerik, hem de gorunuş acısından guncelleşmesini sağlar.
SetFocus: Nesnenin etkin konum onceliğine sahip olmasını sağlar.
Procedure

Procedure, yazmış olduğunuz programın, daha esnek ve anlaşılır bolumlere ayrılması demektir.Visual Basic’de uc tip procedure vardır.

1. Subroutine: Bir değişken yada parametreye gerek duymaksızın, tek başına calışan procedure’lerdir. Cağırdığınız zaman, ustune duşen gorevi yapar ve başka birşeye karışmazlar.
2. Function: Değişken ve parametreler ile calışır.Verilen gorevi yaptıktan sonra iş donuşunde yaptıklarını değişkenlerle geri getirebilirler.
3. Property: Function’ların ve ozelliklerin birleşiminden oluşmuş ozel bir turdur. Ozellikle ActiveX kontrolleri yaparken nesneye yeni ozellik eklemede kullanılır.
Ornekler

Subroutine Orneği

Basit bir ornekle başlayalım.Formun uzerine iki tane commandbutton yerleştirip, başlıklarını (caption) mavi top ve kırmızı halı olarak değiştirin. Bir tane de textBox koyup aşağıdaki kodu yazın.

Public Sub mavitop()
Text1.Text = "Mavi Top"
End Sub


Public Sub kırmızıhalı()
Text1.Text = "Kırmızı Halı"
End Sub


Private Sub Command1_Click()
mavitop
End Sub


Private Sub Command2_Click()
kırmızıhalı
End Sub

Aslında bu program procedure kullanarak işlerimizi pek kolaylaştırmıyor ama amac nasıl kullanıldığını anlatmaktı. Procedure eklerken, bunu kod ile yapabileceğiniz gibi, “tools” menusunden “add procedure” yi secerek de yapabilirsiniz.

Function Orneği

Biraz onceki orneği bu sefer function ile yapalım. yine demin ki gibi bir form oluşturun ve işe başlayalım.

Public Function yazıyazma(yazı As String)
Text1.Text = yazı
yazıyazma="yazma işlemi yapıldı."
End Function


Private Sub Command1_Click()
Print yazıyazma("mavi top")
End Sub


Private Sub Command2_Click()
Print yazıyazma("kırmız Halı")
End Sub

Parantez icindeki yazı as string ifadesi, bu procedure de kullanılacak değişkeni ifade etmektedir. Bu function cağırılırken, yollanacak bir string değeri, yazı değişkenine otomatik olarak aktarılmaktadır.
yazıyazma(“mavi top”) ifdesi, yazıyazma adlı function’a “mavi top” stringini yollar. Yukarıda anlatıldığı uzere, zatn yazıyazma adlı function da kendine yollanacak bir stringi beklemekteydi. Sonra o string’i alıp gorevini yapıyor ama işi henuz bitmedi.
function, kendine verilmiş ad olan yazıyazma’ya atanacak bir değeri de iş donuşunde geri gondermektedir. Mesela bu ornekte, text1.text değiştirildikten sonra yazıyazma=” yazma işlmi yapıldı” ifadesi bunun icindir.
Bir toparlama gerekirse (nihayet!), print yazıyazma(“mavi top”) satırı şu anlama gelmektedir;
1. Once yazıyazma adlı function’a git.
2. Giderken eli boş gitme, “mavi top” şeklindeki string’i de gotur.
3. Orada işler bitince, oradan gelecek olan yazıyazma değişkenini form uzerine yaz.
Ben elimden geleni yaptım. Artık anlamak sizin elinizde. yukarıdaki orneklerin orasını burasını değiştirerek kısa surede anlayabileceğinizi sanıyorum.

Grafik Kullanımı

Aranızda C64 ile program yapma şerefine erişmiş olanlar bilirler; grafik cizmek icin nelere katlanılırdı o zamanlar. Karelere ayrılmış bir tabloda (yanlış hatırlamıyorsam 24*21 idi) karakterler oluşturulur, sonra her bir kare, ustteki değerlere gore toplanarak uzun datalar oluşturulurdu. Eğer uğraşmışsanız anlamışsınızdır. Anlamadıysanız uzulmeyin cunku artık programlara grafik eklemek icin boyle zahmetli işlerle uğraşmanız gerekmiyor.

OLE nesnesi sayesinde zaten pahalı cizim ve illutrasyon (turkcesi ne?) programlarıyla cizdiğiniz grafikleri pat diye programa koyabiliyorsunuz. Ama amacınız aktif grafikler ise (-ki kendileri, girilen bilgi ya da alınan sonuca gore sonradan cizilen grafikler oluyorlar) VB nin bizlere verdiği cizim imkÂnlarına şoyle bir bakmanız gerekecektir.

[line]Line Nesnesi : Arac kutusunda bulunur. Nerde kaybolur, onu bilemeyeceğim (tamam, kotu espri.). Bordercolor ile renk, Borderwidth ile kalınlık, Borderstyle ile cizim bicimini ayarlayabilirsiniz ki, bu bicimler kesik cizgi, nokta ve saydam gibi niceliklerdir. X1,Y1 başlangıc koordinatlarını, X2,Y2 ise bitiş koordinatlarını belirtmektedir. Bunlar sayesinde kod icerisinden de Line nesnesini kullanabilirsiniz.

Shape Nesnesi: Bu nesne sayesinde kare, dikdortgen, elips, daire vb şekiller cizebilirsiniz.Nesnenin shape ozelliği sayesinde cizilecek şeklin tipini belirlersiniz.

Shape.shape = (Cizilecek şekil)
0 : Dikdortgen
1 : Kare
2 : Elips
3 : Daire
4 : Yuvarlatılmış dikdortgen
5 : Yuvarlatılmış kare

Shape.Borderstyle = (Cerceve tipi)
0 : Yok
1 : Surekli
2 : Kesikli cizgi
3 : Noktalı cizgi
4 : Cizgi-nokta şeklinde kesikli cizgi
5 : Cizgi-nokta-cizgi
6 : Sınır cizgisi şeklin icinde kalır

Shape.Fillstyle = (İcinin doldurulma şekli )
0 : Tamamen dolu
1 : Boş
2 : Yatay cizgiler
3 : Dikey cizgiler
4 : Yatay ve dikey cizgiler
5 : Sola yatık cizgiler
6 : Sağa yatık cizgiler
7 : Baklava Tepsisi

Backstyle ozelliğinin değerini 0 yaparsanız; cizilen şeklin ici saydam olacaktır. Yok “Ben saydam istemiyom” deseniz,o zaman 1 yapın ki; ici renkli olsun.
Borderstyle ve Fillstyle icin yukarı bakın, bakın ki, o kadar şeyi yeniden yazmayayım. Bana da yazık değil mi?

Bunlar basit şekiller cizerken kullanabileceğimiz nesnelerdi. İstatistik gibi bilgileri şemaya dokebileceğimiz MSCHART nesnesine gecmeden once kod ile grafik cizebileceğimiz VB komutlarına da şoyle bir bakalım isterseniz.

Taa BASIC’den buyana kullandığınız, tanıdık, sevimli komutlardır bunlar. Gelin hasret giderelim.

Nesne.PSET (X,Y), Renk :X ve Y ile belirttiğiniz koordinata bir tane nokta koymaya yarar bu komut. İsterseniz renk de yazarak noktalarınızın renkli, cıvıl cıvıl olmalarını sağlayabilirsiniz. Nokta deyip kucumsemeyin. Her hangi basit bir parabolu bile line nesnesi ile cizemessiniz.

Nesne.Line (X1,Y1)-(X2,Y2),Renk,B(F) : Şirin dikdotgenler cizmek icin kullanabilirsiniz. En sondaki “B” nin yanına “F” de koyarsanız, dikdortgeninizin ici dolu olur. Koymassanız boş olur. Hem “F” koyma, hem de dolu olmasını iste! Var mı oole !?! Geyiğe girmeden devam edelim sonra cıkamayız.

Nesne.Circle (X,Y),Yarıcap,Renk, Başlangıc acısı, Bitiş acısı, Basıklık aireler ve elipsler cizmek icin kullanırız biz bu komutu. Hem adı circle olduğu icin hem de daire ve elips cizmek icin bu komut kullanıldığı icin. ( Burda cok ince bir espri var. Esasında MUDER kullanmıştı bunu. Once anlamamıştım ama anladığımdan bu yana hep gulerim. Ah Gameshow Ah!)

Hepsini anlattım. Tabi boyle anlaşılmaz. Ornek gerek. Gerek de şimdi vaktim yok. Netcez şimdi? Ya uğraşın işte. Ya bakma oyle ağlamaklı, beni de ağlatacan. Tamam tamam ornek yapalım. Ama sadece nasıl kullanıldığı ile ilgili. Oyle ahım şahım bişe olmıyacak. Ha bir de Scale metotu var. Ona da bir bakalım da, orneğe oyle geceriz.

Scale Metotu : Normalde ekranın sol ust koşesi (0,0) koordinatları ile belirtilir. Bu Scale ile ekran koordinatlarını kafanıza gore değiştirebilirsiniz. Mesela Scale (-500,250)-(500,-250) ile ekranın sol ust koşesini (-500,250), sağ alt koşesini (500,-250) olarak değiştirmiş olursunuz. Ekran şuna benzer (şimdi paintle falan uğraştırmayın boyle idare ediverin işte):

(-500,250) (500,250)
(0,0)
(-500,-250) (500,-250)
Ornek_LineNesnesi :

Private Sub Command1_Click()
k = 1
For i = 1 To 10
Line1.BorderColor = QBColor(Rnd*15)'***
'*** Kullanılış şekli QBColor(Renk Kodu). Renk kodu 0-15 arasında yazılabilir.
Line1.BorderWidth = k
Line1.X1 = i * Rnd * 100
Line1.Y1 = i * Rnd * 100
Line1.X2 = i * Rnd * 100
Line1.Y2 = i * Rnd * 100
k = k + 1
If k = 6 Then k = 1
For f = 1 To 300
Next f
Next i
End Sub

Ornek_LineKomutu :

Private Sub Form_Click()
Scale (-1000,1000)-(1000,-1000)
For i= 1 To 5000 Step 100
Line (-1000+i,1000-i)-(-800+i, 800-i),QBColor(15*Rnd),BF
Next i
End Sub

VB’de Menuler
tools menusunden yada formun ustune sağ tuşla tıklayınca cıkan yerden Menu Editoru secin.
Aşağıda resmini gorduğunuz menu editor, programlarınıza form menuleri eklemeye yarar. Cumlem her ne kadar anlamzsız gibi gozukse de, benim bunun hemen ardından dosya, duzen, ara… gibi demem de bu karışıklığa tuz biber ekmiş olup, lafı uzatmama kararı vermeme neden olmuştur. Yani kısaca, neredeyse her programda olan ve alt tuşuna basınca secilebilir hale gelen ve mouse’nin kullanımıyla bu tuşsuz bile calışan menuleri, şu editor sayesinde siz de yapabilirsiniz.

Editorun uzerindeki duğme ve secenekleri teker teker acıklamak yerine, bir menu oluşturarak olayı daha iyi anlayabileceğinizi duşundum. Kabul edenler… etmeyenler… Kabul edilmiştir!

lk Menumuz
Mesela şu an benim bilgisayarımda arka plÂnda acık bulunan internet explorer 3.0′daki (Gulmeyin. CD surucumu sattım da. 4.0 yukleyemiyorum ehe.) gibi bir menu hazırlayalım.

Bir bakalım… Once “Dosya” var. Caption kısmına “Dosya” yazalım. Tamam. Şimdi de her kontrolde olduğu gibi buna da bir isim verelim. “mnDosya” bunun ici uygun bir isim. Sitede ki “25 Altın Kural”‘ı zahmet edip de okuduysanız, isimlendirme de acıklayıcı olmak gerektiğini anlamışsınızdır. Kontrolleri isimlendirirken, hangi nesne olduklarını da belirtirseniz sonradan başınız ağrımaz. Mesela text box ları adlandırıken “txtİsim” gibi yazlışla sonradan cekilebilecek bir cok sıkıntıdan kurtulmuş olursunuz. Bu kısa tavsiyeden sonra devam edelim. İsmi yazdıktan sonra Next (sonraki) tuşuna basın. Tamadır. Artık mndosya hazır. Şimdi sıra mnDosya’nın alt menulerinde. Yani mnDosya2ya basınca acılacak olanlar da. Editorun ustunde, hemen Next tuşunun yanında 4 tane ok var. Gordunuz mu? İşte onlardan sağ arafı gosterene bir kez tılayın. Ne oldu? Dosya’nın altına uc tane nokta koyuldu değil mi? Bunu anlamı mnDosya’nın altına bir kez girdik demektir. (OHA BE! Bir insan ancak bu kadar yanlış anlamaya musait bir cumle kurabilir yani!!!) Bilirsiniz genelde butun programlarda Dosya menusunde aynı secenekler bulunur. biz de oyle yapalım. Sırada “Yeni” var. Aynen demin olduğu gibi caption kısmına “Yeni”, name kısmına da “mnYeni” yazın. Sonra da Next. “Ac” ve “kaydet” ve “Cıkış” kısmını da kendiniz yapın bakim. Bu arada ben de cayın altına bir bakayım…

Kod Yazma
Artık Menumuz hazır. Sırada menu seceneklerine kod eklemek var. Tasarım esnasında olsanız dahi, fare ile menulere ulaşabilrsiniz. Şimdi formunuzdaki hazırlanmış olan menuyu acık “Cıkış”‘ı secin. Tıpkı diğer kontrollerdeki gibi “_click()” porseduruyle birlikte kod penceresi acılacaktır. Komut olarak “end” yazalım.

Private Sub mnCıkış_Click()
End
End Sub

Şimdi programı calıştırın ve menuyu test edin. Duzgun calışıyorsa her şeyi doğru yapmışsınızdır. Değilse bir şeyler yanlış yapılmıştır. (Basit bir mantık, oyle değil mi?)

İncelikler Yuzunden
* Yazımı bitirmeden once şu alt menu olayına biraz girmek istedim. Aynı seviyede olan menu duğmelerinin girinti kısımlarının da aynı olmasına dikkat edin. Mesela az onceki menuye bir de duzen kısmını ekleyeceğinizi varsayalım. Bu durumda “Duzen”, “Dosya” ile aynı seviyede olacaktır. Cunku ikisi de en ust duzey ve ekranda gorunuyorlar. Şu halde ” Cıkış” tuşunu da yaptıktan sonra girintiyi kaldırmanız gerekecektir. Cunku mnDosya’da hic bir girinti yoktu. Bunu icinde o oklardan sol tarafı gosterene basın. Sanırım anlamışsınızdır.
* Menu oluşturken caption kısmına “-”, name kısmına da herhangi bir şey yazın. Bakalım ne olacak?
* Editordeki shortcut kısmı, seceneklere kısayol tuşu eklemek icindir. Mesela “Cıkış” secip shortcut kısmından da CTRL+A yı secerseniz, program calışırken bu tuş kombinasyonu, seceneğin _clik() prosedurunu gercekleştirecektir (Lafı da amma uzattım ha. Zaten adı ustunde, Kısayol…)
* Menudeki seceneklere isim yazarken -komut duğmelerinde de olduğu gbi- ismin belli bir harfinde once “&” işaretini koyarsanız, program calışırken ALT tuşuyla birlikte o harfe basıldığında secenek secildiğinde gercekleşmesi gereken olay cereyan edcektir.
* Editoru incelediğinizde “checked” yazılı bir checkbox goreceksiniz. Bununla menu seceneklerinize “secilebilme” ozelliği eklersiniz. Tıpkı bir checkbox gibi yani. aşağıdaki ornekle bunu daha iyi anlarsınız sanırım.

Minik Bir Ornek
Yandaki gibi bir menu hazırlayıp, text1 isimli bir metin kutusu yerleştirin. Ornek yalnızca checked ozelliğini anlatmak icin yapılmış olup, ac, kaydet gibi menu secenekleri boş bırakılmıştır.

Private Sub Form_Load()
mnKalın.Checked = False
mnYatık.Checked = False
End Sub


Private Sub mnCıkış_Click()
End
End Sub

<
Private Sub mnKalın_Click()
Text1.FontBold = Not(mnKalın.Checked)
mnKalın.Checked = Not(mnKalın.Checked)
End Sub


Private Sub mnYatık_Click()
Text1.FontItalic = Not(mnYatık.Checked)
mnYatık.Checked =Not(mnYatık.Checked)
End Sub

Veri Tabanları
Bilgileri saklamanın kolay yollarından bir tanesidir bu veri tabanları. Visual Basic sayesinde veritabanlarını oluşturmak ve kullanmak oldukca kolaylaşmıştır.Eskiden uzuuun kodlarla dosyalarla uğraşmak, onlara erişmek, bir bilgiyi aramak, sıralamak silmek icin baya bir cebelleşmeniz (bizim memlekette boyle derler) gerekirken, Vb sayesinde artık cok daha az bir zahmetle basit depolama programları oluşturabiliyoruz. İsterseniz ben lafı hic uzatmayayım, basit bir program yaparak her şeyi adım adım anlatayım.
Oncelikle bir veri tabanına ihtiyacaımız var. Bunun icin VB5.0 ile birlikte gelen Visual Data Manager’ı kullanacağız.Add-Ins menunde o zaten sizi bekliyor. Tamam mı? Sectiniz mi? Guzel. Şimdi, File/New…/Microsoft Access/Version 7.0 MDB yi secerek yeni bir veri tabanı oluşturalım.Personel.mdb adı ile kaydetsin

Database Window da bulunan “Properties” in ustune sağ tuşla tıklayıp, “New_Table” i secin.İsim olarak birşeyler yazın işte. Ben nedense hep “personel” yazarım. Bu seferlik siz de oyle yapın ki, ileride isim karışması olmasın. Tamam. Artık personel adında ki veri tabanımıza alan (field) eklemenin zamanıdır. Hangi bilgileri saklamak istiyorsanız alanları ona gore secin. Mesela biz şimdi isim, soyisim ve telefon numaralarını saklayabileceğimiz bir veritabanı yapalım.

Bunun icin ilk olarak “Add Field” tuşuna basın.İsim olarak “ad” yazıp enter tuşuna basın. Boylece “ad” isminde bir alanımız veri tabanına eklenmiş oldu. Sonra “soyad” ve “telefon” isminde de iki tane oluşturup “close” ye basın.Field list yazan bolumde oluşturduğunuz alanları gordunuz mu?”Build Table” tuşuna basın. Ve TaTa! Artık sizin de bir veri tabanınız oldu. Veri tabanı deyip gecmeyin. Buna sahip olamayanlar da var. Neyse cıvımayayım…

Yine ilk ekrana donduk. Ama bir farkla: “Database window” da artık propertiesin altında personel de var. Şimdi personel’e sağ tuşla basıp, “Open” ı secin.Gelen yeni formda Add tuşuna basıp bir tane yeni kayıt yapalım isterseniz. Tuşa basın ve ad olarak “Hande”, soyad olarak “Ataizi”, telefona da “02123457687″ yazın. (İstersen bir ara. Denemesi bedava). Bunları yazdıktan sonra “Update” ye basıp kaydedelim. Eveet işte kaydettik. Bu kadar kolay. Bir kac tane daha yapın. Zararı olmaz, hem de pratik yapmış olursunuz.

PekÂla şimdi Visual Data Manager dan cıkıp bizim eski dost VB ye geri donelim.Formun ustune tetxbox,label ve DataObject yerleştirip şekildeki gibi yapın bakalım

Dersimiz Bitmiştir.Ve Bunu Hileler uzerindede yapabilirsiniz
__________________