Visual Basic Hakkında

Temel Bilgiler

Visual Basic, nesneye yönelik bir programlama dilidir. Yani temel
olarak nesneleri kullanırız. Peki nedir bu nesneler ? Bu satırları
görebildiğinize göre windows kullanımı hakkında bilginiz vardır.
Ekranda gördüğünüz o tuşlar, metin kutuları, açı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
çalışı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 mümkün.

Bütün bunlar "olay"lar , "metot"lar ve "özellikler" kullanılarak
kolaylıkla yapılabilir. Çok sık duyacağınız bu terimlerle daha sonra
iyice uğraşacağız ama şimdi bir örnek vererek hem bunları, hem de
Visual Basic mantığını anlamaya çalışalım.

Kapınızın önünde duran kırmızı, çelik cantlı, siyah camlı 98 model
bir Doğan düşünün. 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 gördüğünüz Doğan marka otomobil. Gerçek 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 özellikleri var.

Atılgan.cant = çelik

Atılgan.cam = siyah

Atılgan.yazı = True

Atlgan’ın cantları çelik 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.Özellik = Değer mantığıyla çalışır.Bu değerin nasıl belirtileceği konusunda ise bize değişken
ler yardım eder. Biraz önceki True-False boolean türünde idi. Merak
etmeyin bunlara daha sonra geleceğiz. Atılgan’ın gaz pedalına
bastığımız zaman araba yürür.( Arabaların çalışması ve ileri sürücülük
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 çalıştırdığınızda, içinde beş-altı tane pencere olan
bir yere gelirsiniz. İnceleyeceğimiz ilk pencere, ekranın en solunda
bulunan Araç Kutusu.

  

Araç Kutusu ismi ona boşuna verilemiş. Gerçekten de o, içinde
ihtiyacımız olan her türlü aracı bulabileceğimiz bir alet çantası.
Çekicinden tornavidasına kadar her şey onun içinde. Yapacağımız işe
göre onun içine istediğimiz aletleri koyup çıkartabiliyoruz da! Bunu
üst taraftaki menüden "project/components "’ı seçerek yapıyoruz.
Böylelikle hem gerekli aletleri alıyor, hem de işimize yaramayacak
aletleri boşuna taşımaktan kurtulmuş oluyoruz.

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

Araç kutusundakiler aslında, hakkında sıkça konuştuğumuz
nesnelerdir. Evet sonunda onlarla tanıştınız işte. Ne kadar sevimliler
değil mi? Onları kullanmak için üstüne tıklamanız yeterli. Daha sonra
formun üstüne, tıpkı paintte dikdörtgen çizermiş gibi bırakırsınız.
Form ve bunlar hakkında daha sonra konuşacağız.

Hani daha önce Atılgan’dan bahsetmiş ve onu bir nesne olarak kabul
etmiştik. Hatırlarsanız onun özellikleri üzerinde çalışmıştık. İşte bu
araç kutusundakilerin de her nesne gibi bazı özellikleri var. Bu
özelliklerine Özellikler Pencereresi (Properties Window) sayesinde
ulaşabiliyoruz.

Ekranın sağında bulunan ve üzerinde "properties" yazan pencere,
özellikler penceresidir. O anda seçili olan nesnenin özelliklerini
gösterir. İşin güzel tarafı, bu pencere sayesinde onları görmekle
kalmaz, değiştirebilirsiniz de! Seçili olan nesnenin özelliklerini ve o
özelliğin o anki değerini gösterir.

   Visual Basic kullanırken yeni projeye başladığınızda yada daha
önceki bir projeyi çağırdığınızda form otomatik olarak seçilecektir.
Madem seçili, o halde bu pencereyi kullanrak bazı özelliklerine bir
bakalım.

(Name)  : Seçili nesnenin ismidir. Burda form’un ismi Form1 imiş

BackColor : Sanırım anladınız. Arka plân rengi.

Caption : Nesnenin üzerindeki yazıyı bununla ayarlarsınız.
Mesela şu anda ekranın en üstünde mavi bir şeritte "özellikler
penceresi -" yazıyor. Bunu, ‘caption’ özelliği sayesinde
görebiliyorsunuz.
ForeColor Önrenk demek biraz saçma olur herhalde ama doğru. Yazı rengi.

Borderstyle Çerçeve biçimi. Hani pencerelerin üstünde mavi bir şerit var ya, onunla ilgili işte.

Burada tüm özellikler anlatılmayacak. Sadece bir fikir sahibi
olmanız için kısaca göz gezdirdik. Properties yazısının altındaki
bölümde o an seçili olan nesnenin adı ve türü yazıyor. Altaki iki
düğmeden özellikleri alfabetik mi, katogorize edilmiş olarak mı görmek
istediğinize karar veriyorsunuz.

Biraz önce bir formdan bahsettik.Biraz forum hakkında bilgi verelim.

Visual Basic’de form için "önemli bir nesnedir" demek doğru olmakla
beraber, "önemli" kelimesi yerine "zorunluluk" koyarak, formun ne demek
olduğunu daha iyi anlatmış olacağız. Çünkü form olmaksızın diğer
nesnelerle hiç bir şey yapamayız. Form bir bakıma diğer nesneler için
bir biosfer konumundadır. Bütün 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 Özellikler

Align: Bu özellik, nesne genişliğinin form genişliğine
eşitlenmesini sağlayarak, Formun üstünde mi yoksa altında mı duracağına
karar verir.
Alignment: CheckBox, OptionButton ve TextLabel nesneleri
üzerinde 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 görünüşüile ilgili özelliktir. 3 boyutlu veya düzlem halinde olmasını ayarlar.

Autosize:  Nesne boyunun, nesne içeriğine göre otomatik
olarak ayarlanmasını sağlar. Mesela Label nesnesine bir sözcük yazıp,
bu özelliği true yaparsanız, label nesnesinin boyu, sözcüğünkine 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. (Örn:
Label1.backcolor = vbblue ("vb" yazmayı unutmayın.))
BorderStyle:  Nesneye ait çerçevenin tipini belirler.(Örn:Form için, "fixed single"; min ve max butonsuz bir çerçeve yapar.)

Cancel:  Form üzerinde bulunan button nesnesinin, "iptal" tuşu olup olmadığını belirler

Caption:  Form nesnesi için pencerenin taşıma çubuğundaki yazıyı, diğer nesneler için, nesnenin üzerinde yazan yazıyı belirtir.

DataField: Data nesnesine bağlı bir kontrolün, veri tabanı dostyasındaki hangi alana bağlı olduğunu gösterir.

DataSource: Nesnenin bağlı olduğu Data kontrolünün adını belirtir.

Default: Bir form üzerindeki CommandButton’lardan hangisinin seçili olduğunu belirtir.

DragIcon: Sürükle ve Bırak (Drag&Drop) işlemi sırasında fare imlecinin sembolünü belirtir.

DragMode:  Sürükle&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" özelliğini seçemiyorum. Çünkü enabled özelliği false. Ulan alcan
bir adam gibi kart. O zaman gör bakim. Kötü ESS işte.)
Font: Nesnenin yazıtipi ile ilgili tüm ayarları bununla
yapabilrsiniz. (Eski versiyonlarda bulunan fontbold, fontitalic… gibi
özellikler uyumluluk açısında halâa varlar.)
ForeColor:  Nesnenin ön plânda kullandığı rengi belirler.

Height:  Nesnenin boyunu gösterir.

hWind: Nesneyi referans gösteren handle’ı içerir. İleri düzey VB progrmlamakta kullanılır. API larda falan.

Index: Eğer form üzerinde, aynı tür ve aynı adda nesneler
varsa, indexleri farklı olmalıdır.Bu özellik o indexin kaç numara
olduğunu beliritr. (En iyisi bir örnekle açıklayayım. Bkz: Örnek_Index)

Left: Nesnenin, üzerinde 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 seçili olduğunu gösterir.

Locked: Metin kutusunun (TextBox) kilitli olup olmayacağını belirtir. Kilitli iken kullanıcı, metin kutusundaki metni değiştiremez.

MaxLength: Nesne içndeki metnin, en fazla kaç karakterden oluşacağını belirler.

MouseIcon:  Fare imlecini belirler. MousePointer özelliğinin 99 olması durumunda geçerlidir.

MousePointer: Farenin nesne üzerinde dolaşırken, hangi imleci kullanacağını gösterir.99 ise MouseIcon’da seçili ikonu kullanır.

MultiLine: Nesnenin içindeki metnin, tek satırda yazılıp
yazılmayacağına karar verir. "True" ise metin yazarken, nesnenin sonuna
gelindiğinde; bir alt satıra geçer.
Name: Nesnenin adını gösterir. Sadece tasarım aşamasında değiştirilebilir.

Parent: Nesnenin hangi nesne üzerinde bulunduğunu veya hangi nesneye bağlı olduğunu gösterir.

Picture: Nesne içeriği olan resim dosyasının bulunduğu sdizini ve dosya adını içerir.

ScrollBars: Nesnenin, yatay veya dikey kaydırma çubuklarına sahip olup olmadığını belirtir.

SelLength:  Seçili metnin, metnin tamamı içerisinde bulunduğu yeri gösterir.

SelText: Seçili metni içerir.

TabIndex: Nesnenin, Tab tuşu değişimlerinde kaçıncı sırada olduğunu belirler.

TabStop: Nesnenin Tab tuşu sektirmelerine dahil olup olmadığını belirtir.

ToolTipText: Bir nesnenin üzerinde, mouse ile bekleyince
çıkan sarı zeminli yaznın ne olacağını belirler. ( bişeyler yaz ve
nesnenin üzerinde bekle görürsün.)
Top: Nesnenin, üzerinde bulunduğu nesneden düşey olark ne kadar uzakta olduğunu belirler. Y koordinatı yani.

Value: Nesneye ait seçili veri tipi ile ilgili değeri içerir.(RadioBox lar için mesela. Seçili değilken 0, seçiliyken 1.)

Visible:  Nesnenin görünür olup olmadığını ayarlar.

Width:  Nesnenin genişliğini belirler.

Standart Olaylar

Change: Nesne içeriği üzerinde değişiklik yapılmasıdır.  

Click: Nesne üzerine fareyle kliklemek. (Klik: Fare düğmesine basılıp çekilmesi. (Bir kitapta görmüştüm. Aynen böyle yazıyordu.))

DblClik: Çift klikleme.

DragDrop: Sürükle&Bırak işleminin tamalanmasıyla ortaya çıkan olaydır.( Bırakma işlemi olarak da yorumlayabiliriz.)

DragOver: Sürükle+Bırak devam ederken ortaya çıkar.(Bu da sürükleme işlemi.)

GotFocus: Nesnenin, kullanıcı tarafından seçilmesi ya da etkin hale dönüştürülmesidir.

KeyDown: Bir tuşa basılması.

KeyUp: Basılı olan bir tuşun bırakılması.

KeyPress: Bir tuşa basılıp çekilmesi. (Bu key olaylarının kullanılabilmesi için, nesnenin keypreview özelliğinin açık olması gerekir.)

LostFocus: GotFocus olayının tersi. Yani nesnenin pasif duruma geçmesi.

MouseDown: Fare düğmesine basılması.

MouseUp: Basılı olan fare düğmesinin bırakılması.

MouseMove: Farenin nesne üzerinde gezinmesi.

Standart Metotlar

Drag: Sürükle & Bırak işleminin başlamasını, bitmesini ya da iptal edilmesini sağlayan metot.

Hide: Form’un bellekteki yerini kaybetmeksizin, yalnızca görünmez olmasıdır.

Move: Herhangi bir nesnenin ekran üzerinde taşınmasını sağlar.

PrintForm: MDI tipinde olmayan bir formun içeriklerinin yazıcıdan dökümünü almaya yarar.

Refresh: Nesnenin hem içerik, hem de görünüş açısından güncelleşmesini sağlar.

SetFocus: Nesnenin etkin konum önceliğine sahip olmasını sağlar.

Procedure

Procedure, yazmış olduğunuz programın, daha esnek ve anlaşılır
bölümlere ayrılması demektir.Visual Basic’de üç tip procedure vardır.

1. Subroutine: Bir değişken yada parametreye gerek duymaksızın, tek
başına çalışan procedure’lerdir. Çağırdığınız zaman, üstüne düşen
görevi yapar ve başka birşeye karışmazlar.
2. Function: Değişken ve parametreler ile çalışır.Verilen görevi
yaptıktan sonra iş dönüşünde yaptıklarını değişkenlerle geri
getirebilirler.
3. Property: Function’ların ve özelliklerin birleşiminden oluşmuş
özel bir türdür. Özellikle ActiveX kontrolleri yaparken nesneye yeni
özellik eklemede kullanılır.

Örnekler

Subroutine Örneği

Basit bir örnekle başlayalım.Formun üzerine 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 amaç nasıl kullanıldığını anlatmaktı. Procedure
eklerken, bunu kod ile yapabileceğiniz gibi, "tools" menüsünden "add
procedure" yi seçerek de yapabilirsiniz.

Function Örneği

Biraz önceki örneğ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 içindeki yazı as string ifadesi, bu procedure de
kullanılacak değişkeni ifade etmektedir. Bu function çağı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ığı üzere, zatn yazıyazma adlı
function da kendine yollanacak bir stringi beklemekteydi. Sonra o
string’i alıp görevini yapıyor ama işi henüz bitmedi.

function, kendine verilmiş ad olan yazıyazma’ya atanacak bir değeri
de iş dönüşünde geri göndermektedir. Mesela bu örnekte, text1.text
değiştirildikten sonra yazıyazma=" yazma işlmi yapıldı" ifadesi bunun
içindir.

Bir toparlama gerekirse (nihayet!), print yazıyazma("mavi top") satırı şu anlama gelmektedir;

1. Önce yazıyazma adlı function’a git.

2. Giderken eli boş gitme, "mavi top" şeklindeki string’i de götür.

3. Orada işler bitince, oradan gelecek olan yazıyazma değişkenini form üzerine yaz.

Ben elimden geleni yaptım. Artık anlamak sizin elinizde. yukarıdaki
örneklerin orasını burasını değiştirerek kısa sürede anlayabileceğinizi
sanıyorum.

Grafik Kullanımı

Aranızda C64 ile program yapma şerefine erişmiş olanlar bilirler;
grafik çizmek için 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, üstteki değerlere göre toplanarak uzun datalar
oluşturulurdu. Eğer uğraşmışsanız anlamışsınızdır. Anlamadıysanız
üzülmeyin çünkü artık programlara grafik eklemek için böyle zahmetli
işlerle uğraşmanız gerekmiyor.

OLE nesnesi sayesinde zaten pahalı çizim ve illutrasyon (türkçesi
ne?) programlarıyla çizdiğiniz grafikleri pat diye programa
koyabiliyorsunuz. Ama amacınız aktif grafikler ise (-ki kendileri,
girilen bilgi ya da alınan sonuca göre sonradan çizilen grafikler
oluyorlar) VB nin bizlere verdiği çizim imkânlarına şöyle bir bakmanız
gerekecektir.

[line]Line Nesnesi :  Araç kutusunda bulunur. Nerde kaybolur, onu bilemeyeceğim (tamam, kötü espri.). Bordercolor ile renk, Borderwidth ile kalınlık, Borderstyle
ile çizim biçimini ayarlayabilirsiniz ki, bu biçimler kesik çizgi,
nokta ve saydam gibi niceliklerdir. X1,Y1 başlangıç koordinatlarını,
X2,Y2 ise bitiş koordinatlarını belirtmektedir. Bunlar sayesinde kod
içerisinden de Line nesnesini kullanabilirsiniz.

Shape Nesnesi: Bu nesne sayesinde kare, dikdörtgen, elips, daire vb şekiller çizebilirsiniz.Nesnenin shape özelliği sayesinde çizilecek şeklin tipini belirlersiniz.

Shape.shape = (Çizilecek şekil)

0 : Dikdörtgen

1 : Kare

2 : Elips

3 : Daire

4 : Yuvarlatılmış dikdörtgen

5 : Yuvarlatılmış kare

Shape.Borderstyle = (Çerçeve tipi)

0 : Yok

1 : Sürekli

2 : Kesikli çizgi

3 : Noktalı çizgi

4 : Çizgi-nokta şeklinde kesikli çizgi

5 : Çizgi-nokta-çizgi

6 : Sınır çizgisi şeklin içinde kalır

Shape.Fillstyle = (İçinin doldurulma şekli )

0 : Tamamen dolu

1 : Boş

2 : Yatay çizgiler

3 : Dikey çizgiler

4 : Yatay ve dikey çizgiler

5 : Sola yatık çizgiler

6 : Sağa yatık çizgiler

7 : Baklava Tepsisi

Backstyle özelliğinin değerini 0 yaparsanız; çizilen şeklin içi
saydam olacaktır. Yok "Ben saydam istemiyom" deseniz,o zaman 1 yapın
ki; içi renkli olsun.

Borderstyle ve Fillstyle için yukarı bakın, bakın ki, o kadar şeyi yeniden yazmayayım. Bana da yazık değil mi?

Bunlar basit şekiller çizerken kullanabileceğimiz nesnelerdi.
İstatistik gibi bilgileri şemaya dökebileceğimiz MSCHART nesnesine
geçmeden önce kod ile grafik çizebileceğimiz VB komutlarına da şöyle
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 küçümsemeyin. Her hangi basit bir parabolü bile line nesnesi ile
çizemessiniz.

Nesne.Line (X1,Y1)-(X2,Y2),Renk,B(F) : Şirin dikdötgenler çizmek
için kullanabilirsiniz. En sondaki "B" nin yanına "F" de koyarsanız,
dikdörtgeninizin içi dolu olur. Koymassanız boş olur. Hem "F" koyma,
hem de dolu olmasını iste! Var mı ööle !?! Geyiğe girmeden devam edelim
sonra çıkamayız.

Nesne.Circle (X,Y),Yarıçap,Renk, Başlangıç açısı, Bitiş açısı,
Basıklık :Daireler ve elipsler çizmek için kullanırız biz bu komutu.
Hem adı circle olduğu için hem de daire ve elips çizmek için bu komut
kullanıldığı için. ( Burda çok ince bir espri var. Esasında MUDER
kullanmıştı bunu. Önce anlamamıştım ama anladığımdan bu yana hep
gülerim. Ah Gameshow Ah!)

Hepsini anlattım. Tabi böyle anlaşılmaz. Örnek gerek. Gerek de
şimdi vaktim yok. Netcez şimdi? Ya uğraşın işte. Ya bakma öyle
ağlamaklı, beni de ağlatacan. Tamam tamam örnek yapalım. Ama sadece
nasıl kullanıldığı ile ilgili. Öyle ahım şahım bişe olmıyacak. Ha bir
de Scale metotu var. Ona da bir bakalım da, örneğe öyle geçeriz.

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

(-500,250)      (500,250)

                         (0,0)  

          (-500,-250)    (500,-250)

Örnek_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

Örnek_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 Menüler

tools menüsünden yada formun üstüne sağ tuşla tıklayınca çıkan yerden Menü Editörü seçin.

Aşağıda resmini gördüğünüz menü editör, programlarınıza form
menüleri eklemeye yarar. Cümlem her ne kadar anlamzsız gibi gözükse de,
benim bunun hemen ardından dosya, düzen, 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 seçilebilir hale gelen ve mouse’nin kullanımıyla bu tuşsuz bile
çalışan menüleri, şu editör sayesinde siz de yapabilirsiniz.

Editörün üzerindeki düğme ve seçenekleri teker teker açıklamak
yerine, bir menü oluşturarak olayı daha iyi anlayabileceğinizi
düşündüm. Kabul edenler… etmeyenler… Kabul edilmiştir!

İlk Menümüz

Mesela şu an benim bilgisayarımda arka plânda açık bulunan internet
explorer 3.0’daki (Gülmeyin. CD sürücümü sattım da. 4.0 yükleyemiyorum
ehe.) gibi bir menü hazırlayalım.

Bir bakalım… Önce "Dosya" var. Caption kısmına "Dosya" yazalım.
Tamam. Şimdi de her kontrolde olduğu gibi buna da bir isim verelim.
"mnDosya" bunun içi uygun bir isim. Sitede ki "25 Altın Kural"’ı zahmet
edip de okuduysanız, isimlendirme de açı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 çekilebilecek bir çok
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 menülerinde. Yani mnDosya2ya
basınca açılacak olanlar da. Editörün üstünde, hemen Next tuşunun
yanında 4 tane ok var. Gördünüz mü? İşte onlardan sağ arafı gösterene
bir kez tılayın. Ne oldu? Dosya’nın altına üç 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 müsait bir cümle kurabilir
yani!!!) Bilirsiniz genelde bütün programlarda Dosya menüsünde aynı
seçenekler bulunur. biz de öyle 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. "Aç" ve "kaydet" ve "Çıkış" kısmını da kendiniz yapın
bakim. Bu arada ben de çayın altına bir bakayım…

Kod Yazma

Artık Menümüz hazır. Sırada menü seçeneklerine kod eklemek var.
Tasarım esnasında olsanız dahi, fare ile menülere ulaşabilrsiniz. Şimdi
formunuzdaki hazırlanmış olan menüyü açık "Çıkış"’ı seçin. Tıpkı diğer
kontrollerdeki gibi "_click()" porsedürüyle birlikte kod penceresi
açılacaktır. Komut olarak "end" yazalım.

Private Sub mnÇıkış_Click()

End

End Sub

Şimdi programı çalıştırın ve menüyü test edin. Düzgün çalışıyorsa
her şeyi doğru yapmışsınızdır. Değilse bir şeyler yanlış yapılmıştır.
(Basit bir mantık, öyle değil mi?)

İncelikler Yüzünden

* Yazımı bitirmeden önce şu alt menü olayına biraz girmek istedim.
Aynı seviyede olan menü düğmelerinin girinti kısımlarının da aynı
olmasına dikkat edin. Mesela az önceki menüye bir de düzen kısmını
ekleyeceğinizi varsayalım. Bu durumda "Düzen", "Dosya" ile aynı
seviyede olacaktır. Çünkü ikisi de en üst düzey ve ekranda
görünüyorlar. Şu halde "Çıkış" tuşunu da yaptıktan sonra girintiyi
kaldırmanız gerekecektir. Çünkü mnDosya’da hiç bir girinti yoktu. Bunu
içinde o oklardan sol tarafı gösterene basın. Sanırım anlamışsınızdır.

* Menü oluşturken caption kısmına "-", name kısmına da herhangi bir şey yazın. Bakalım ne olacak?

* Editördeki shortcut kısmı, seçeneklere kısayol tuşu eklemek
içindir. Mesela "Çıkış" seçip shortcut kısmından da CTRL+A yı
seçerseniz, program çalışırken bu tuş kombinasyonu, seçeneğin _clik()
prosedürünü gerçekleştirecektir (Lafı da amma uzattım ha. Zaten adı
üstünde, Kısayol…)

* Menüdeki seçeneklere isim yazarken -komut düğmelerinde de olduğu
gbi- ismin belli bir harfinde önce "&" işaretini koyarsanız,
program çalışırken ALT tuşuyla birlikte o harfe basıldığında seçenek
seçildiğinde gerçekleşmesi gereken olay cereyan edcektir.

* Editörü incelediğinizde "checked" yazılı bir checkbox
göreceksiniz. Bununla menü seçeneklerinize "seçilebilme" özelliği
eklersiniz. Tıpkı bir checkbox gibi yani. aşağıdaki örnekle bunu daha
iyi anlarsınız sanırım.

Minik Bir Örnek

Yandaki gibi bir menü hazırlayıp, text1 isimli bir metin kutusu
yerleştirin. Örnek yalnızca checked özelliğini anlatmak için yapılmış
olup, aç, kaydet gibi menü seçenekleri boş bırakılmıştır.


Private Sub Form_Load()

mnKalın.Checked = False

mnYatık.Checked = False

End Sub

Private Sub mnÇı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 oldukça kolaylaşmıştır.Eskiden uzuuun kodlarla dosyalarla
uğraşmak, onlara erişmek, bir bilgiyi aramak, sıralamak silmek için
baya bir cebelleşmeniz (bizim memlekette böyle derler) gerekirken, Vb
sayesinde artık çok daha az bir zahmetle basit depolama programları
oluşturabiliyoruz. İsterseniz ben lafı hiç uzatmayayım, basit bir
program yaparak her şeyi adım adım anlatayım.

Öncelikle bir veri tabanına ihtiyacaımız var. Bunun için VB5.0 ile
birlikte gelen Visual Data Manager’ı kullanacağız.Add-Ins menünde o
zaten sizi bekliyor. Tamam mı? Seçtiniz mi? Güzel. Şimdi,
File/New…/Microsoft Access/Version 7.0 MDB yi seçerek yeni bir veri
tabanı oluşturalım.Personel.mdb adı ile kaydetsin.

Database Window da bulunan "Properties" in üstüne sağ tuşla
tıklayıp, "New_Table" i seçin.İsim olarak birşeyler yazın işte. Ben
nedense hep "personel" yazarım. Bu seferlik siz de öyle 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 göre seçin. Mesela biz şimdi isim, soyisim ve
telefon numaralarını saklayabileceğimiz bir veritabanı yapalım.  

Bunun için ilk olarak "Add Field" tuşuna basın.İsim olarak "ad"
yazıp enter tuşuna basın. Böylece "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 bölümde oluşturduğunuz
alanları gördünüz mü?"Build Table" tuşuna basın. Ve TaTa! Artık sizin
de bir veri tabanınız oldu. Veri tabanı deyip geçmeyin. Buna sahip
olamayanlar da var. Neyse cıvımayayım…

Yine ilk ekrana döndük. Ama bir farkla: "Database window" da artık
propertiesin altında personel de var. Şimdi personel’e sağ tuşla basıp,
"Open" ı seçin.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 kaç tane daha yapın. Zararı olmaz,
hem de pratik yapmış olursunuz.

Pekâla şimdi Visual Data Manager dan çıkıp bizim eski dost VB ye
geri dönelim.Formun üstüne tetxbox,label ve DataObject yerleştirip
şekildeki gibi yapın bakalım.

İnşallah pratik yapın dediğimde beni ciddiye alıp bir kaç tane daha
yapmşsınızdır. Yapmadıysanız gidin yapın. Haa visual Data manager’e
girince, önceden yapılmış bir veri tabanı dosyası çağırmak için open
new database seçeneğini kullanacağınızı biliyorsunuz değil mi?  

Şu en altta duran ve üstünde "Data1" yazan şey var ya, işte o bizim
data object. Siz bi tanışa durun ben yemeğin altını yakıp
geleyim(Ciddiyim)… Geldiim. Oo siz baya bir samimi olmuşsunuz. Allah
muhabbetinizi artırsın. ama işimiz var. Şşşt! Olm dataobject geç işinin
başına!!

Tamam. Şimdi özellikler pencerini kullanarak Data1 nesnesinin
"DatabaseName" kısmına gelin. anladığınız gibi; buradan kullanacağımız
veri tabanının yolunu gösteriyoruz. Şo yaptığımız "personel.mdb" yi
gösterin bakiim. Eveet. Daha sonra yine özellikler pencerinde Data1 in
"RecordSource" kısmına tıklayıp "personel" i seçin. Bu sayede veri
tabanımız ile, Data objecti tanıştırmış olduk. Gerisi onlara kalmış.
Biz üstümüze düşeni yaptık. Ama daha bitmedi. Şu yukarıda duran üç tane
textbox okeye dördüncü arıyorlarken bizim data objecti görüyor ve davet
ediyorlar. Şimdi onları da tanıştırmalıyız. Bunun için text1 nesnesini
seçip properties penceresine gidelim. DataSource kısmına tıklayıp Data1
i seçin. Hemen üstteki DataField kısmından da "ad" ı seçin. Ne
yaptığımızı anladınız mı? Artık text1 data1 in bağlı lduğu veri
tabanındaki alanlardan "ad" ile bağlanmış oldu. Şimdi diğer iki TextBox
ı da soyad ve telefon ile bağlayın.

Herşey yolunda gittiyse programı çalıştırın. Text kutuları Hande
Ataizi’ni ile ilgili bilgileri gösteriyor olmalı. Şimdi Data1 deki
düğmelere bir basın bakalım. Gördün mü? değiştiler. Yani başardın! Sen
bir harikasın! Müthişsin!

Kaynak:Acemiler.Net

Bu yazı Programlama içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s