ADO2 X
ADO2 X
SqlCommand
Uygulama ile SQL Server arasında sql komut cümlelerinin, saklı yordam (stored procedure)
isimlerinin, gerekli parametre isimleri ve değerlerinin taşınmasını sağlayan sınıftır. Taşıdığı
sql komut cümlesini ya da çağıracağı saklı yordamın ismini, SQL Server tarafında yürütme ve
çıkan sonuçları ya da etkilenen kayıt sayısını geriye gönderme özelliklerine de sahiptir.
SqlCommand sınıfının en sık kullanılan özellik ve metodları aşağıda kısaca incelenmektedir.
ExecuteNonQuery() Yazılan sql cümlesi ya da SQL Server tarafındaki saklı yordamın (strored
procedure) çalıştırılması ve bu işlem ya da işlemler sonucunda etkilenen
kayıt sayısının geriye alınabilmesini sağlayan metottur.
Ancak burada dikkat edilmesi gereken nokta; geriye sadece tamsayı tipinde
bir değer dönmesidir. Bu nedenle, genellikle veritabanına değer
gönderirken yani, insert, update ve delete işlemleri için kullanılır.
Sonrasında da bu işlemlerden etkilenen kayıt sayısı geriye alınmaktadır.
Böylece örneğin güncellenen satır sayısı elde edilip kullanılabilir.
ExecuteScalar() ExecuteNonQuery metodu gibi, yazılan sql cümleleri veya saklı yordamları
çalıştırmak için kullanılır. Bu metodun farklı olduğu nokta ise; geriye sadece
tek bir object tipinde sonuç dönen sorgular için kullanılmasıdır.
ExecuteReader() Geriye veri ya da veri blokları dönen sql cümleleri veya saklı yordamları
çalıştıran ve bunların sonuçlarının uygulama tarafına alınabilmesini sağlayan
metottur.
Sayfa 1 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
EXECUTENONQUERY
İnsert, update ve delete gibi geriye herhangi bir değer döndürmeyen (kayıt olarak) işlemler
için kullanılır. Bu işlem geriye kaç kaydın etkilendiğini gösteren int türünde değer döndürür.
Örnek: MuşteriId sütunu 3 olan satırın adsoyad sütunu “Fatma Güneş” olarak güncellensin.
Imports [Link]
Sayfa 2 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
End If
End Sub
End Class
EXECUTESCALAR()
Tek alanlı değer döndüren sorgular için tercih edilir. Geriye object türünde değer döndürür.
Örneğin grupsal fonksiyonların sonuçları için bu yordam tercih edilebilir.
Imports [Link]
End Sub
End Class
EXECUTEXMLREADER
Veritabanı sunucusundan çekilmiş XML formatındaki içeriği [Link] sınıfı
türündeki bir değişkene aktarır. XmlReader sınıfı XML formatındaki veriyi ileri yönlü hızlı
bir şekilde okumak için kullanılır. SQL sunucu tarafında veriyi XML formatında döndürmek
için “FOR XML” ifadesi kullanılır.
Örnek:
Sayfa 3 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)
End Sub
End Class
For each döngüsü yerine for next döngüsünü kullanmak istersek aşağıdaki kodları yazabiliriz.
Sayfa 4 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
For i As Integer = 0 To 2
odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next
Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)
odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next
End Sub
End Class
DbDataReader Nesnesi
DataReader herhangi bir anda sadece bir satırlık kayda erişim imkanı veren, yalnızca
okunabilir (read only) ve yalnızda ileri yönlü (forward only) erişimi destekleyen bir yapı
Sayfa 5 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
sunar. Bu özellikleri ile sadece okuma ve listeleme amaçlı küçük veri setleri üzerinde
kullanılması tavsiye edilmektedir. Veriler serverin belleğinde tutulur. Bu nedenle büyük veri
kümeleri üzerinde DataReader ile çalışmak performans açısından olumsuz sonuç doğurur
DataReader ile bilgileri okurken veritabanı bağlantımızın sürekli açık kalır. DataReader ile
işimiz bittiğinde derhal DataReader i ve Connection'ı kapatmalıyız.
Aşağıda DataReader ile veritabanından veri okuma ile ilgili şekil durumu özetlemektedir.
Sorgu, yürütüldüğü zaman veri kaynağı tarafındaki ilk satır DataReader nesnesine gönderilir.
Bu arada sonraki kaydın okunması ve taşınması amacıyla bağlantı açık kalır. DataReader
nesnesini döngüye sokarak, her defasında bir adım ilerlemesini sağlarız.
DataReader nesnesi veritabanı türlerine göre hazırlanmış isim uzaylarında bulunur. En çok
kullanılan DataReader türleri şunlardır.
[Link]
[Link]
[Link]
[Link]
DataReader içindeki kayıtları okumak için, Get ile başlayan sütun seçici yordamlar
kullanılabildiği gibi, sütun indisi veya adı kullanılabilir.
Veritabanındaki bir sonraki kaydı DataReader nesnesine aktarmak için nesnenin Read
yordamı kullanılır. Bu yordam false değer döndürürse okunacak kaydın olmadığı anlamına
gelir. DataReader kayıtlarını listelemek için bu yordam aracılığıyla döngü kurulur. Yordam
True değerini döndürdüğü sürece döngüye girilir.
Sayfa 6 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
örnek
Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)
While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()
[Link]()
End Sub
End Class
Sayfa 7 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]
Public Class Form1
While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()
[Link]()
End Sub
End Sub
End Class
Sayfa 8 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Birçok uygulama bazı bilgileri geçici olarak tutup, daha sonra o bilgileri kullanarak işlemler
yapar. Ancak bu bilgiler sadece uygulama çalıştığı sürece erişilebilir durumdadır. Çünkü;
bellek, uygulama çalışırken bilgileri geçici olarak tutmak için kullanılır. Bu şekilde çalışan
uygulamalara hesap makinası örnek olarak verilebilir. Yani kullanıcıdan birkaç veri alıp
bunları hemen işleyen ve bu bilgilerin daha sonra kullanılması gerekmediği için geçici olarak
tutulmasında sakınca olmayan uygulamalardır.
Ancak her uygulama bu şekilde geliştirilemez. Çünkü alınan bilgilere uygulama kapatıldıktan
sonra da erişilmesi gerekebilir. Bu durumda bilgileri bellek dışında, veriyi kalıcı olarak
tutabilecek bir ortama, örneğin; disklere kaydetmek gerekecektir. İşte bu ihtiyacı karşılamak
için farklı yöntemler geliştirilmiş ve günümüzde çok büyük miktarlarda veri tutan sistemler
tasarlanmıştır.
Kısaca bu gelişime bakacak olursak; ilk olarak, günümüzde de halen çok sık kullanılan veri
tutulabilecek belki de en basit yapısal olmayan sistemin “text dosya” olduğu söylenebilir.
Ancak, bu yapılar da zamanla yetersiz kalmış ve yapısal fakat hiyerarşik olmayan çözümler
geliştirilmiştir. Comma Separated Value (CSV) dosyalar bunlara örnek olarak verilebilir.
Zamanla, sadece veriyi tutmuş olmak da yetersiz kalmış ve verileri hiyerarşik bir yapıda
tutma gereksinimi doğmuştur. Bu yapıya da verilecek en güzel örnek XML teknolojisidir. Bu
yapının da yetersiz kaldığı durumlar için ilişkisel (Relational) veri depolama sistemleri
geliştirilmiştir.
Günümüzde büyük miktarlardaki verileri depolamak için ve bunları yönetmek için çeşitli
firmaların geliştirmiş olduğu uygulamalar vardır. Bu uygulamalara örnek olarak Microsoft
SQL Server, Oracle, MySQL (MariaDB) ve Microsoft Access verilebilir.
Veri içeren herhangi bir dosya bir veri kaynağı olarak kabul edilir. Bir veri kaynağı (bazen bir
veri dosyası olarak adlandırılır), verinin alındığı yer. Kaynak, herhangi bir dosya formatındaki
her türlü veri olabilir.
Microsoft ve diğer kuruluşların geliştirdiği bu teknoloji ile birçok veri kaynağına bağlanarak,
veri alışverişi yapılabilmektedir. ODBC uygulama ortamlarına bir API (Application
Programming Interface ) sunmakta ve uygulamaların farklı sistemlere bağlanılabilmesini
Sayfa 1 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
DAO, ODBC’nin alt seviye diller için (C,C++) geliştirilmiş olması ve kullanımının zor
olması nedeniyle, Microsoft tarafından Visual Basic 3 ile geliştirilmiş ve kullanımı çok kolay
bir teknolojidir. Microsoft’un, Microsoft Access veritabanlarına erişim standardı olan Jet için
geliştirdiği bu model, halen VB6’dan MS Access’e erişim için en hızlı yöntemdir.
ODBC’de olduğu gibi driver (sürücü) mantığıyla çalışan OLE DB, arka tarafta COM
arayüzünü kullanan bir tekniktir. Kaydettiği gelişme ile birçok sisteme bağlantı için
kullanılabilmektedir. Bu başarısından dolayı da [Link] içerisinde önemli bir yeri vardır.
ADO aslında arka planda OLE DB teknolojisini kullanan ve veriye erişimi daha da
kolaylaştıran, yüksek seviye programlama dilleri için veri erişiminde tercih edilen bir
teknolojidir. ADO, [Link]’e temel oluşturduğu söylenen bir teknoloji olmasına rağmen bu
tam olarak doğru değildir. Bunun en büyük nedenlerinden birisi de ADO’nun COM desteğine
gereksinim duymasıdır. Günümüzde bazı platformlarda halen kullanılan bu teknoloji, XML
standardına destek vermek için eklentilerle güçlendirilmesine rağmen, XML formatındaki
veriyi sadece taşıyabilmektedir. Aksine, [Link], XML standardı üzerine kurulmuş ve
veriyi taşırken de XML formatını kulllanan bir teknoloji olarak geliştirilmiştir.
[Link]
[Link], veri kaynağındaki (Veritabanı, metin, XML Dosyaları vb.) verilere erişmek veya
bu verileri değiştirmek için geliştirilmiş bir veri erişim teknolojisidir. [Link] teknolojisi
ile Access, MSSQL ve Oracle gibi farklı veritabanlarına erişmek ve bu veritabanları üzerinde
okuma, yazma, güncelleme ve silme gibi işlemler kolaylıkla gerçekleştirilebilmektedir.
Ayrıca veri kaynağına sunmuş olduğu farklı erişim yöntemleri ile performans, güvenlik ve
güncel veri gibi kriterlere göre programcının ihtiyaca göre farklı alternatifler kullanmasına
olanak tanır. Örneğin kaynakların sınırlı olduğu mobil uygulamalarda masaüstü
uygulamalarına göre veri kaynağına erişim için farklı yöntemler kullanır.
[Link], Microsoft’un .NET platformunda çok önemli bir yere sahip, .NET
uygulamalarından, her türlü veri kaynağına erişim için gerekli hazır tipleri olan, COM desteği
gerektirmeyen, XML standardı üzerine kurulmuş ve en önemlisi de .NET Framework’ün
imkanlarını kullanabilen, ADO’nun gelişmiş bir versiyonu olmaktan çok, yeni bir teknoloji
olarak karşımıza çıkmaktadır.
Sayfa 2 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
[Link], .NET Framework’ ün bir parçası olarak 1.0’dan itibaren, .NET’in tüm
versiyonlarında yer almaktadır. Ayrıca veri işlemlerini çok kolaylaştıran ve nesneye yönelik
programlama (Object Oriented Programming) modeline uygun yapısı nedeniyle son derece
kullanışlı bir platformdur.
[Link] modelinin diğer veri erişim modellerine göre üstünlüklerini şöyle sıralayabiliriz:
Sayfa 3 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
[Link] Mimarisi
[Link], .NET platformunda çok önemli bir noktada yer almaktadır. Bunu aşağıdaki
şekilde görebilmekteyiz.
Sayfa 4 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Not: .NET veri sağlayıcı sınıfları, farklı türdeki veritabanlarına bağlanmak için kullanılır. Bu
sınıflar sayesinde istenilen türdeki veri kaynağına kolayca bağlantı kurulabilir, veri çekilebilir
ve gerekli güncelleme işlemleri yapılabilir.
Not: Hangi veri kaynağı kullanılacaksa, sadece ona uygun veri sağlayıcı sınıfı kullanılmalıdır.
Not: ODBC .NET veri sağlayıcıları, diğer veri sağlayıcılarından farklı olarak, veri kaynağına
bağlanırken hiçbir ara katman kullanmaz. Bunun yerine, bağlantı için ODBC API’leri
kullanır.
[Link]
[Link] ile uygulama geliştirirken kullanılabilecek, tüm veri sağlayıcılar için ortak olan
bileşenlerin bulunduğu isim alanıdır. Mesela burada; çok güçlü ve çok da kullanışlı olan
DataSet, DataTable gibi tipler vardır.
[Link]
SQL Server ile çalışabilmek için yazılmış tiplerin yer aldığı bu isim alanı, SQL Server 7.0 ve
sonraki versiyonları ile birlikte kullanılabilmektedir.
[Link]
SQL Server 6.5 ve önceki sürümleri, Microsoft Access, Oracle, Text Dosyalar, Excel
Dosyaları vb. gibi, OleDb arayüzü sağlayan tüm sistemlere bağlantı kurmak için gerekli olan
tipleri barındırmaktadır. Ayrıca SQL Server’ın 6.5 sonrası versiyonları için de
kullanılabilmektedir.
[Link]
[Link]
Oracle .NET Framework Veri Sağlayıcısı, Oracle Client yazılımı tarafından sağlanan Oracle
Çağrı Arabirimi(OCI) kullanarak bir Oracle veritabanına erişim sağlar. Veri sağlayıcısının
işlevselliği, SQL Server, OLE DB ve ODBC için .NET Framework veri sağlayıcılarının
işlevselliğine benzer şekilde tasarlanmıştır.’
Yapılacak örnekler ve değinilecek konular Sql Server .NET Data Provider üzerinden
işlenecektir.
isimleri “Sql” ön eki ile, OLE DB .NET veri sağlayıcılarının sınıf isimleri ise “OleDb” ön eki
ile başlar. Bu genellemeye “SqlConnection” ve “OleDbConnection” örnekleri verilebilir.
Sql Server .NET Data Provider bileşenlerini incelemeden önce, herhangi bir veri kaynağı ile
uygulamalar arasında veri taşıyabilmek için neler yapılması gerektiğini, provider’lardan
bağımsız olarak incelemek, genel olarak [Link] mimarisine yukarıdan bakabilmek
anlamına gelmektedir. Öncelikle en az bir adet veri kaynağı olması gerekmektedir. Burada
veri kaynağı olarak Sql Server, Oracle, DB2, Interbase, Paradox, XML, Excel, Dbase, Access,
CSV , Text vb... kullanılabilir.
Veri kaynağı ile uygulamalar farklı makinalarda olabileceği gibi, aynı makina üzerinde de
olabilirler, ancak nerede olurlarsa olsunlar, sonuçta iki farklı platformdan bahsedildiği için;
uygulama ile veri kaynağını konuşturabilmek ve onları iletişime hazırlamak gerekecektir. İşte
bu noktada, veri kaynağı ile uygulamaları konuşturacak olan, hangi makinadaki, hangi veri
kaynağına hangi güvenlik ayarlarıyla gidilmesi gerektiği bilgilerini taşıyan bağlantı
(Connection) nesnesine ihtiyaç duyulacaktır.
Veri kaynağı ile bağlantının kurulmuş olması, veri taşımak için yeterli olmayacaktır. Bir veri
kaynağına veri göndermek için ya da oradan veri almak için bazı komutlara (Sql Cümleleri,
Stored Procedure (Saklı yordam) isimleri) ve hatta bu komutlarla birlikte taşınması gereken
parametrelere ihtiyaç olacaktır. [Link] platformunda bu işlemleri yapabilmeyi sağlayan
Sayfa 6 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
ve belli bir bağlantı üzerinden ilgili veri kaynağına müdahale edebilen, oraya veri gönderme
veya oradan veri alma isteğini sistemler arasında taşıyan Command adı verilen bir bileşen yer
almaktadır.
Datareader
Command adı verilen bileşen aracılığıyla, uygulama tarafından veri kaynağına veri
gönderebilir. Bunun sonucunda herhangi bir işlem yapılmasına gerek yoktur. Ancak
kullanılan sql cümlesi veri getirecek şekilde yazılmışsa, gelecek olan veriyi uygulama
tarafında kullanabilmek için de bazı bileşenlere ihtiyaç olacaktır. Bu bileşenlerden bir tanesi,
yine provider’a göre değişen özelliklere sahip, verinin uygulamaya ileri yönlü ve sadece
okunabilir olacak şekilde aktarılmasına imkan veren DataReader adındaki bileşendir.
Yukarıda genel olarak bahsedilen bu bileşenlerin Sql Server .NET Data Provider isim
alanındaki karşılıkları aşağıda belirtilmiştir.
• Connection
• Command
• DataReader
• DataAdapter
Sayfa 7 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
isimleri “Sql” ön eki ile, OLE DB .NET veri sağlayıcılarının sınıf isimleri ise “OleDb” ön eki
ile başlar. Bu genellemeye “SqlConnection” ve “OleDbConnection” örnekleri verilebilir.
[Link] teknolojisi, veri işlemek için iki yöntem(model) sunar. Bu yöntemler bağlantılı
(connected) erişim ve bağlantısız (disconnected) erişim olarak adlandırılmaktadır. Bağlantılı
erişimde uygulama, veritabanına veri işlemleri gerçekleştiği sürece bağlı kalır. Bağlantısız
erişimde ise uygulama, veri kaynağı sadece veri alış verişi yapılırken açılır ve işlem bittikten
sonra kapatılır. Bağlantısız veri erişiminde veri kaynağından alınan veriler bellekte belirli bir
süre ve belirli işlemlere tabi olarak tutulabilir. Böylece sürekli veri tabanına bağlanmaya
gerek kalmaz.
Sayfa 8 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Sayfa 9 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Tek bir sunucu üzerine birden fazla SQL Server yükleyebilirsiniz. Bu yüklü olan SQL
Server’ların her biri “Instance” (örnek) olarak isimlendirilir.
SqlConnection
Bu sınıfı kullanarak, bağlantı kurulmak istenen SQL Server örneğini, kullanılmak istenen
veritabanını, ve bağlantı için gerekli olan güvenlik ayarlarını belirttikten sonra, bağlantı açılıp
veritabanı kullanılabilir. Daha sonra diğer tipler devreye girer ve veri taşıma işlemleri
başlatılabilir. Ancak unutulmaması gereken çok önemli nokta; açılan bağlantının işlemler
bittikten sonra tekrar kapatılmasının gerekliliğidir. Eğer açılan bağlantılar kapatılmazsa, bir
süre sonra SQL Server’ın kaynaklarının gereksiz yere harcanmasından dolayı sorunlar
yaşanabilir.
SqlConnection sınıfı ile çalışırken dikkat edilmesi gereken belki de en önemli nokta bağlantı
cümlesidir. Çünkü SQL Server’a bağlantı kurulurken, belli yetkilere sahip, belli rolleri olan
kullanıcılar adına bağlantı kurulması gerekmektedir. Bu nedenle kısaca SQL Server’ın
güvenlik modellerinden bahsetmekte yarar vardır.
Kimlik doğrulama, bir kullanıcının veya programın bir sisteme erişirken kim olduğunu
kanıtlama işlemidir. Kimlik doğrulama teknolojisi, bir kullanıcının kimlik bilgilerinin yetkili
kullanıcıların veri tabanında veya bir veri doğrulama sunucusundaki kimlik bilgileriyle eşleşip
eşleşmediğini kontrol ederek sistemler için erişim kontrolü sağlar.
Temel olarak SQL Server’da aşağıdaki iki kimlik doğrulama türü vardır:
Windows Authentication
SQL Server Authentication
1. Windows Authentication : SQL Server’a erişmek için geçerli bir Windows kullanıcısı
gerekmektedir.
2. SQL Server Authentication : SQL Server’a erişmek için geçerli olan bir SQL Server
user bilgisi gerekmektedir.
Not: Kimlik doğrulaması olarak Windows Authentication kullanılırsa, sadece erişim izni
bulunan windows kullanıcısı ile erişim sağlayabilirsiniz. Herhangi bir SQL Kullanıcı ile
sisteme erişemeyeceksiniz.
Sayfa 10 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Sayfa 11 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Sql server management ise Microsoft geliştirdiği bir database editörüdür. Bu editör
yardımıyla T-SQL komutlarını kullanarak datalarımız üzerinde birçok farklı işlemler
yapabiliriz.
Bu programlar aracılığı ile MSSQL tipinde bir veritabanı oluşturur, veritabanını tasarlar,
gerekli ayarları yaparsınız. Yani kısacası veritabanı tasarımı yaparsınız.
Sayfa 12 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Sayfa 13 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
[Link] gibi .NET Framework kullanan dillerde veri tabanlarına ulaşmak için, .NET
Framework kütüphaneleri arasında bulunan [Link] (ActiveX Data Objects) kütüphanesi
kullanıldığını daha önce söylemiştik.
Visual Studio ile birlikte SQL Server yazılımının Express sürümü birlikte gelir. Bu nedenle
yeni bir SQL Server kurmamıza gerek kalmaz. Management studio programını kullanmadan
Visual Studio içerisinden Sql Server Object Explorer ile SQL Server’a ulaşabiliriz, veritabanı
oluşturabiliriz. Bu veritabanını düzenleyebiliriz.
Görünüm (View ) menüsünden Sql Server Object Explorer komutu ile veri tabanı işlemleri
yapacağımız Sql Server Object Explorer penceresi açılır.
Sayfa 14 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Databases seçeneğine sağ tıkladığımızda yukarıdaki menü açılır. Buradan Add New Database
komutu ile yeni bir veritabanı oluşturabiliriz. Bu durumda aşağıdaki Create Database
penceresi açılır ve burada oluşturmak istediğimiz veritabanı ismi girilir. Biz deneme1 ismini
girelim. İstersek oluşturmak istediğimiz veritabanının bulunacağı klasörüde bu pencereden
değiştirebiliriz.
Aşağıdaki şekilde görüldüğü gibi deneme1 adlı veritabanı oluşturulmuş durumda. Şimdi
musteri adlı tabloyu oluşturalım.
Sayfa 15 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Tablo oluşturmak için aşağıda şekilde de gösterilen Tables seçeneğine sağ tıklanır. Açılan
pencereden Add New Tables komutuna tıklanır.
Sayfa 16 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Aşağıda şekli de verilen açılan sekmede tablo adı verilir ve alanlar oluşturulur.
Sayfa 17 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Sayfa 18 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
MusteriId alanı özellikler penceresinden otomatik artması sağlanır (Auto İncrement). Bunu
sağlamak için Identity Specification kısmı ayarlanır.
Daha sonra iki yukarıda ki şekilde de gösterilen Update düğmesine tıklanır. Aşağıda
gösterilen pencere açılır. Burada Update Database düğmesine tıklanarak musteri tablosu
oluşturulur.
Sayfa 19 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
SQL Sever Object Explorer penceresinde deneme1 adlı veritabanında Tables sekmesi
genişletildiğinde müşteri tablosu da artık görünür.
Müsteri tablosuna sağ tıklatıp açılan menüden View Data komutunu tıklatırsak alanlara
verileri girebileceğimiz sekme açılır.
Sayfa 20 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Bu pencerede MusteriId alanı otomatik artacağı için, bu alana veri giremeyiz. Şimdi birkaç
kayıt oluşturalım.
Sayfa 21 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
(Solution Explorer - Çözüm Gezgini) Proje Üzerinde) mouse sağ click -> Nuget Paketlerini
Yönet->
Gözat sekmesini seçin ve [Link] paketini aratın ve eksik paketi yükleyin.
Örnek
Sayfa 22 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]
[Link]()
[Link] = "bağlantı durumu(3): " & [Link]()
End Sub
End Class
Örnek Uygulama
Bu örnekte, SQL Server’a bağlantı kurup, bu bağlantıyı açarak, veritabanını kullanıma hazır
hale getireceğiz. SqlConnection nesne örneğinin Open() metodu çağırıldıktan sonra, 5 saniye
boyunca ilgili bağlantı açık tutulmakta ve sonrasında bağlantı kapatılmakta ve bu 5 saniyede
bir tekrarlamaktadır.
Bağlantıyı kesmekteki amaç sistem kaynakları gereksiz yere tüketmemektir. Burada genel bir
kuralı belirtmekte fayda var: Çoğunlukla söz konusu veri kaynaklarına olan bağlantılar
mümkün olduğunca geç açılmalı ve işlemleri takiben mümkün olduğunca erken
kapatılmalıdır.
Sayfa 23 / 24
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]
a = Not a
[Link] = a
If a = True Then
[Link]()
[Link] = "bağlantı durumu(1): " & [Link]()
Else
[Link]()
[Link] = "bağlantı durumu(6): " & [Link]()
End If
End Sub
End Class
Sayfa 24 / 24
KONTROLLER - II
Açılır kutu bir liste biçiminde verileri tutan ve tıklandığında açılarak içerdiği tüm verileri
listeleyen kutudur. Sadece tıklandığı zaman açıldığı için form üzerinde yerden tasarruf
yapılmasını sağlar. Bu yüzden form üzerinde veri bulundurmak gerektiği zamanlarda sıklıkla
kullanılır.
ÖZELLİKLER
Backcolor:
Cursor:
Dock:
Enabled:
Font:
Forecolor:
Locations:
Locked:
Maximumsize:
Maxlength:
Minimumsize:
Size:
Visible:
End Sub
1 Simple: Açılır kutunun bu türünde kutu yanında ok bulunmaz. Açılır kutudan çok bir
liste kutusu görünümündedir.
Sayfa 1 / 11
KONTROLLER - II
İtems: Açılır metin kutularında gösterilecek öğeleri belirlemek için kullanılır. Özelliğin
yanındaki düğme tıklandığında öğelerin hazırlanacağı koleksiyon editörü açılır. Her öğe bir
satıra gelecek şekilde öğe elemanları yazılmalıdır.
MsgBox([Link](2))
End Sub
Sorted: Açılır liste kutusundaki öğelerin alfabetik olarak sıralı gösterilmesini sağlar.
Private Sub Button6_Click(sender As [Link], e As
[Link]) Handles [Link]
[Link] = True
End Sub
Selectedindex: Açılır metin kutusundaki öğelerin her birinin bir indeks numarası vardır. İlk
öğenin indeks numarası sıfırdır. Aktif (seçili) öğenin indeks numarası bu özellik ile öğrenilir.
Eğer hiçbir öğe seçili değilse özelliğin değeri -1 olur.
Selectedtext: Açılır metin kutusundaki seçili metni belirtir. (combobox odağını kaybettiğinde
boş string dönderir)
Sayfa 2 / 11
KONTROLLER - II
Text: Combobox’ın metin alanına yazılacak metni veya açılır kutudan seçilen metni belirler.
End Class
Sayfa 3 / 11
KONTROLLER - II
OLAYLAR
Dropdown: Açılan kısmı göstermek için ok işaretine tıklandığı anda (liste gösterilmeden
hemen önce) meydana gelir.
Dropdownclosed: Açılır metin kutusunun listesi kapandıktan hemen sonra meydana gelir.
METOTLAR
Add Metodu: Bu metod açılır kutuya eleman yerleştirmek için kullanılır. Eleman yerleştirme
işlemi tasarım zamanında (design time) veya çalıştırma zamanında (run time) düzenlenebilir.
Tasarım zamanında kutuya eklenen elemanlar uygulama çalıştırıldığında otomatik olarak yer
alacaktır. Ancak kullanıcının da açılır kutuya eleman ekleyebilmesi çalışma zamanında Add
Metodu ile olur.
[Link](“Ortaöğretim”)
[Link](“Lise”)
[Link](“Lisans Eğitimi”)
[Link](degisken)
[Link]([Link])
Removeat Metodu: Removeat metodu açılır kutu içerisindeki bir elemanın kutudan
silinmesini sağlar. Silme işlemleri kutu içindeki elemanın index değerine göre yapılır.
Örneğin;
Combobox1. İ[Link](2)
Dizilimi kutu içindeki 2 index değerine sahip (baştan üçüncü) elemanı siler.
Sayfa 4 / 11
KONTROLLER - II
Remove Metodu:açılır kutu içerisindeki bir elemanın kutudan silinmesini sağlar. Silme
işlemleri kutu içindeki elemanın ismine göre yapılır. Örneğin;
[Link](“Ankara”)
Findstring: Belirtilen metni liste kutusu içerisinde arar ve bulduğu ilk öğenin dizin
numarasını verir.
End Sub
Findstringexact: Belirtilen metni liste kutusu içerisinde arar ve tam olarak eşleşen öğenin
dizin numarasını verir.
Sayfa 5 / 11
KONTROLLER - II
Ör: Butona tıklanınca combo1’den seçilen elemanı text1’e yazan bir program yazın
Ör: combo1’den seçilen elemanı direkt (hiçbir butona tıklamadan, seçilir seçilmez) textbox1’e
yazan bir program yazın
Ör: ekle isimli butona tıklanıncaText1’e yazılan eleman combo1 eklensin, Tümünü sil isimli
butona tıklanınca da combo1 deki tüm elemanlar silinsin
Sayfa 6 / 11
KONTROLLER - II
Ör: Sil isimli butona tıklanınca Liste numarası Textbox1’e yazılmış olan eleman silinsin.
Sil isimli butona tıklanınca adı Textbox1’e yazılmış olan eleman silinsin.
Sayfa 7 / 11
KONTROLLER - II
Ör: command1 butonuna tıklanınca combo1 deki aktif elemanın index değeri text2 ye yazılsın
Ör:
Sayfa 8 / 11
KONTROLLER - II
selectedString = [Link]()
End Sub
End Class
TİMER
ÖZELLİKLER
Sayfa 9 / 11
KONTROLLER - II
Interval Integer Sayacın hangi zaman aralığında bir çalışması gerektiğini belirler. Milisaniye
cinsindedir.
OLAY
METOTLAR
saat = 0
dakika = 0
saniye = 0
salise = 0
[Link] = CStr(salise)
[Link] = CStr(saniye)
Sayfa 10 / 11
KONTROLLER - II
[Link] = CStr(dakika)
[Link] = CStr(saat)
[Link] = False
End Sub
End Sub
End Sub
If saniye = 60 Then
saniye = 0
dakika = dakika + 1
End If
If dakika = 60 Then
dakika = 0
saat = saat + 1
End If
[Link] = CStr(salise)
[Link] = CStr(saniye)
[Link] = CStr(dakika)
[Link] = CStr(saat)
End Sub
End Class
Sayfa 11 / 11
MENÜLER VE ARAÇ ÇUBUKLARI
Bir menü, menü çubuğunda yer alır ve ilişkili bir komutlar listesi içerir. Bir araç çubuğu
programda yararlı işler yapan düğmeler ve başka araçlar içerir. Araç çubuğu düğmelerinin ve
menü komutlarının çoğu tıklandıktan sonra hemen çalışır. Bir menü komutunun yanında üç
nokta (…) varsa, komutu tıklamak komut çalıştırılmadan önce daha çok bilgi isteyen bir
iletişim kutusu görüntüler
Menü Strip denetimi, programınıza menüler eklemenizi sağlayan bir araçtır. Menü Strip ile
yeni menüler ekleyebilir, var olan menüleri değiştirebilir ve yeniden düzenleyebilir, eski
menüleri silebilirsiniz.
Ör:
Toolbox’ın Menus and Toolbars sekmesindeki Menü Strip denetimini tıklayın. Menü nesnesi
form üzerinde değil bileşen tepsisi (component tray) adı verilen ayrı bir bölmede görünür.
(program çalıştığında görünmeyen nesneler bu bölmede görüntülenir.)
Bileşen tepsisindeki menü nesnesine ek olarak, oluşturduğunuz menünün görsel bir sunumu
formun üst kısmında görüntüler. Type Here etiketini tıklayıp menü başlığını hemen
girebilirsiniz. İlk menü başlığını girdikten sonra, ok tuşlarına basıp adlarını yazarak alt menü
başlıklarını ve diğer menülerin adlarını girebilirsiniz.
Sayfa 1 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
End Sub
End Sub
End Sub
End Class
VEYA
Sayfa 2 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
Sistem saatinden zamana ait değerleri almk için çeşitli özellik ve işlevler kullanabilirsiniz. Bu
değerleri programınızda özel takvim, saat ve alarm oluşturmak için kullanabilirsiniz.
Now Bu özellik, geçerli tarih ve saati temsil eden kodlanmış bir değer
verir.
Month (tarih) Bu işlev, ayı temsil eden bir tamsayı getirir. (1 ve 12 arasında)
Weekday (tarih) Bu işlev, haftanın gününü temsil eden bir tamsayı getirir. (1
Pazar, 2 pazartesi, v.b.)
Kısayol tuşları (Shortcut keys) kullanıcının bir komutu menü çubuğunu kullanmadan
çalıştırmak için basabileceği. Tuş bileşimleridir. Örneğin Microsoft Word gibi uygulamalarda
ctrl + c kısayol tuşu seçili metni panoya kopyalar. MenuStript denetiminin shortcutKeys
özelliği ile kısayol tuşları atayabilirsiniz.
Örneğin clock menüsünün Time komutuna ctrl + T, Date komutuna da ctrl + D kısayol
tuşlarını atayalım.
Not: VB, kullanıcılara hangi tuşlara basılacağını belirtmek için programı çalıştırdığınızda
normal olarakkısayol tuş bileşimini menüde görüntüler. Yeterli yeriniz yoksa, kısayol tuş
bileşimlerini gizlemek için ShowShortcutKeys özelliğini false olarak ayarlayabilirsiniz.
Kısayol tuşları yine çalışacak, ancak kullanıcıya görsel bir anımsatma yapmayacaktır.
Programda kısayol tuşu olarak görüntülenecek metni ShortcutKeyDisplayString özelliği ile
ayarlayabilirsiniz.
Sayfa 3 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
TOOLSTRIP DENETİMİ
2. Yeni araç çubuğunun sağ üst köşesindeki küçük kısayol okunu tıklayın. Bu kısayol
oku akıllı etiket olarak adlandırılır. Oku tıkladığınızda, en sık kullanılan araç çubuğu
görevlerini ve özelliklerini içeren ToolStrips Tasks penceresi açılır. Bu komutlarla
araç çubuğunu hızla yapılandırabilirsiniz.
3. İnsert standard items’i tıklayın. Bu komut araç çubuğuna New (Yeni), Open (aç), Save
(Kaydet), Print (Yazdır), Cut (Kes), Copy (Kopyala), Paste (Yapıştır) ve Help
(Yardım) standart araç çubuğu düğmelerini ekler. (Tek tek düğme ekleyebilirsiniz.
Buradaki gibi otomatik olarak eklemek zorunda değilsiniz.)
7. Renk düğmesini farenin sağ tuşuyla tıklayın, sonra da Set Image komutunu tıklayın.
VB sürükle bırak yöntemiyle araç çubuğu düğmelerinin yerlerini değiştirmenize olanak verir.
Farenin sağ düğmesiyle istediğiniz düğme üzerine tıklayıp, buradan da delete’i seçerek
istediğiniz düğmeyi silebilirsiniz.
Açılır düğmenin temel özelliği, bir menü ile donatılmış olmasıdır. Menüyü görsel olarak
oluşturmak için, düğmeyi ekledikten sonra Buraya Yazın etiketli bir metin kutusu görüntüler.
Alternatif olarak, araç çubuğundaki açılır düğmeyi tıklayın. Özellikler penceresinde
DropDownItems öğesine tıklayın, ardından Öğeler Koleksiyonu Düzenleyicisini açmak için
gözat düğmesine tıklayın.
Sayfa 4 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
Açılır düğmenin menü öğeleri, daha önce gördüğümüz menü öğeleri gibi davranır. Buna
dayanarak, düğmenin öğelerini menü öğeleri için incelediğimiz şekilde yapılandırabilirsiniz.
Ayırıcı, bir araç çubuğunda bölümler veya öğe grupları oluşturmak için kullanılan dikey bir
çubuktur. Ayırıcının nereye konulacağına dair kesin bir kural yoktur. Sadece deneyiminiz ve
ihtiyaçlarınız size rehberlik edecek.
Kullanıcı bir açılır düğmeyi tıkladığında, menüsü otomatik olarak görüntülenir. Alternatif
olarak, solda normal bir düğme ve sağda bir menü gösteren bir çubukla bölünmüş bir düğme
oluşturabilirsiniz. Bunu desteklemek için .NET Framework, ToolStripSplitButton sınıfını
sağlar. Bu sınıf, bölme düğmesi adlı bir denetimle temsil edilir.
Split buttonda sadece oka tıklandığında menü açılır. Dropdown buttonda ise butona da
tıklayabilirsiniz.
Combobox
Kullanıcının bir öğe seçebileceği bir liste sağlamak için bir araç çubuğuna birleşik giriş
kutusu ekleyebilirsiniz. Birleşik giriş kutusu ToolStripComboBox sınıfı tarafından işlenir. Bir
araç çubuğuna görsel olarak birleşik giriş kutusu eklemek için aşağıdaki eylemlerden birini
gerçekleştirin:
Label
[Link]("[Link]",
[Link]())
Textbox
Metin kutusu oluşturarak kullanıcının metin kutusuna değer girmesini sağlayabilirsiniz. Veya
kullanıcıya bir değer gösterebilirsiniz.
Sayfa 5 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
Bağlam menü eklemek için diğer menüde olduğu gibi önce toolbar’dan ekleriz. Varsayılan adı
contextmenu1’dir. İstersek her nesne için ayrı ayrı ekleyebiliriz. Bunlardan birini seçtiğimizde
menü elemanlarını yazacağımız metin kutuları ekrana gelir ve menülerin adlarını yazarız.
Menü adlarına çift tıkladığımızda olay yordamı açılır ve kodlarımızı buraya yazarız.
Örnek
Form üzerine iki metin kutusu ekleyiniz. Aşağıdaki kodları yazınız. TextBox1 adlı metin
kutusuna yazılar girip bir kısmını seçiniz. Daha sonra farenin sağ tuşuna tıklayıp işlemlerinizi
yapınız.
Örnek:
End Sub
Sayfa 6 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
Return ort
End Function
Function ortalama(ByVal v1 As Byte, ByVal f As Byte) As Byte
Dim ort As Byte
Return ort
End Function
final = CInt([Link])
End If
MsgBox("Başarı notu= " & bn)
MsgBox(ortalama(50, 70, 60))
MsgBox(ortalama(50, 60))
End Sub
Sayfa 7 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
End Sub
End Sub
Sayfa 8 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
End Sub
End Class
Örnek:
[Link] = [Link]
End If
End If
If MouseIsOverControl(Button2) Then
If [Link]() = [Link] Then
[Link] = [Link]
End If
End If
If MouseIsOverControl(Button3) Then
If [Link]() = [Link] Then
[Link] = [Link]
End If
End If
End Sub
[Link] = [Link]
End If
End If
If MouseIsOverControl(Button2) Then
If [Link]() = [Link] Then
[Link] = [Link]
End If
End If
If MouseIsOverControl(Button3) Then
If [Link]() = [Link] Then
[Link] = [Link]
End If
End If
End Sub
End Class
Örnek:
Sayfa 9 / 10
MENÜLER VE ARAÇ ÇUBUKLARI
[Link] = [Link]
End If
End If
Next
End Sub
[Link] = [Link]
End If
End If
Next
End Sub
End Class
Sayfa 10 / 10
HATA YAKALAMA
Hata yakalama (exception handling) beklenmedik durumlarda programınızın bir hata mesajı
vermesi ve çalışmayı durdurması yerine, hataya kendi istediğimiz şekilde cevap vermesini
sağlamanın bir yoludur. Yapılandırılmış hata yakalamada Try Catch kullanılır.
Sözdizimi:
Try
Catch
Finally
Örnek;
Bir toplama işleminde sadece sayısal değerler birbiri ile toplanabilir. Kullanıcı sayı yerine
sayı olmayan bir giriş yaptığında veya hiç giriş yapmadığında program hata verecektir.
Sayfa 1 / 5
HATA YAKALAMA
End Sub
End Class
End Try
End Sub
End Class
Sayfa 2 / 5
HATA YAKALAMA
Try
[Link] = CInt([Link]) + CInt([Link])
Catch ex As Exception
MsgBox([Link])
End Try
End Sub
finally bloğundaki kodlar hata olsada olmasada çalışır. Aşağıdaki örnekte yukarıdakinden
farklı olarak “Finally” bloğu da kullanılmıştır. Bu blokta Textbox1 ve Textbox2 metin
kutularının içeriği boşaltılmıştır. Metin kutularının içini boşaltmak için daha önce
gördüğümüz clear( ) metodunu da kullanabilirsiniz.
[Link]()
[Link]()
Örnek
Girdi kutusundan bir veya iki basamaklı pozitif bir tamsayı girildiğinde bu sayıyı yazı olarak
çıktı kutusunda gösteren bir program yazınız.
Sayfa 3 / 5
HATA YAKALAMA
Public Class Form1
End Select
Sayfa 4 / 5
HATA YAKALAMA
Case 8
OnlarYazi = "Seksen"
Case 9
OnlarYazi = "Doksan"
End Select
MsgBox(sayi & "= " & OnlarYazi & " " & birlerYazi)
Else
MsgBox(sayi & "= Sıfır")
End If
End If
Catch ex As Exception
MsgBox("lütfen aralığa dikkat ediniz")
End Try
End Sub
End Class
KAYNAKLAR
Sayfa 5 / 5
İLETİŞİM PENCERELERİ (DIALOGS)
Kullanıcıdan bilgi almak için kullanılabilecek yöntemlerden biri girdi kutusu (inputbox) ile
girdi almaktır. İnputbox ile alınan girdi bir değişkene aktarılarak programda kullanılır.
Soru: İnputbox ile vize ve final notu girilecektir. Başarı notunu hesaplayarak mesaj kutusu ile
görüntüleyen bir program yazınız.
Başarı notunu hesaplatmak için vize notunun %40’ı ile final notunun %60’ını toplatınız.
Sayfa 1 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Msgbox [Link].
Örnek1
Public Class Form1
End Sub
End Class
Örnek 2
[Link] = secim
End Sub
Bu kodun sorunsuz çalışabilmesi için option strict ayarının off olarak ayarlanması gerekir.
Msgbox’a [Link] olarak verilen bilgi diyalog kutusunda mesaj olarak kullanılır. 2.
Parametre olarak kullanılan 51 aslında iki sayının toplamından meydana gelmektedir. Bu iki
sayıdan birincisi mesajdan önce küçük bir üçgen içinde verilen ünlem (!) işaretini temsil
ederken ikincisi diyalog kutusuna konulacak düğmeleri temsil etmektedir. 3. Parametre olarak
verilen bilgi diyalog kutusunun başlığında kullanılır.
Bu diyalog kutusu ekranda iken tıklanan düğmeyi temsil eden sayısal değer secim
değişkenine aktarılır. Diyalog kutusu kapandıktan sonra secim değişkeninin değeri kontrol
edilerek kullanıcının hangi düğmeyi tıkladığı öğrenilebilir ve buna göre işlem yaptırılabilir.
Tıklanan düğmeye göre msgbox’ın geriye gönderdiği bilgiler aşağıda tabloda verilmiştir.
Msgbox ile ekrana getirilen diyalog kutusunda bulunması istenen düğmeleri temsil eden sayı
2. Parametrede verilmektedir. Aşağıdaki tablo hangi düğme için hangi değerin kullanılması
gerektiğini göstermektedir.
Yukarıda verilen örnekte 2. Parametre olarak 51 yerine 3 değerini kullanmış olsaydık diyalog
kutusunda yine Evet, Hayır ve İptal düğmeleri olurdu ancak ünlem işareti olmazdı.
Örnek 3:
Sayfa 3 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End Sub
Aşağıda verilen tabloda sayısal değerler mesajın solunda kullanılacak olan simgeyi seçmeye
yarar. Hangi simgeyi kullanmak istiyorsanız, o simgeyi temsil eden sayı ile düğmeleri temsil
eden sayıları toplayıp bulunan sayısal değeri msgbox’a ikinci parametre olarak vermelisiniz.
32 [Link]
48 [Link]
64 [Link]
Bazen msgbox metodu ile kullanıcıya verilen mesaj birden fazla satıra bölündükten sonra
görüntülenmek istenir. Mesajı birden fazla satıra bölmek için satır başı ve satır sonu (bir alt
satıra geçme) karakterlerini kullanmak gerekir.
Sayfa 4 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Chr(13) & Chr(10) Yerine Visual Basic sabiti olan vbCrLf kullanılabilir. Chr(13) Carriage
Return or CR karakterini temsil eder, Chr(10)ise Line Feed or LF karakterini temsil eder. LF
bir alt satıra inmeyi sağlar. CR ise satır başı yapar.
vbCrLf sabitini veya Chr(13) & Chr(10) kodlarını çok satırlı metin kutusunda da
kullanabilirsiniz
Örnek:
' The following example requires that Option Infer be set to On.
' Define the message you want to see inside the message box.
Dim msg = "Do you want to continue?"
' Now define a style for the message box. In this example, the
' message box will have Yes and No buttons, the default will be
' the No button, and a Critical Message icon will be present.
Dim style = [Link] Or MsgBoxStyle.DefaultButton2 Or
[Link]
Sayfa 5 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
' Display the message box and save the response, Yes or No.
Dim response = MsgBox(msg, style, title)
File diyalog pencereleri Toolbox içerisinde Dialogs başlığı altında bulunur. ColorDialog,
FolderBrowserDialog, FontDialog, OpenFileDialog ve SaveFileDialog adlı diyalog
kontrolleri vardır.
Bir iletişim kutusu nesnesi oluşturduktan sonra, aşağıdakileri yaparak iletişim kutusunu
programda görüntüleyebilirsiniz:
Gerekiyorsa, iletişim kutusunu açmadan önce bir ya da daha çok iletişim kutusu
özelliğini program kodunu kullanarak ayarlayın.
Bir olay yordamına iletişim kutusunun adını ShowDialog yöntemini kullanarak yazın.
İletişim kutusunu kullanıp kapattıktan sonra kullanıcının iletişim kutusu seçimlerine
yanıt vermek için program kodunu kullanın.
COLOR DIALOG
Renk seçmek için kullanılır.
1. Örnek: bir formun rengini color dialog yardımıyla değiştirelim. Once color dialog
nesnesi ekleyelim. Bu nesne bileşen tepsisinde görünür. Form üzerine bir de buton
ekleyelim ve buton_click olayına aşağıdaki kodları yazalım.
Sayfa 6 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
[Link] = [Link]
End If
End Sub
End Class
ÖZELLİKLER
“ Dosya türü adı (*.dosya türü) | *.dosya türü | Dosya türü adı (*.dosya türü) | *.dosya türü “
şeklinde kullanılır.
Sayfa 7 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Tırnak içindeki metnin ilk kısmı [Dosya türü adı (*.dosya türü)] Dosya Türü Kutusunda hangi
öğelerin listeleneceğini belirler. İkinci kısım [*.dosya türü] iletişim kutusunda listelenecek
dosyaların dosya adı uzantısını belirler.
Ör:
2. Bir önceki örnekteki forma openfiledialog nesnesi ekleyelim. Bu nesne bileşen
tepsisinde görünür.
3. forma button2 ve picturebox1 nesnelerini ekleyelim.
4. Button2 nesnesi üzerinde “Resim Aç” yazsın.
5. picturebox nesnesinin SizeMode özelliğini StretchImage olarak ayarlayın.
Sayfa 8 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Aşağıdaki kodu Aç düğmesi tıklandığında çalışan Button1_Click olay yordamı için giriniz.
Open iletişim kutusundaki dosya türünü tanımlamak için OpenFileDialog1 nesnesinin Filter
özelliğini kullanabilirsiniz. Daha sonra Open iletişim kutusunu görüntülemek için
ShowDialog yöntemini kullanın. Kullanıcı bir dosya seçip iletişim kutusunu kapattıktan
sonra, picturebox nesnesinin image özelliğini kullanıcının seçtiği dosya olarak ayarlayıp bu
dosyayı picturebox’ta görüntüler.
End If
Veya
Sayfa 9 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End If
[Link] = [Link]
End Sub
Yukarıdaki kodlardaki ilk üç ifade dosya açma iletişim kutusu nesnesinin üç farklı özelliğiyle
ilgilidir. İlk ifade geçerli bir dosya listesi tanımlamak için Filter özelliğini kullanır. Bu örnekte
listenin tek özelliği vardır: *.bmp. bu ifade, open (aç) iletişim kutusu için önemlidir, çünkü bir
resim kutusu nesnesi aşağıdaki dosya türlerini görüntüleyebilir.
Tırnak içindeki metnin ilk kısmı [Bitmaps (*.bmp)] Dosya Türü Kutusunda hangi öğelerin
listeleneceğini belirler. İkinci kısım [.bmp] iletişim kutusunda listelenecek dosyaların dosya
adı uzantısını belirler.
Filter listesine başka öğeler eklemek için öğeler arasına çubuk ( | ) simgesi koyabilirsiniz.
Örneğin, aşağıdaki program ifadesi, open iletişim kutusunda hem bit eşlem hem de Windows
meta dosyaları seçilebilmesini sağlar.
Olay yordamındaki ikinci ifade, programda open (Aç) iletişim kutusunu görüntüler.
Showdialog metodu kullanıcının iletişim kutusunda tıkladığı düğmeyi belirten DialogResult
adlı bir sonuç verir. Kullanıcının aç düğmesini tıklayıp tıklamadığını belirlemek için verilen
sonucun [Link]’e eşit olduğunu denetlemek amacıyla if… then karar yapısı
Sayfa 10 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Aşağıdaki resimde form üzerindeki Aç adlı butona tıkladıktan sonra açılan OpenFileDialog
penceresine ait görüntü verilmiştir.
Aşağıdaki örneği de uygulayabilirsiniz. Bu durumda forma bir tane metin kutusu ekleyiniz.
Sayfa 11 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End If
[Link] = [Link]
End Sub
Özellik ve Metotlar
selectedPath: Seçilen klasörün yolunu (path) tespit etmemizi sağlar.
End Sub
End Class
[Link] = False
[Link] = "Lütfen bir dizin seçin."
Sayfa 12 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
If ([Link]() = [Link]) Then
Secili_Klasaor_Yolu = [Link]
[Link] = Secili_Klasaor_Yolu
Else
[Link] = " Klasör Seçilmedi"
End If
End Sub
End Class
Örnek: seçilecek bir klasördeki .jpg dosyalarını listeleyecek bir program yazalım. Form
üzerine aşağıdaki şekilde gösterildiği gibi bir adet listbox, bir adet buton ve bir adet folder
dialog browser ekleyelim
Sayfa 13 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End While
End If
End Sub
End Class
Örnek: listboxta klasör içindeki uzantısı .jpg olan dosyalar görüntülensin ve bu dosyalardan
hangisi seçilirse picturebox’ta gösterilsin.
End While
End If
Secili_Klasaor_Yolu = [Link]
End Sub
Sayfa 14 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End Class
FONT DİALOG
Yazı tipi ile ilgili özellikleri ayarlamak için kullanılır.
Özellikler
Color: renk değerini ayarlamak için kullanılır.
Font: font değerlerini ayarlamak için kullanılır.
MaxSize: kullanıcını seçebileceği maksimum size değerini belirler.
MinSize: kullanıcını seçebileceği minimum size değerini belirler.
ShowApply: Uygula düğmesinin görünmesini sağlar.
showColor: Renk seçimi için açılır kutunun görünmesini sağlar.
Olaylar
Apply: uygula butonuna tıklandığında tetiklenir. Bu olayı kullanmak için önce uygula butonu
gösterilmelidir. Fontdialog nesnesine çift tıklayarak apply olayına ait olay alt programı açılır.
Örnek:
Private Sub Button2_Click(ByVal sender As [Link], ByVal e As [Link])
Handles [Link]
If ([Link] = [Link]) Then
[Link] = [Link]
[Link] = [Link]
End If
End Sub
Örnek
Sayfa 15 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End Class
Örnek
End Sub
ÖZELLİKLER
Sayfa 16 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
“ Dosya türü adı (*.dosya türü) | *.dosya türü | Dosya türü adı (*.dosya türü) | *.dosya türü “
şeklinde kullanılır.
Tırnak içindeki metnin ilk kısmı [Dosya türü adı (*.dosya türü)] Dosya Türü Kutusunda hangi
öğelerin listeleneceğini belirler. İkinci kısım [*.dosya türü] iletişim kutusunda listelenecek
dosyaların dosya adı uzantısını belirler.
Örnek:
OpenFileDialog ile seçilen bir resmi bir picturebox nesnesi içerisinde görüntüleyen ve
SaveFileDialog nesnesi ile bunu farklı bir isimle kaydeden bir uygulama yazalım.
1. Yöntem
Imports [Link]
Imports [Link]
End If
[Link] = [Link]
End Sub
Sayfa 17 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
[Link] = "Bitmaps (*.bmp)|*.bmp| jpeg dosyaları
(*.jpeg)|*.jpg|Gif dosyaları (*.gif)|*.gif|PNG Dosyaları (*.png)|*.png|ikon
dosyaları (*.ico)|*.ico|tiff dosyaları (*.tiff)|*.tiff"
[Link] = "Kaydetme Penceresi"
[Link] = "C:\Users\Pictures"
[Link] = "jpeg"
Select Case
[Link]([Link] - 3, 3)
Case "bmp" : [Link]([Link], [Link])
Case "gif" : [Link]([Link], [Link])
Case "jpg" : [Link]([Link], [Link])
Case "png" : [Link]([Link], [Link])
Case "ico" : [Link]([Link], [Link])
Case "tiff" : [Link]([Link],
[Link])
End Select
End If
End Sub
End Class
2. Yöntem
Imports [Link]
Imports [Link]
Public Class Form1
Sayfa 18 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
End Sub
End Sub
Sayfa 19 / 20
İLETİŞİM PENCERELERİ (DIALOGS)
Select Case
[Link]([Link] -
3, 3)
Case "bmp" : [Link]([Link],
[Link])
Case "gif" : [Link]([Link],
[Link])
Case "jpg" : [Link]([Link],
[Link])
Case "png" : [Link]([Link],
[Link])
Case "ico" : [Link]([Link],
[Link])
Case "tiff" : [Link]([Link],
[Link])
End Select
End If
End Sub
End Class
KAYNAKLAR
Sayfa 20 / 20
ALT PROGRAMLAR (SUB ROUTİNES)
İşlevadı fonksiyona verilen addır. Tür ise dönüş türünü belirtir. Bir tür belirtilmezse
varsayılan ayar olarak object türü döner.
Değişkenler: bunlara parametre de denir. İşlev içinde kullanılacak isteğe bağlı ve virgülle
ayrılmış bir değişkenler listesidir. Her değişkenin de belirli bir tür olarak bildirimi
yapılmalıdır. (Visual Basic, varsayılan ayar olarak her değişkene ByVal anahtar sözcüğünü
ekler. Bu işlem bu değişken aracılığıyla verilerin bir kopyasının işleve aktarılacağını ama
değişkenlerdeki hiçbir değişikliğin çağrılan yordama döndürülmeyeceğini belirtir.)
İşlev ifadeleri, işlevin yapacağı işi gerçekleştiren bir ifadeler bloğudur. Bir işlevdeki ilk
ifadeler genellikle işlevde kullanılacak yerel değişkenlerin bildirimini yaparlar, geriye kalan
ifadeler de işlevin yapacağı işi gerçekleştirirler.
Return ile, çağıran yordama işlev kod bloğunda ne zaman bir değer döndürüleceğini ve bu
değerin ne olacağını belirtebilirsiniz. Bir return ifadesi çalıştırıldığında, işlevden çıkılır ve
return ifadesinden sonra başka işlev ifadeleri varsa, bunlar çalıştırılmaz. (alternatif olarak,
değeri işlev adına atayarak çağıran yordama bir değer döndürebilirsiniz.)
Köşeli parantezler isteğe bağlı öğeler için kullanılır.
Örnek:
Aşağıdaki fonksiyon ötv ve kdv vergilerini hesaplar
Public Class Form1
Sayfa 1 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
[Link] = toplamVergi(100000)
[Link] = toplamVergi(200000)
[Link] = toplamVergi(300000)
End Sub
End Class
Module Module1
Function toplamVergi(ByVal fiyat As Single) As Single
Dim ötv, kdv As Single
ötv = fiyat * 0.37
fiyat = fiyat + ötv
kdv = fiyat * 0.18
fiyat = fiyat + kdv
Return fiyat
End Function
End Module
Module Module1
Function toplamVergi(ByVal fiyat As Single) As Single
Dim ötv, kdv As Single
ötv = fiyat * 0.37
fiyat = fiyat + ötv
kdv = fiyat * 0.18
fiyat = fiyat + kdv
toplamVergi = fiyat
End Function
End Module
Örnek:
Module Module1
Sayfa 2 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Else
result = num2
End If
FindMax = result
End Function
End Module
End Sub
End Class
Örnek:
Public Class Form1
End Sub
Function HarfNotuHesapla(ByVal bn As Byte) As String
Dim harf As String
Select Case bn
Case 0 To 24
harf = "FF"
Case 25 To 39
harf = "FD"
Case 40 To 44
harf = "DD"
Case 45 To 49
Sayfa 3 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
harf = "DC"
Case 50 To 56
harf = "CC"
Case 57 To 64
harf = "CB"
Case 65 To 75
harf = "BB"
Case 76 To 87
harf = "BA"
Case 88 To 100
harf = "AA"
Case 0 To 24
harf = "FF"
Case 0 To 24
harf = "FF"
Case 0 To 24
harf = "FF"
End Select
Return harf
End Function
End Class
Module Module1
Public wins As Short
End Module
Çevir düğmesini çift tıklayalım. Button1_click olay yordamında Beep() ifadesinin altına
aşağıdaki ifadeleri yazın.
wins = wins + 1
[Link] = "Kazanma: " & wins
Şanslı yedi etiketinin altına yeni bir label ekleyelim ve yeni etiket için aşağıdaki tabloda
gösterilen özellikleri ayarlayalım
Sayfa 4 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
[Link] modülünü tekrar açın. Çevirme sayısını izlemek için aşağıdaki şekilde spins adlı
değişken oluşturalım.
“Public wins as short” ifadesinin altına “Public spins As Short” yazın.
Load yordamındaki randomize ifadesini ‘ (üst tırnağı) kullanarak açıklama haline getirin.
Programı çalıştırın ve sonucu izleyin. İlk 5 tıklamada sonuç %100 olur. Tıklamaya devam
Sayfa 5 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
End If
[Link] = kazanmaorani(wins, spins)
End Sub
Örnek
Aşağıdaki örnekte öğretim elemanı en az bir vize ve bir final yapacaktır. Uygulama sınavı
yapmak ise seçimliktir. Eğer uygulama sınavı yapılmayacaksa Textbox2 adlı metin kutusuna
Sayfa 6 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
not girilmeyecektir. Butona tıklandığında başarı notu hesaplanacaktır. Başarı notu formülü
aşağıda verilmiştir:
Başarı notu; Vize’nin %20’si, Uygulama’nın %20’si ve Final’in %60’ı toplanarak bulunur.
End Sub
End Function
final = CInt([Link])
End If
MsgBox("Başarı notu= " & bn)
End Sub
End Class
End Sub
Sayfa 8 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
örnek
Örnek daha önce yaptığımız ortalama hesabı örneğini overloading ile yapalım.
Aşağıdaki örnekte öğretim elemanı en az bir vize ve bir final yapacaktır. Uygulama sınavı
yapmak ise seçimliktir. Eğer uygulama sınavı yapılmayacaksa Textbox2 adlı metin kutusuna
not girilmeyecektir. Butona tıklandığında başarı notu hesaplanacaktır. Başarı notu formülü
aşağıda verilmiştir:
Sayfa 9 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Başarı notu; Vize’nin %20’si, Uygulama’nın %20’si ve Final’in %60’ı toplanarak bulunur.
End Sub
Return ort
End Function
Function ortalama(ByVal v1 As Byte, ByVal f As Byte) As Byte
Dim ort As Byte
Return ort
End Function
Sayfa 10 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
Dim vize, uygulama, final, bn As Byte
vize = CInt([Link])
final = CInt([Link])
End If
MsgBox("Başarı notu= " & bn)
MsgBox(ortalama(50, 70, 60))
MsgBox(ortalama(50, 60))
End Sub
End Class
Sayfa 11 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
ALTPROGRAMLAR
Yapısal programlama tekniğinde, tek bir bütün olarak çözüm getirilmesi zor olan programlar,
daha küçük ve üstesinden daha kolay gelinebilecek parçalara bölünürler. Bu parçalar alt
program olarak isimlendirilir.
Daha önce yaptığımız çalışmalarda olayları yönetmek ve programın akışını düzenlemek için
Button1_click, Form1_Load gibi olay yordamlarını kullandık. VB programlamada, tüm
çalıştırılabilir ifadelerin bir yordam içine yerleştirilmesi gerekir. Yalnızca derleyici için
yazılan genel bildirimler ve yönergeler bir yordamın dışında bulunabilir
Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.
Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra
birleştirmektir.
Böylece çok büyük boyutlardaki program kodlarını yönetmek daha kolay olacaktır.
Altprogramların Avantajları
Alt programlar kodu küçültür. Çok tekrarlanan işlemlerin alt programlar kullanılarak
yazılması çalışabilir programın kodunu küçültür. Çünkü alt programlar yalnızca bir
kere çalışabilir kod içine yazılırlar. Ana program kodu alt programın olduğu yere
atlatılarak bu bölgenin defalarca çalıştırılması sağlanabilir.
Sayfa 1 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Fonksiyonlar ve sub yordamlar bir formun program kodunda tanımlanabilir ama yordamların
tüm projeyi kapsamaları için bir modül içinde oluşturulmaları en kullanışlı yoldur. Bu genel
amaçlı yordamlar olarak adlandırılabilecek ve çeşitli programlama işleri kapsamında
kullanılması yeterince esnek ve yararlı olan kod blokları için özellikle önemlidir.
SUB YORDAMLAR
Sub yordamları, function yordamlarına benzerler, farkları function yordamları gibi adlarıyla
ilişkili değer döndürmemeleridir. Sub Yordamları genellikle, kullanıcıdan girdi almak,
bilgileri görüntülemek ve yazdırmak veya bir koşulla ilişkili çeşitli özellikleri denetlemek için
kullanılırlar. Uygulama içerisinde bir kez yazacağımız kodu tekrar yazmaya gerek kalmadan
ismi ile çağırarak kullanabiliriz.
Örnek
Public Class Form1
Sub KaresiniAl()
Dim b As Integer
Dim a As Integer = InputBox("Karesi alinacak sayiyi gir")
b=a*a
MsgBox(a & " Karesi: " & b)
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
KaresiniAl()
End Sub
End Class
Sayfa 2 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Örnek
End If
Next
End Sub
End Sub
End Class
Parametre Kullanımı
Yordam içinde kullanılacak isteğe bağlı ve virgülle ayrılmış bir değişkenler listesidir. Her
değişkenin de belirli bir tür olarak bildirimi yapılmalıdır. (Visual Basic, varsayılan ayar olarak
her bağımsız değişkene ByVal anahtar sözcüğünü ekler. Bu işlem bu bağımsız değişken
aracılığıyla verilerin bir kopyasının yordama aktarılacağını ama bağımsız değişkenlerdeki
hiçbir değişikliğin çağrılan yordama döndürülmeyeceğini belirtir.)
Bir sub yordamı çağrısında yordama gönderilen değişkenlerin sayılarının ve türlerinin, sub
yordamı bildirimindeki değişkenlerinin sayıları ve türleri ile eşleşmesi ve grubun tamamının
parantez içerisine alınması gerekir. Bir sub yordamına aktarılan değişkenler, yordamda
değiştirilirse, bu güncelleştirilmiş değişkenler, yordam değişkenleri ByRef anahtar sözcüğünü
kullanarak tanımlanmadığı sürece programa geri aktarılmaz.
Örnek
Public Class Form1
Sub KaresiniAl(ByVal sayi As Integer)
Dim kare As Integer
kare = sayi * sayi
[Link](sayi & " sayisinin karesi: " & kare)
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
KaresiniAl(3)
Sayfa 3 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
End Sub
End Class
Örnek
Örnek:
Module Module1
Sub kutlama(ByVal kisi As String)
Dim msg As String
If kisi <> "" Then
msg = "Doğum Günün Kutlu Olsun " & kisi & "!"
MsgBox(msg, , "İyi Dileklerimizle")
Else
MsgBox("isim belirtilmemiş")
End If
End Sub
End Module
Sayfa 4 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Örnek:
Public Class Form1
Sub renk_degistir(ByVal nesne As Control)
End If
End Sub
End Sub
Örnek:
Sub yordamları genellikle, bir programda iki ya da daha çok kaynaktan gelen ve aynı biçimde
olması gereken girdileri işlemek için kullanılır.
Sayfa 5 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Sayfa 6 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Tabstop False
Module Module1
Sub adekle(ByVal team As String, ByRef returnstring As String)
Dim prompt, nm, wrapcharacter As String
prompt = "Bir" & team & "Çalışanı Giriniz"
nm = InputBox(prompt, "Girdi Kutusu")
wrapcharacter = Chr(13) + Chr(10) 'vbcrlf veya vbnewline
'wrapcharacter = vbCrLf
'wrapcharacter = vbNewLine
End Sub
End Module
End Sub
End Sub
Sayfa 7 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
Örnek
Örnek
Public Class Form1
Sub islem(ByVal x As Integer, ByVal y As Integer, Optional ByVal sayi As Integer = 5)
Dim sonuc As Integer
sonuc = sayi * sayi + x ^ 3 - y
[Link]("Sonuç: " & sonuc)
End Sub
Sayfa 8 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
islem(3, 2, 10)
islem(3, 2, 11)
islem(3, 2, 4)
End Sub
End Class
Not: optional parametreden sonra normal parametre kullanmayınız. Birden fazla optional
parametre varsa ve öndeki parametre kullanılmayacaksa iki virgül kullanılmalıdır (,,)
Sub islem(Optional ByVal sayi As Integer = 5,ByVal x As Integer, ByVal y As Integer, )
Örnek
Public Class Form1
Sub renk_degistir(ByVal nesne As Control, Optional ByVal metin As String = "TARSUS
ÜNİVERSİTESİ")
Sayfa 9 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
End If
[Link] = metin
End Sub
End Sub
ParamArray
paramArray parametre sayısının belli olmadığı durumlarda kullanılır.
Örnek: form üzerindeki butonları pasif yapacak bir metot oluşturalım.
Next
End If
Sayfa 10 / 11
ALT PROGRAMLAR (SUB ROUTİNES)
End Sub
End Sub
Sayfa 11 / 11
KONTROLLER - II
Liste kutusu (Listbox) denetimi, öğeleri bir kutu içerisinde listeleyerek kullanıcının bir veya
daha fazla öğe seçebilmesini sağlar. Listelenecek öğeler kutu içerisine sığmayacak kadar fazla
olduğunda kutu içerisinde otomatik olarak kaydırma çubuğu gösterilir.
ÖZELLİKLER
Backcolor
Borderstyle
Cursor
Dock
Enabled
Font
Name
Forecolor
Locations
Locked
Maximumsize
Minimumsize
Size
Visible
İtems: liste kutularında gösterilecek öğeleri belirlemek için kullanılır. Özelliğin yanındaki
düğme tıklandığında öğelerin hazırlanacağı koleksiyon editörü açılır. Her öğe bir satıra
gelecek şekilde öğe elemanları yazılmalıdır.
MsgBox([Link](2))
Sayfa 1 / 9
KONTROLLER - II
While i <= 5
While j <= 5
[Link](i & "X" & j & "=" & i * j)
j = j + 1
End While
j = 1
i = i + 1
End While
End Sub
End Class
Sayfa 2 / 9
KONTROLLER - II
Selectedindex: Liste kutusundaki öğelerin her birinin bir indeks numarası vardır. İlk öğenin
indeks numarası sıfırdır. Aktif (seçili) öğenin indeks numarası bu özellik ile öğrenilir. Eğer
hiçbir öğe seçili değilse özelliğin değeri -1 olur.
Next i
End Sub
End Sub
Sayfa 3 / 9
KONTROLLER - II
OLAYLAR
METOTLAR
Add Metodu: Bu metod liste kutusuna eleman yerleştirmek için kullanılır. Eleman
yerleştirme işlemi tasarım zamanında (design time) veya çalıştırma zamanında (run time)
düzenlenebilir. Tasarım zamanında kutuya eklenen elemanlar uygulama çalıştırıldığında
otomatik olarak yer alacaktır. Ancak kullanıcının da liste kutusuna eleman ekleyebilmesi
çalışma zamanında Add Metodu ile olur.
[Link](“Ortaöğretim”)
[Link](“Lise”)
[Link](“Lisans Eğitimi”)
[Link](degisken)
[Link]([Link])
End Sub
Removeat Metodu: Removeat metodu liste kutusu içerisindeki bir elemanın kutudan
silinmesini sağlar. Silme işlemleri kutu içindeki elemanın index değerine göre yapılır.
Örneğin;
listbox1. İ[Link](2)
Dizilimi kutu içindeki 2 index değerine sahip (baştan üçüncü) elemanı siler.
Remove Metodu: iste kutusu içerisindeki bir elemanın kutudan silinmesini sağlar. Silme
işlemleri kutu içindeki elemanın ismine göre yapılır. Örneğin;
[Link](“Ankara”)
Sayfa 4 / 9
KONTROLLER - II
Findstring: Belirtilen metni liste kutusu içerisinde arar ve bulduğu ilk öğenin dizin
numarasını verir. Tam eşleşme gerektirmez.
End Sub
Findstringexact: Belirtilen metni liste kutusu içerisinde arar ve tam olarak eşleşen öğenin
dizin numarasını verir.
End Sub
Private Sub Button7_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = [Link]("Ortaöğretim")
End Sub
End Sub
Sayfa 5 / 9
KONTROLLER - II
ListBoxSoru1:
: Load Prosedüründe aşağıdaki elemanları Liste kutusuna ekleyen bir program yazın
ListBoxSoru2: Butona tıklanınca Listbox1’den seçilen elemanı text1’e yazan bir program
yazın
Sayfa 6 / 9
KONTROLLER - II
ListBoxSoru5: Sil isimli butona tıklanınca Liste numarası Textbox1’e yazılmış olan eleman
Listbox1’den silinsin.
ListBoxSoru6: Sil isimli butona tıklanınca adı Textbox1’e yazılmış olan eleman listbox1’den
silinsin.
Sayfa 7 / 9
KONTROLLER - II
ListBoxSoru8: Button1’e tıklanınca Listbox1 deki aktif elemanın index değeri text2 ye
yazılsın
Sayfa 8 / 9
KONTROLLER - II
Sayfa 9 / 9
DİZİLER
Diziler üzerinde kullanılan pek çok metod vardır. Bu metotlar genelde [Link] sınıfına
aittir.
Length Metodu
Yazım Şekli:
diziAdı.length
End Class
CreateInstance Metodu
Yeni bir diziyi, değişken tipini ve eleman sayısını ve boyutunu parametre alarak tanımlar
Yazılımı:
[Link](Değişken Tipi, Eleman Sayısı, Boyut)
Aşağıdaki örnekte gettype metodu kullanılmıştır. Bu metod değişkenin Type değerini almak
için kullanılır.
MsgBox(GetType(String).ToString)
MsgBox(GetType(Integer).ToString)
Örnek
Sayfa 1 / 10
DİZİLER
Private Sub Button2_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
For i = 0 To 2
[Link](bolum(i))
Next
End Sub
End Class
Örnek
End Sub
End Class
IsArray metodu
Sayfa 2 / 10
DİZİLER
Private Sub Button4_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = IsArray(bolum)
End Sub
SetValue
Örnek:
End Sub
End Class
GetValue
Yazım şekli:
GetValue(index değeri)
[Link]=[Link](2)
Join Metodu
Dizi içerisindeki elemanların hepsini bir string değişkene belirtilen ayırıcı karakter
kullanılarak aktaran metottur.
Sayfa 3 / 10
DİZİLER
Yazım şekli
Örnek: Bir listbox içindeki değerleri önce bir diziye aktaralım daha sonra + karakterini ayırıcı
karakter olarak kullanalım ve bir stringe aktaralım.
Dim i As Byte
Dim s As String
End Sub
End Sub
End Class
Copy Metodu: bir dizinin içeriğini başka bir diziye kopyalamak için kullanılır.
Yazım Şekli:
[Link](kaynak dizi adı, hedef dizi adı, eleman sayısı)
Örnek:
For i = 0 To [Link] - 1
Sayfa 4 / 10
DİZİLER
[Link](dizi2(i))
Next
End Sub
End Sub
For i = 0 To [Link] - 1
[Link](dizi2(i))
Next
End Sub
End Class
Örnekte dizi1 adlı dizinin ilk 2 elemanı dizi2 adlı dizinin ilk iki elemanı yerine
kopyalanmıştır. Eğer kopyalanacak eleman sayısı diziye sığmazsa hata mesajı alınır
Örnek:
For i = 0 To [Link] - 1
[Link](dizi2(i))
Next
Sayfa 5 / 10
DİZİLER
End Sub
End Sub
For i = 0 To [Link] - 1
[Link](dizi2(i))
Next
End Sub
End Class
Contains Metodu
Bir dizi içerisinde bir elemanın var olup olmadığını tespit eder. Geriye boolean tipinde değer
döndürür.
Yazım Şekli:
Diziadı.Contains(aranan değer)
Örnek:
End Sub
End Class
Sayfa 6 / 10
DİZİLER
IndexOf Metodu
dizi içerisinde aranan değerin indeks numarasını geriye döndürür. Aranan değer bulunmazsa
geriye -1 değerini döndürür.
Yazım Şekli:
[Link](dizi adı, aranacak değer, aramanın başlayacağı indis değeri)
Örnek:
End Sub
End Class
Soru: dizide aranan elemandan kaç tane olduğunu buldurun ve sonucu Textbox3 adlı metin
kutusunda görüntüleyin.
LastIndexOf Metodu
IndexOf metodu gibi arama yapar ancak aranan elemanlar birden fazla ise sonuncu elemanın
indeks değerini verir. Burada dikkat edilmesi gereken nokta aramaya sondan başlanır. Yani
aşağıdaki örnekte aramaya başlanacak indeks değeri 7 verilebilir.
Sayfa 7 / 10
DİZİLER
End Sub
End Class
Sort Metodu
Yazım Şekli:
[Link](diziadı)
Örnek:
Next
End Sub
Next
End Sub
End Class
[Link] Metodu
Örnek:
Public Class Form1
Sayfa 8 / 10
DİZİLER
Dim dizi1() = {"HAKAN", "MAHMUT", "HATİCE", "HALİME", "CÜNEYT", "AYŞE", "HATİCE",
"HİLAL", "ÇAĞRI"}
Dim i, indis As Integer
End Sub
Next
End Sub
Next
End Sub
End Class
[Link]
Yazım Şekli
Sayfa 9 / 10
DİZİLER
i = [Link](dizi1, aranan)
MsgBox(i)
End Sub
Sayfa 10 / 10
DİZİLER
DİZİLER (ARRAYS)
Bundan önce tanımladığımız değişkenler veri tipine uygun yalnızca bir değer almakta idi.
Aynı tipte birden fazla değeri bir değişkende saklamak için diziler kullanılır. Örneğin bir
futbol takımının oyuncularının veya bir dersi alan öğrencilerin adlarını bir dizide tutabiliriz.
Dizinin elemanlarına birinci eleman, beşinci eleman gibi dizin (indeks) numarasıyla ulaşırız.
Dizi( ) 22 13 7 1 12
İndis 0 1 2 3 4
Dizinin büyüklüğünü belirtmek zorunlu değildir. Eğer dizinin kaç elemanlı olduğu
bilinmiyorsa parantez içerisi boş bırakılır. Bu durumda dinamik dizi tanımlanmış olur.
Örnek görsel programlama dersini 10 kişinin aldığını düşünelim. Ve dersi alan öğrencilerin
isimlerini saklayacak dizi oluşturalım.
isim(0) = "ali"
isim(1) = "ayşe"
isim(2) = "fatma"
isim(3) = "orhan"
isim(4) = "musa"
Sayfa 1 / 15
DİZİLER
ör:
isim(0) = "ali"
isim(1) = "ayşe"
isim(2) = "fatma"
isim(3) = "orhan"
isim(4) = "musa"
End Sub
[Link] = isim(3)
End Sub
Sayfa 2 / 15
DİZİLER
[Link] = isim(CInt([Link]))
End Sub
End Class
Ör:
Sayfa 3 / 15
DİZİLER
isim(0) = "ali"
isim(1) = "ayşe"
isim(2) = "fatma"
isim(3) = "orhan"
isim(4) = "musa"
End Sub
[Link] = yenidizi1(3)
End Sub
[Link] = yenidizi1(CInt([Link]))
End Sub
End Sub
End Sub
Sayfa 4 / 15
DİZİLER
End Class
Daha önce tanımlanmış bir diziyi yeniden boyutlandırmak için redim ifadesi kullanılır.
Yukarıda oluşturulan yenidizi1 adlı diziye yeni elemanlar ekleyelim. Yeni elemanlar
eklenmek istendiğinde dizi yeniden boyutlandırılmalıdır. Dizi yeniden boyutlandırıldığında
dizi elemanları silinir. Yeniden boyutlandırma sırasında dizi elemanlarının silinmesini
istemiyorsak preserve anahtar kelimesini kullanırız.
Ör:
Sayfa 5 / 15
DİZİLER
isim(0) = "ali"
isim(1) = "ayşe"
isim(2) = "fatma"
isim(3) = "orhan"
isim(4) = "musa"
End Sub
[Link] = yenidizi1(3)
End Sub
[Link] = yenidizi1(CInt([Link]))
End Sub
End Sub
yenidizi1(6) = "cengiz"
Sayfa 6 / 15
DİZİLER
yenidizi1(7) = "mustafa"
End Sub
End Sub
End Class
Soru:
Button1 adlı butona tıklanınca “8, 9, 12, 4, 5, 7, 1, 0, 6, 11” sayılarını A dizisine aktarıp
listbox1’de gösteren programı yazınız
Not: UBound(A) veya [Link] ile bir dizinin eleman sayısı öğrenilebilir
Yukarıda örnek olarak tanımladığımız diziler tek boyutlu idi. Dizileri çok boyutlu
tanımlayabiliriz. Çok boyutlu dizi tanımlanırken boyutlar arasına “,” konulur.
Satır ve sütun şeklinde ifade edilen bilgilerin tablo olarak temsil edilmesi için çok boyutlu
diziler ( indisler ) kullanılır. Tablonun bir elemanını belirlemek için iki indis belirlenmelidir.
Buradaki elemanlardan birincisi dizi elemanının satırını ve ikincisi ise sütununu belirler.
Bir elemanını belirlemek için iki indis kullanan dizilere iki boyutlu diziler ( 2B diziler, 2D
diziler, 2Dimension arrays ) denir. Benzer şekilde bir elemanını belirlemek için üç indis
kullanan dizilere üç boyutlu ( 3B, 3D ) diziler denir.
İki veya daha fazla boyutlu diziler çok boyutlu diziler olarak bilinir.
Yukarıda örnek olarak tanımladığımız diziler tek boyutlu idi. Dizileri çok boyutlu
tanımlayabiliriz. Çok boyutlu dizi tanımlanırken boyutlar arasına “,” konulur.
Aşağıdaki örnek kod ile ilk boyutunda 4, ikinci boyutunda 5 eleman olan 2 boyutlu bir dizi
tanımlanmıştır. Dizi 4 satır, 5 sütun (kolon) içerir. Yani 4 X 5 elemanlı dizidir. Genel olarak
bir dizi m satır ve n sütundan oluşuyorsa m x n boyutlu dizi olarak adlandırılır.
Sayfa 7 / 15
DİZİLER
Ör
cdizi(0, 0) = 1
cdizi(0, 1) = 2
cdizi(0, 2) = 3
Sayfa 8 / 15
DİZİLER
cdizi(0, 3) = 4
cdizi(1, 0) = 5
cdizi(1, 1) = 6
cdizi(1, 2) = 7
cdizi(1, 3) = 8
cdizi(2, 0) = 9
cdizi(2, 1) = 10
cdizi(2, 2) = 11
cdizi(2, 3) = 12
End Sub
[Link] = cdizi(CInt([Link]),
CInt([Link]))
End Sub
End Class
Çok boyutlu diziler, tek boyutlu dizilerde olduğu gibi başlangıç değeri atanarak ta
tanımlanabilir. Aşağıdaki örnek kod yukarıda örnekte verilen dizi atamasını yapar.
Ör:
Sayfa 9 / 15
DİZİLER
[Link] = ycdizi(CInt([Link]),
CInt([Link]))
End Sub
Listeler ya da diziler üzerinde işlem yapmak için kullanılan döngü yapısıdır. Özellikle eleman
sayısının bilinmediği durumlarda kullanılabilmesi özelliği ile çok kullanışlıdır.
Kullanım şu şekildedir:
Komutlar
Next
Sayfa 10 / 15
DİZİLER
MsgBox(eleman)
Next
End Sub
End Class
Örneğimizde for each döngüsü ile ad dizisinin elemanlarını alarak eleman adlı değişkene
atayıp, döngü içerisinde eleman değişkeninin içeriği yazdırılmaktadır.
Sayfa 11 / 15
DİZİLER
Dim i As Integer
For i = 0 To 6
MsgBox(ad(i))
Next i
End Sub
End Class
For each döngüsü sıklıkla bir form üzerindeki kontrollere erişmek amacı ile de
kullanılmaktadır. Örneğin bir form üzerinde bulunan textbox nesnelerine erişerek onların
içeriğini temizleyen, zemin ve yazı renklerini değiştiren bir uygulama yapalım.
Sayfa 12 / 15
DİZİLER
[Link] = ""
[Link] = [Link]
[Link] = [Link]
End If
Next
End Sub
Dim i, j As Integer
Dim ad = {"ahmet", "mehmet", "süreyya", "faik", "sait",
"mustafa", "fahriye", "kemal", "Musa"}
Dim ycdizi(,) As Integer = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10,
11, 12}}
End Class
Sorular
1. 10 elemanlı bir sayı dizisine eleman girişini yapan bir program yazın.
Sayfa 13 / 15
DİZİLER
2. 10 elemanlı bir sayı dizisinin elemanlarının toplamını bulan bir program yazın.
Burada giriş buton1’e tıklanınca yapılıyor. İnputbox fonksiyonu ile giriş yapılıyor.
Button2’ye tıklanınca sonuç metin kutusunda gösteriliyor
3. 10 elemanlı bir sayı dizisinin elemanlarının aritmetik ortalamasını bulan bir program
yazın.
4. 10 elemanlı bir sayı dizisinin başlangıç ve bitiş indeksi verildiğinde arada kalan
elemanların aritmetik ortalamasını bulan bir program yazın.
5. 10 elemanlı bir sayı dizisinin en büyük elemanını bulan bir program yazın.
6. 10 elemanlı bir sayı dizisinin en küçük elemanını bulan bir program yazın.
7. 10 elemanlı bir sayı dizisinin negatif elemanlarının toplamını bulan bir program yazın.
8. 10 elemanlı bir sayı dizisinde 150’den büyük değerdeki elemanların sayısını bulan bir
program yazın.
9. 10 elemanlı bir sayı dizisinde negatif ve pozitif elemanların ayrı ayrı ortalamasını
bulan bir program yazın.
10. 10-20 arası rasgele üretilen 5 sayıyı x dizisine aktaran ve dizinin tüm elemanlarını
listbox1’de görüntüleyen bir program yazınız.
11. Dışarıdan inputbox ile girilen N elemanlı bir dizinin tüm elemanlarını toplayan ve
sonucu mesaj kutusu ile görüntüleyen bir program yazınız.
12. N elemanlı bir A dizisini ters sırada B dizisine aktaran programı yazınız.
Sayfa 14 / 15
DİZİLER
Yol Gösterme: Dizinin ters sırada aktarılması; baştan ve sondan karşılıklı gelen
elemanlarının yer değiştirilmesi işlemidir. Yani dizinin 10. elemanı 1. Elemanı ile, 9.
elemanı 2. elemanı ile yer değiştirilecek ve oluşan yeni dizi, B dizisine aktarılacak. N
elemanlı bir dizide bu işlemi B(I) = A( N+1 –I ) şeklinde formülleştirebiliriz.
13. Bilgisayarın rasgele ürettiği 10 kişinin sınavdan aldıkları notların ortalamasını bulan
ve not ortalamasına eşit, not ortalamasından küçük ve büyük kişilerin sayısını veren
programı yazınız.
14.
a. Her bileşen için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)
b. Her ay için tüm bileşenlerin satış toplamları nelerdir? (Tabloda sütun toplamlarının
hesaplanması)
e. Tüm bileşen ve tüm aylar için otomobil satışları toplamı nedir? (Tablonun genel
toplamının bulunması)
Sayfa 15 / 15
KONTROLLER - I
Projenin daha fonksiyonel olması için Windows formu çeşitli bölgelere ayrılabilir. Bölgelere
ayırma işlemi panel ve groupbox denetimleri aracılığıyla yapılır. Panel ve groupbox
denetimleri diğer denetimler için bir kapsayıcı (container) denetim olarak işlem görür.
Denetimler gruplara ayrılarak kapsayıcı denetimler üzerine yerleştirilir.
Bir panel veya grup kutusu üzerine yerleştirilen denetimler, panel veya grup kutusu
sürüklendiğinde panel veya grup kutusu ile birlikte hareket eder. Çünkü panel veya grup
kutusu, üzerindeki denetimler için bir taşıyıcı veya kapsayıcı denetimdir. Kapsayıcı denetim
hareket ettirildiğinde üzerindeki denetimler de hareket eder. Silindiğinde ise üzerindeki
denetimler de silinir. Kapsayıcı denetim üzerindeki denetimlerin yazı tipi ve renk gibi
özellikleri de tek seferde ayarlanabilir.
ÖZELLİKLER
Autosize: Form üzerine bir onay kutusu yerleştirildiğinde onay kutusu üzerinde
görüntülenecek yazının büyüklüğüne göre onay kutusu boyutu Mouse ile belirlenir. Onay
kutusu üzerinde görüntülenecek yazının onay kutusu boyutundan büyük olduğu durumlarda
yazının sadece onay kutusu boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu
durumu ortadan kaldırmak için onay kutusu autosize özelliği true olarak düzenlenir.
[Link] = True
Sayfa 1 / 17
KONTROLLER - I
Backgroundimage: checkbox’ın arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek remi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
None: resmin hangi kısmı forma geliyorsa o kısmı forma eklenir. Yani resmin boyutu kadar
eklenir.
Tile: resim yan yana ve üst üste eklenir. Formun boyutu artırıldığında bu durum görülür.
Sayfa 2 / 17
KONTROLLER - I
End Sub
Checked: onay kutusunun başlangıçta onaylı olup olmayacağını belirler. Ayrıca onay
kutusunun seçili olup olmadığını öğrenmek için de kullanılır.
Ör1:
End Sub
Ör2:
Sayfa 3 / 17
KONTROLLER - I
Checkedstate: checked özelliği ile ilişkili olarak çalışır. Onay kutusunun onaylı veya onaylı
değil durumunu ayarlamak / öğrenmek için kullanılır. Bir onay kutusu onaylı değil
(unchecked), onaylı (checked) veya belirsiz (indeterminate) durumlarından birisine dahildir.
Cursor: Farenin checkbox üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
End Sub
Sayfa 4 / 17
KONTROLLER - I
Ör:
checkbox1. Enabled = True
checkbox1. Enabled = False
Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.
Sayfa 5 / 17
KONTROLLER - I
[Link] = [Link]
Location: checkbox’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
OLAYLAR:
Appearancechanged: görünüm değiştiğinde tetiklenir.
Sayfa 6 / 17
KONTROLLER - I
Ör: butona tıklandığı zaman checkbox işaretli durumdaysa mesaj kutusu ile seçildi, işaretli
değilse seçilmedi yazan bir program yazın
CheckBoxSoru1:
Kullanıcı aşağıda belirtilen dillerden istediğini checkbox ile işaretleyecek ve ileri butonuna
tıklanınca hangi diller işaretlenmişse mesaj kutusu ile o dilleri bildiğini belirten bir mesaj
versin.
Örneğin Türkçe İngilizce ve Fransızcayı işaretleyen bir kullanıcı için “siz TÜRKÇE
İNGİLİZCE FRANSIZCA biliyorsunuz” şeklinde bir mesaj verilsin.
Sayfa 7 / 17
KONTROLLER - I
CheckBoxSoru2:
checkbox’a tıklandığında tıklandı şeklinde mesaj veren bir program hazırlayın
CheckBoxSoru3:
Checkbox işaretlendiğinde “işaretlendi”, işaret kaldırıldığında “işaret kaldırıldı” şeklinde
mesajı mesaj kutusuyla veren bir program yazın.
Sayfa 8 / 17
KONTROLLER - I
CheckBoxSoru4:
Checkbox işaretli ise [Link] true işaretsiz ise [Link] false olacak şekilde bir
program yazın
CheckBoxSoru5:
Yukarıdaki formu oluşturun. Formdaki her bir onay kutusu gruplardan birinin rengini
değiştirmek üzere kullanılmıştır. Checkbox1 işaretli ise groupbox1’in arkaplan rengi mavi,
checkbox1 işaretli değilse groupbox1’in arkaplan rengi turuncu olsun.
Checkbox2 işaretli ise groupbox3’ün arkaplan rengi kırmızı, checkbox2 işaretli değilse
groupbox3’ün arkaplan rengi kahverengi olsun.
Checkbox3 işaretli ise groupbox4’ün arkaplan rengi siyah, checkbox3 işaretli değilse
groupbox4’ün arkaplan rengi beyaz olsun.
Sayfa 9 / 17
KONTROLLER - I
Checkbox4 işaretli ise groupbox2’nin arkaplan rengi sarı, checkbox4 işaretli değilse
groupbox2’nin arkaplan rengi yeşil olsun.
Bu kontrolün özellikleri ve olayları CheckBox kontrolü ile aynıdır. Sadece bir seçenek
işaretlenebildiği için, kontrollerin yapılması CheckBox kontrolüne göre daha kolaydır.
ÖZELLİKLER
Autosize: Form üzerine bir radyo düğmesi yerleştirildiğinde radyo düğmesi üzerinde
görüntülenecek yazının büyüklüğüne göre radyo düğmesi boyutu Mouse ile belirlenir. radyo
düğmesi üzerinde görüntülenecek yazının radyo düğmesi boyutundan büyük olduğu
durumlarda yazının sadece radyo düğmesi boyutuna sığan kısmı görüntülenir. Diğer kısımları
kesilir. Bu durumu ortadan kaldırmak için radyo düğmesi autosize özelliği true olarak
düzenlenir.
[Link] = True
Backgroundimage: radio button’un arka planına resim eklememizi sağlar. Ancak burada
birkaç durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton
karşımıza çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.
Sayfa 10 / 17
KONTROLLER - I
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek remi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
None: resmin hangi kısmı forma geliyorsa o kısmı forma eklenir. Yani resmin boyutu kadar
eklenir.
Tile: resim yan yana ve üst üste eklenir. Formun boyutu artırıldığında bu durum görülür.
Sayfa 11 / 17
KONTROLLER - I
[Link] =
[Link]("d:\[Link]")
[Link] =
[Link]
End Sub
Checked: radio düğmesinin başlangıçta onaylı olup olmayacağını belirler. Ayrıca radio
düğmesinin seçili olup olmadığını öğrenmek için de kullanılır.
Ör1:
End Sub
Ör2:
Cursor: Farenin radio button üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda
fare işaretçisinin bazı şekilleri görünmektedir.
Sayfa 12 / 17
KONTROLLER - I
[Link] = [Link]
End Sub
Sayfa 13 / 17
KONTROLLER - I
Enabled özelliği False olarak belirlenen bir Radiobutton; gri, silik bir görünüm alır.
Name. Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.
Size: Karakterlerin büyüklüğünü belirler. Varsayılan büyüklük 8,5 değerindedir.
Bold (Kalın): Yazının kalın tipte olmasını belirler.
Italic (İtalik): Yazının italik tipte olmasını belirler.
UnderLine (Altı çizgili): Yazının altı çizgili olmasını belirler.
[Link] = [Link]
Location: Radiobutton’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
Sayfa 14 / 17
KONTROLLER - I
OLAYLAR
RadioButtonSoru1:
Button1 adlı butona tıklandığında, yukarıdaki formda RadioButton1 işaretliyse çıktı kutusu ile
“Seçildi”, Seçili değilse Çıktı kutusuyla “Seçilmedi” şeklinde mesaj veren bir program
yazınız.
Sayfa 15 / 17
KONTROLLER - I
RadioButtonSoru2:
RadioButtonSoru3:
Sayfa 16 / 17
KONTROLLER - I
bedenini içeren radiobuttonlardan hangisi seçiliyse onun yanında yazan beden büyüklüğü
yazsın.
Sayfa 17 / 17
KONTROLLER - I
Arabirim programın kullanıcıya görünen yüzüdür. Diğer bir deyişle arabirim program
kodları ile kullanıcı arasındaki iletişimi sağlar. Bu nedenle arabirim oluşturmak kod yazmak
kadar önemlidir. Ne kadar çok ne kadar güzel kod yazarsanız yazın kullanıcı bu kodlardan
arabirim sayesinde yararlanabilir. Buda demek oluyor ki kötü bir arabirim kodların yeterince
kullanılamaması anlamına gelir.
Özellikler
(properties)
GENEL BİLGİLER
Sayfa 1 / 30
KONTROLLER - I
BUTONLAR (BUTTONS)
En çok kullanılan denetimlerdendir. Dolayısıyla hemen her Windows uygulamasında
kullanılmaktadır. Butonlar, düğme şeklinde genellikle tıklanarak kullanılan denetimlerdir.
Kullanıcı programa bir işlem yaptırmak istediğinde ilgili butonu tıklatır. Geri planda yer alan
VB kodu devreye girerek çalışır. Butonlar sayesinde programla etkileşim kolay bir şekilde
sağlanmış olur.
BUTON ÖZELLİKLERİ
Anchor: butonun form üzerindeki yerinin yukarı (top), aşağı (bottom), sol (left) ve sağ (right)
kenarlarından birine sabitlenmesini sağlar. Örneğin butonun anchor özelliği bottom olarak
seçilmişse, buton alt kenarından sabitlenir. Formun alt kenarı ile buton arasındaki mesafe hep
sabit kalır. Buton aşağı yukarı doğru büyütülüp küçültülse bile bu mesafe değişmez.
Name Özelliği: Form üzerine bir buton yerleştirdiğinizde Visual Basic butonun ismini
otomatik olarak button1 olarak belirler. Siz name özelliğinden butonun ismini
değiştirebilirsiniz. Butonları isimlendirirken ismin başına o kontrolün bir buton olduğunu
belirten btn harfleri eklenir. btnbasla veya btnbitir gibi.
[Link] = "abc"
AutoEllipsis: Butonun text özelliğine yazılan metin butonun boyutlarından fazla olunca
görünmeyen kısmı belli etmek üzere elips (…) işaretinin çıkıp çıkmayacağını belirtir. True
veya false değerini alır. True değeri elips (…) işaretinin çıkacağını belirtir.
Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız butonun boyutundan büyük olsun. Eğer autosize özelliği true ise buton o
yazının uzunluğu kadar otomatik olarak genişler.
Sayfa 2 / 30
KONTROLLER - I
Backcolor
Butonun arkaplan renginin belirlenmesinde kullanılır.
[Link] = [Link]
Backgroundimage: butonun arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.
Sayfa 3 / 30
KONTROLLER - I
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
None: resmin hangi kısmı butona geliyorsa o kısmı butona eklenir. Yani resmin boyutu kadar
eklenir.
Tile: resim yan yana ve üst üste eklenir. butonun boyutu artırıldığında bu durum görülür.
[Link] = [Link]
Sayfa 4 / 30
KONTROLLER - I
Cursor: Farenin buton üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Dialogresult: modal veya dialog şeklinde gösterilen formlarda, butona tıklandığı anda ana
forma gönderilecek değerin seçilmesini sağlar. Aşağıdaki değerleri alabilir.
Sayfa 5 / 30
KONTROLLER - I
End Sub
Sayfa 6 / 30
KONTROLLER - I
End Sub
Ör:
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = False
End Sub
Sayfa 7 / 30
KONTROLLER - I
Enabled özelliği False olarak belirlenen bir buton; gri, silik bir görünüm alır.
Flatappearance: Flatstyle özelliği Flat olarak seçildiğinde aktif olur. Butonun kenar
çizgilerinin rengi ve kalınlığı ile imleç buton üzerine getirildiğinde ve tıklandığı anda butonun
renginin seçilmesini sağlar.
Font: Butonun üzerine yazılacak yazının tipi ve boyutu Font penceresinden düzenlenir.
Font özelliği birçok alt özellik taşır. Bunlardan bazıları en sık kullanılan özelliklerdir
Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.
Ör:
Public Class Form1
End Sub
[Link] = [Link]
İmage: Butonun arka planına resim eklememizi sağlar. Ancak burada birkaç durum vardır.
Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
Sayfa 9 / 30
KONTROLLER - I
Not: BackgroundImage duvar kağıdı gibidir, tüm arka planı kaplar. Arka plan için desenler
veya tam resimler kullanmalısınız. Sadece bir simge göstermeye çalışıyorsanız [Link]
kullanın [Link] özelliği düğme denetiminde görüntülenen görüntüdür.
BackgroundImage denetimin arka planında görüntülenecek görüntüyü temsil eden bir
görüntüdür. Bu sayede bir BackgoundImage ve bir [Link] ayarlayabilirsiniz.
[Link], BackgroundImage'ın üstüne yerleştirilecektir
Location: Butonun form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
Padding: Butonun sol, sağ, üst ve alt kenarlardan ne kadar boşluk bırakılacağını belirler.
Tabindex: Butonun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken Tab tuşuna
bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)
Sayfa 10 / 30
KONTROLLER - I
Textimagerelation: Buton üzerinde gösterilecek metin ile resmin birbirlerine göre öncelik
sıralasının seçilmesini sağlar
Usemnemonic: Alt tuşu ile birlikte basılacak karakteri belli etmek üzere karakterin altı çizili
çıkmasını sağlar. Bunun için & (ampersand) karakterinin kullanılması gerekir.
End Sub
OLAYLAR
NOT Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları
okumayı kolaylaştırır. Yorum satırları tek tırnak ' ile başlayarak yazılmalıdır.
' MsgBox metodu ile kullanıcıya Merhaba diyoruz.
' Now özelliği ile o andaki saat ve gün
' değerlerini de kullanıcıya gösteriyoruz.
Sayfa 11 / 30
KONTROLLER - I
End Sub
Backcolorchanged: Butonun arka plan rengi değiştirildiğinde meydana gelir.
Gotfocus: butona odaklanıldığında meydana gelir
Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
i = i + 1
[Link] = i
End Sub
Leave: buton odaklılığını kaybettiğinde meydana gelir
Keydown: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır
Keypress: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır
End If
End Sub
Keyup: Butona odaklanıldığında (buton aktif iken) klavyeden basılan bir tuştan parmağımızı
çekme olayıdır.
End Sub
i = i + 1
[Link] = i
End Sub
End Class
Sayfa 12 / 30
KONTROLLER - I
arasındaki fark şudur: mousedown olayı Mouse butonuna basıldığı anda gerçekleşir. Click
olayının gerçekleşmesi için ise Mouse butonunun basıldıktan sonra bırakılması gerekir.
Hem mousedown hem de mouseclick olayları birlikte kullanılmışsa önce Mousedown sonra
Mouseclick olayları tetiklenir.
Mousehover: fare imleci Buton üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.
End Sub
Mousewheel: Buton üzerindeyken; fare tekeri çevrildiğinde meydana gelir.
Private Sub Button1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles
[Link]
i = [Link] / 120 + i
[Link] = i
End Sub
Dim i As Integer
Dim w As Integer
i = i + 1
[Link] = i
End Sub
End Class 'Form1
Sayfa 13 / 30
KONTROLLER - I
Ör:
Textbox1 ve Textbox2 metin kutularına 2 sayı girilecek (textbox1 [Link]ı textbox2 2. sayı
olacak). Topla adlı butona basıldığında textbox1 ile textbox2 toplanacak, Çıkar adlı butona
basıldığında textbox1’den textbox2 çıkarılacak ve her iki durumda da sonuç textbox3’e
yazılacak.
Yukarıda belirtilen işleri yapan bir program yazın.
LABEL (ETİKET)
Label genelde form üzerine sabit yazılar yazarak kullanıcıyı bilgilendirmek için kullanılan
kontroldür. Genellikle diğer kontroller ile ilgili bilgi vermek için kullanılır.
ÖZELLİKLER
Autosize: Form üzerine bir etiket yerleştirildiğinde etiket üzerinde görüntülenecek
yazının büyüklüğüne göre etiketin boyutu Mouse ile belirlenir. Etiket üzerinde
görüntülenecek yazının etiket boyutundan büyük olduğu durumlarda yazının sadece etiket
boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu durumu ortadan kaldırmak için
etiketin autosize özelliği true olarak düzenlenir.
[Link] = True
Sayfa 14 / 30
KONTROLLER - I
End Sub
Cursor: Farenin label üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Sayfa 15 / 30
KONTROLLER - I
[Link] = [Link]
İmage: label için resim eklememizi sağlar. Ancak burada birkaç durum vardır. Özelliğin
üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.
Sayfa 16 / 30
KONTROLLER - I
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
End Sub
Location: label’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
Sayfa 17 / 30
KONTROLLER - I
[Link] = 150
[Link] = 200
End Sub
Örnek:
Metin kutusuna yazılan metinlerin butona tıklandığında etiketin text özelliğine aktaran
bir program yazın
Sayfa 18 / 30
KONTROLLER - I
Örnek:
Metin kutusuna yazılan metinleri button1 butonuna tıklandığında; label1 etiketinin text
özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Arial, yazı büyüklüğünü 50 ve yazı
rengini kırmızı yapan;
Metin kutusuna yazılan metinleri Button2 butonuna tıklandığında; label2 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini times new roman, yazı büyüklüğünü
50 ve yazı rengini mavi yapan;
Metin kutusuna yazılan metinleri Button3 butonuna tıklandığında; label3 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Tahoma, yazı büyüklüğünü 50 ve
yazı rengini sarı yapan bir program yazın
ÖZELLİKLER
Text: Metin kutusuna program içinden bilgi yazdırmak veya dışarıdan kullanıcının
girdiği bilgileri okumak için kullanılır
Örneğin
[Link] = “Bu kısma adınızı yazınız”
Kodu textbox1 isimli metin kutusuna örnekte gösterilen metni yazar.
Bilgi=[Link]
Sayfa 19 / 30
KONTROLLER - I
Yukarıda gösterildiği gibi kullanıcı tarafından metin kutusuna girilen bilgiler de bir
değişkene atanarak kullanılır. Yukarıdaki dizilime göre Textbox1 isimli metin kutusuna
yazılan değer bilgi adlı değişkene aktarılır.
Değişken metin
İsmi kutusunun
ismi
[Link] = isim
Ör:
Kullanıcı dışarıdan Textbox1 adlı metin kutusuna ismini girecek ve butona tıklanınca
bu isim mesaj kutusu (msgbox) ile ekranda görüntülenecek. Bu işleri yapan programı yazın
Proje için form tasarımı aşağıdaki gibidir
Sayfa 20 / 30
KONTROLLER - I
Name: Metin kutusunun ismini değiştirmek için kullanılır. Metin kutularına ne iş için
kullanıldıklarını hatırlatacak nitelikte isimler verilmelidir. Kodlama işlemini yaparken
kontrolün sadece isminden tanınabilmesi gerekir. Aksi halde zaman kaybına neden olur.
Acceptstab: çok satırlı metin kutularında (multiline özelliği true olduğunda) Tab tuşuna
basınca bir sonraki denetime geçmek yerine bir sekme boşluğu bırakılmasını sağlar.
[Link] = [Link]
Sayfa 21 / 30
KONTROLLER - I
Cursor: Farenin textbox üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Sayfa 22 / 30
KONTROLLER - I
Enabled: Metin kutusuna veri girişi yapılıp yapılmayacağını belirler. Ancak kodla yapılan
girişler kullanılabilir. Enabled özelliği False olarak belirlenmiş metin kutusuna giriş yapılmaz.
Ör:
Textbox1. Enabled = True
Textbox1. Enabled = False
Font: Metin kutusunun üzerine yazılacak yazının tipi ve boyutu Font penceresinden
düzenlenir.
Font penceresi tüm kontroller için ortaktır.
Ör:
Public Class Form1
Private Sub Button1_Click(ByVal sender As [Link], ByVal e
As [Link]) Handles [Link]
Dim fac As String
fac = "arial"
[Link] = New Font("times new roman", 16, _
[Link], [Link])
End Sub
End Sub
End Class
Forecolor: Bu özellik metin kutusu üzerindeki yazı rengini belirlemek için kullanılır.
[Link] = [Link]
Location: metin kutusunun form üzerindeki konumunu belirler. İlk sayı formun sol
kenarından uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link] = [Link] + 20
End Sub
Locked: True olarak seçildiğinde, tasarım anında, metin kutusunun taşınması ve boyutlarının
değiştirilmesini kilitler. Bu durumu bildirmek üzere denetimin sol üst köşesinde bir anahtar
simgesi belirir.
multiline: metin kutusuna girilecek yazının çok satırlı olmasını sağlar. Değeri true olarak
ayarlandığında metin girilirken enter tuşuna basıldığında bir sonraki satıra geçilir.
Passwordchar: Şifre karakteri belirlenmesini sağlar. Metin kutusuna yazılan karakterler şifre
karakteri olarak belirlenen karakter olarak gösterilir. Tek satırlı metin kutularında geçerlidir.
Sayfa 24 / 30
KONTROLLER - I
Scrollbars: Çok satırlı (multiline özelliği true olan) metin kutularında yatay, dikey veya hem
yatay hem de dikey kaydırma çubuklarının görünmesini sağlar. Wordwrap özelliği true
olduğunda yatay kaydırma çubuğu eklenmez.
Tabindex: Metin kutusunun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken
Tab tuşuna bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)
OLAYLAR
Sayfa 25 / 30
KONTROLLER - I
End If
End Sub 'textBox1_Enter
End Sub
End Class 'Form1
METOTLAR
Sayfa 26 / 30
KONTROLLER - I
Ör:
Sayfa 27 / 30
KONTROLLER - I
[Link]()
[Link]()
End Sub
End Sub
Undo: metin kutusu üzerinde en son yapılan işlemlerin geri alınmasını sağlar.
End Sub
Örnek: Metin kutusuna bir tam sayı girilsin ve butona tıklandığında 1’den bu sayıya kadar
olan tam sayıların toplamını çıktı kutusunda görüntüleyin.
Sayfa 28 / 30
KONTROLLER - I
Örnek: Textbox’taki değer değiştiğinde msgbox ile ekrana “Değer Değişti” şeklinde mesaj
veren bir program yazın.
Örnek: Textbox’tan şifre girilsin ve şifrenin doğru olup olmadığı test edilsin. Doğruysa
form üzerineki label1’e doğru şifre, yanlışsa yanlış şifre yazılsın. (Şifre “TARSUS” olsun)
Sayfa 29 / 30
KONTROLLER - I
Ör:
Text1 adlı metin kutusuna 0-100 arasında sayı girilecektir. Bu aralık dışında sayı girilirse
msgbox ile “sayı 1-100 arasında olmalı” şeklinde mesaj veren bir program yazın
Yol gösterme: (textchanged olayını kullanarak yapabilirsiniz)
Sayfa 30 / 30
KONTROLLER - I
Arabirim programın kullanıcıya görünen yüzüdür. Diğer bir deyişle arabirim program
kodları ile kullanıcı arasındaki iletişimi sağlar. Bu nedenle arabirim oluşturmak kod yazmak
kadar önemlidir. Ne kadar çok ne kadar güzel kod yazarsanız yazın kullanıcı bu kodlardan
arabirim sayesinde yararlanabilir. Buda demek oluyor ki kötü bir arabirim kodların yeterince
kullanılamaması anlamına gelir.
Özellikler
(properties)
GENEL BİLGİLER
Sayfa 1 / 19
KONTROLLER - I
BUTONLAR (BUTTONS)
En çok kullanılan denetimlerdendir. Dolayısıyla hemen her Windows uygulamasında
kullanılmaktadır. Butonlar, düğme şeklinde genellikle tıklanarak kullanılan denetimlerdir.
Kullanıcı programa bir işlem yaptırmak istediğinde ilgili butonu tıklatır. Geri planda yer alan
VB kodu devreye girerek çalışır. Butonlar sayesinde programla etkileşim kolay bir şekilde
sağlanmış olur.
BUTON ÖZELLİKLERİ
Anchor: butonun form üzerindeki yerinin yukarı (top), aşağı (bottom), sol (left) ve sağ (right)
kenarlarından birine sabitlenmesini sağlar. Örneğin butonun anchor özelliği bottom olarak
seçilmişse, buton alt kenarından sabitlenir. Formun alt kenarı ile buton arasındaki mesafe hep
sabit kalır. Buton aşağı yukarı doğru büyütülüp küçültülse bile bu mesafe değişmez.
Name Özelliği: Form üzerine bir buton yerleştirdiğinizde Visual Basic butonun ismini
otomatik olarak button1 olarak belirler. Siz name özelliğinden butonun ismini
değiştirebilirsiniz. Butonları isimlendirirken ismin başına o kontrolün bir buton olduğunu
belirten btn harfleri eklenir. btnbasla veya btnbitir gibi.
[Link] = "abc"
AutoEllipsis: Butonun text özelliğine yazılan metin butonun boyutlarından fazla olunca
görünmeyen kısmı belli etmek üzere elips (…) işaretinin çıkıp çıkmayacağını belirtir. True
veya false değerini alır. True değeri elips (…) işaretinin çıkacağını belirtir.
Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız butonun boyutundan büyük olsun. Eğer autosize özelliği true ise buton o
yazının uzunluğu kadar otomatik olarak genişler.
Sayfa 2 / 19
KONTROLLER - I
Backcolor
Butonun arkaplan renginin belirlenmesinde kullanılır.
[Link] = [Link]
Backgroundimage: butonun arka planına resim eklememizi sağlar. Ancak burada birkaç
durum vardır. Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza
çıkar. Bu butona tıkladığımızda aşağıdaki pencere açılır.
Sayfa 3 / 19
KONTROLLER - I
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
None: resmin hangi kısmı butona geliyorsa o kısmı butona eklenir. Yani resmin boyutu kadar
eklenir.
Tile: resim yan yana ve üst üste eklenir. butonun boyutu artırıldığında bu durum görülür.
[Link] = [Link]
Sayfa 4 / 19
KONTROLLER - I
Cursor: Farenin buton üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Dialogresult: modal veya dialog şeklinde gösterilen formlarda, butona tıklandığı anda ana
forma gönderilecek değerin seçilmesini sağlar. Aşağıdaki değerleri alabilir.
Sayfa 5 / 19
KONTROLLER - I
End Sub
Sayfa 6 / 19
KONTROLLER - I
End Sub
Ör:
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = False
End Sub
Sayfa 7 / 19
KONTROLLER - I
Enabled özelliği False olarak belirlenen bir buton; gri, silik bir görünüm alır.
Flatappearance: Flatstyle özelliği Flat olarak seçildiğinde aktif olur. Butonun kenar
çizgilerinin rengi ve kalınlığı ile imleç buton üzerine getirildiğinde ve tıklandığı anda butonun
renginin seçilmesini sağlar.
Font: Butonun üzerine yazılacak yazının tipi ve boyutu Font penceresinden düzenlenir.
Font özelliği birçok alt özellik taşır. Bunlardan bazıları en sık kullanılan özelliklerdir
Name: Yazı tipinin ismini belirler. Varsayılan durumda Microsoft Sans Serif seçilidir.
Ör:
Public Class Form1
End Sub
[Link] = [Link]
İmage: Butonun arka planına resim eklememizi sağlar. Ancak burada birkaç durum vardır.
Özelliğin üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
Sayfa 9 / 19
KONTROLLER - I
Not: BackgroundImage duvar kağıdı gibidir, tüm arka planı kaplar. Arka plan için desenler
veya tam resimler kullanmalısınız. Sadece bir simge göstermeye çalışıyorsanız [Link]
kullanın [Link] özelliği düğme denetiminde görüntülenen görüntüdür.
BackgroundImage denetimin arka planında görüntülenecek görüntüyü temsil eden bir
görüntüdür. Bu sayede bir BackgoundImage ve bir [Link] ayarlayabilirsiniz.
[Link], BackgroundImage'ın üstüne yerleştirilecektir
Location: Butonun form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
Padding: Butonun sol, sağ, üst ve alt kenarlardan ne kadar boşluk bırakılacağını belirler.
Tabindex: Butonun TAB tuşu sırasının ayarlanmasını sağlar. Form üzerinde iken Tab tuşuna
bastıkça, Tabindex değerine göre bir sonraki denetim seçilir (aktif olur)
Sayfa 10 / 19
KONTROLLER - I
Textimagerelation: Buton üzerinde gösterilecek metin ile resmin birbirlerine göre öncelik
sıralasının seçilmesini sağlar
Usemnemonic: Alt tuşu ile birlikte basılacak karakteri belli etmek üzere karakterin altı çizili
çıkmasını sağlar. Bunun için & (ampersand) karakterinin kullanılması gerekir.
End Sub
OLAYLAR
NOT Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları
okumayı kolaylaştırır. Yorum satırları tek tırnak ' ile başlayarak yazılmalıdır.
' MsgBox metodu ile kullanıcıya Merhaba diyoruz.
' Now özelliği ile o andaki saat ve gün
' değerlerini de kullanıcıya gösteriyoruz.
Sayfa 11 / 19
KONTROLLER - I
End Sub
Backcolorchanged: Butonun arka plan rengi değiştirildiğinde meydana gelir.
Gotfocus: butona odaklanıldığında meydana gelir
Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
i = i + 1
[Link] = i
End Sub
Leave: buton odaklılığını kaybettiğinde meydana gelir
Keydown: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır
Keypress: Butona odaklanıldığında (buton aktif iken) klavyeden bir tuşa basılması olayıdır
End If
End Sub
Keyup: Butona odaklanıldığında (buton aktif iken) klavyeden basılan bir tuştan parmağımızı
çekme olayıdır.
End Sub
i = i + 1
[Link] = i
End Sub
End Class
Sayfa 12 / 19
KONTROLLER - I
arasındaki fark şudur: mousedown olayı Mouse butonuna basıldığı anda gerçekleşir. Click
olayının gerçekleşmesi için ise Mouse butonunun basıldıktan sonra bırakılması gerekir.
Hem mousedown hem de mouseclick olayları birlikte kullanılmışsa önce Mousedown sonra
Mouseclick olayları tetiklenir.
Mousehover: fare imleci Buton üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.
End Sub
Mousewheel: Buton üzerindeyken; fare tekeri çevrildiğinde meydana gelir.
Private Sub Button1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles
[Link]
i = [Link] / 120 + i
[Link] = i
End Sub
Dim i As Integer
Dim w As Integer
i = i + 1
[Link] = i
End Sub
End Class 'Form1
Sayfa 13 / 19
KONTROLLER - I
Ör:
Textbox1 ve Textbox2 metin kutularına 2 sayı girilecek (textbox1 [Link]ı textbox2 2. sayı
olacak). Topla adlı butona basıldığında textbox1 ile textbox2 toplanacak, Çıkar adlı butona
basıldığında textbox1’den textbox2 çıkarılacak ve her iki durumda da sonuç textbox3’e
yazılacak.
Yukarıda belirtilen işleri yapan bir program yazın.
LABEL (ETİKET)
Label genelde form üzerine sabit yazılar yazarak kullanıcıyı bilgilendirmek için kullanılan
kontroldür. Genellikle diğer kontroller ile ilgili bilgi vermek için kullanılır.
ÖZELLİKLER
Autosize: Form üzerine bir etiket yerleştirildiğinde etiket üzerinde görüntülenecek
yazının büyüklüğüne göre etiketin boyutu Mouse ile belirlenir. Etiket üzerinde
görüntülenecek yazının etiket boyutundan büyük olduğu durumlarda yazının sadece etiket
boyutuna sığan kısmı görüntülenir. Diğer kısımları kesilir. Bu durumu ortadan kaldırmak için
etiketin autosize özelliği true olarak düzenlenir.
[Link] = True
Sayfa 14 / 19
KONTROLLER - I
End Sub
Cursor: Farenin label üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Sayfa 15 / 19
KONTROLLER - I
[Link] = [Link]
İmage: label için resim eklememizi sağlar. Ancak burada birkaç durum vardır. Özelliğin
üstüne bir kere tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona
tıkladığımızda aşağıdaki pencere açılır.
Sayfa 16 / 19
KONTROLLER - I
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
End Sub
Location: label’ın form üzerindeki konumunu belirler. İlk sayı formun sol kenarından
uzaklığı (left), ikinci sayı formun üst kenarından uzaklığı (Top) verir.
Sayfa 17 / 19
KONTROLLER - I
[Link] = 150
[Link] = 200
End Sub
Örnek:
Metin kutusuna yazılan metinlerin butona tıklandığında etiketin text özelliğine aktaran
bir program yazın
Sayfa 18 / 19
KONTROLLER - I
Örnek:
Metin kutusuna yazılan metinleri button1 butonuna tıklandığında; label1 etiketinin text
özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Arial, yazı büyüklüğünü 50 ve yazı
rengini kırmızı yapan;
Metin kutusuna yazılan metinleri Button2 butonuna tıklandığında; label2 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini times new roman, yazı büyüklüğünü
50 ve yazı rengini mavi yapan;
Metin kutusuna yazılan metinleri Button3 butonuna tıklandığında; label3 etiketinin
text özelliğine aktaran, aktarılan yazıyı koyu, yazı tipini Tahoma, yazı büyüklüğünü 50 ve
yazı rengini sarı yapan bir program yazın
Sayfa 19 / 19
DÖNGÜLER
Döngüler belli bir program kodunun tekrar tekrar çalışmasını sağlar. Şarta bağlı ve şarta bağlı
olmayan şekilde döngü türleri bulunmaktadır.
Bir işlemin kullanılır. Bir işlemin belli bir sayı kadar tekrarlandığı durumlarda kaç kez
yapılacağı ya da tekrarlanacağı biliniyorsa uygulanır. Şarta bağlı değildir.
For döngü değişkeni [as veri tipi]= başlangıç to bitiş [step artırım]
İfadeler1
[exit for]
İfadeler2
Next döngü değişkeni
Yukarıdaki ifadede döngü değişkeni sayaç görevi görür ve döngünün kaç kez yapılacağını
belirtir. Döngü her tekrarlandığında sayaç değişkeninin değeri artırım miktarı kadar artar (
step parametresi kullanılmazsa 1 artar.). döngü değişkeni program içerisinde daha önce
tanımlanmamışsa döngü içerisinde as anahtar sözcüğü ve veri tipi belirtilerek tanımlanabilir.
Bu şekilde tanımlanan değişken sadece döngü içerisinde kullanılabilir. Döngü dışında
kullanılamaz. Başlangıç döngü değişkeninin başlangıç değerini, bitiş döngü değişkeninin bitiş
değerini tutar. Döngü başlangıç değerinden başlar, her döngü bitişinde artırım miktarı kadar
artarak
bitiş değerine ulaşıncaya kadar tekrar eder.
For Next döngü yapısının çalışma prensibi aşağıda adımlar halinde açıklanmıştır.
1. programın çalışması for deyimine geldiğinde döngü değişkeni başlangıç değerini alır.
2.2 döngü değişkeninin değeri bitiş değerinden küçük ya da eşitse döngü içindeki
yapılacak işlemler yapılır ve programın çalışması Next satırına geçer.
2.3 Döngü değişkeninin o anki değeri bitiş değerinden büyükse döngüden çıkılır ve
programın çalışması Next deyiminden sonraki kod satırından itibaren devam eder.
3 Programın çalışması next deyimine geldiğinde döngü değişkeninin değeri artırım kadar
artırılır ve 2.1 adımına dönülür.
For i=1 to 44
Msgbox i
Next i
Bu üç satırlık kod ekrana 44 kez mesaj kutusu içinde sırayla 1 den 44 e kadar olan sayıları
yazdırmaya yetecektir. İ değişkeninin değeri döngünün her işleyişinde 1 artar.
basla = Val([Link])
bitir = Val([Link])
End Sub
End Class
Ör:
For i= 1 to 80 step 2
Msgbox “bu aralıktaki deyimler 40 defa yorumlanır”
Next i
Döngüde i sayacı 1 den 80 e kadar 2’şer 2’şer sayacaktır. Bu durumda döngü 80 defa değil
40 defa yorumlanacaktır.
End Sub
End Class
Ör:
For i=1 to 4
For j=1 to 6
For k=1 to 2
.
.
.
Deyimler
.
.
.
Next k
Next j
Next i
Örnek: n sayısı pozitif bir tamsayı olmak üzere n değeri girdi kutusundan girildiğinde 1
den n e kadar olan tamsayıların toplamını hesaplayan ve sonucu çıktı kutusunda gösteren
bir programı for next döngü yapısını kullanarak yazın.
DO…LOOP DÖNGÜSÜ
Do… loop döngüsü For…next döngüsü ile birlikte en sık kullanılan döngüdür. Bu döngü
türünde For…next döngüsündeki gibi döngünün kaç kez icra edileceğinin bilinmesi
gerekli değildir.
Dizilim I
Do
Deyimler
.
.
.
Loop
Bu tür kullanımda herhangi bir durum belirtilmez ve döngü Ctrl + alt + Delete tuşlarıyla
durduruluncaya kadar durmadan tekrar eder.
Ör:
Loop
End Sub
End Class
Dizilim II
Do while şart
Deyimler
.
.
.
Loop
Visual Basic, döngü başındaki do while satırında belirlenen şartı test eder ve durumun
doğruluğuna göre döngüyü yorumlar veya atlar
Ör:
Do while A<18
‘ A Değişkeni 18’den küçük olduğunda döngü yorumlanır
Loop
Ör:
Public Class Form1
Loop
End Sub
End Class
WHİLE PARAMETRESİNİN KULLANIMI
Dizilim I
Do while durum
Deyimler
.
. Şart döngü başında test edilir.
.
Loop
Dzilim II
Do
Deyimler
.
. Şart döngü sonunda test edilir.
.
Loop While Durum
Örnek:
Do While sayı<1000
Sayı=sayı+1
Loop
Do
Sayı=sayı+1
Loop while sayı<1000
Şartın Döngünün başında ya da sonunda test edilmesi bazı farklılıklar yaratır.
Ör:
1
A=2
Do
msgbox “döngü yorumlandı”
Loop while A=9
2
A=2
do while A=9
msgbox “döngü yorumlanmadı”
loop
1. örnekte döngü 1 kez yapılır (Şart döngü sonunda test edildiği için) 2. örnekte ise
döngüye hiç girilmez. ( Şart başta test edildiği için)
Dizilim I
Do until durum
Deyimler
.
.
.
Loop
Dizilim II
Do
Deyimler
.
.
.
Loop until durum
Örnek
Do until i<99
Loop
Ör:
İ=1
Do until i>5
‘i değişkeni 5 ten küçük olduğu sürece döngüyü yorumla
İ=i+1
Loop
Şimdi biri while, diğeri until parametresi ile yazılmış, aynı işi yapan iki döngü yazalım.
1
i=0
do until i>44
‘ i 44 den büyük olana kadar döngüyü yorumlar
İ=i+1
loop
2
İ=0
Do while i<=44
‘ i 44 den küçük veya eşit olduğu sürece yorumlar
İ=i+1
Loop
Burada karşılaştırma operatörlerinden birinin “>” diğerinin “<=” olduğuna dikkat edin.
Ör:
N sayısı bir tam sayı olmak üzere n değeri girdi kutusundan girildiğinde 1 den n e kadar olan
tamsayıların toplamını hesaplayan ve sonucunu çıktı kutusunda gösteren bir VB programını
Do while Loop döngü yapısını kullanarak yazınız.
Tamamlanmamış bir döngü içerisinden exit ifadesi kullanılarak anında çıkılabilir. Derleyici
exit ifadesi ile karşılaşınca derhal döngüyü sonlandırır. For döngüsünden çıkmak için Exit
For, Do döngüsünden çıkmak için Exit Do ifadeleri kullanılır.
Ör:
Public Class Form1
Ör:
Public Class Form1
Dim s As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
s = 0
Do While s < 15
s = s + 1
MsgBox("sayacın değeri= " & s)
If s = 5 Then Exit Do
Loop
End Sub
End Class
Öyle durumlar olur ki döngü sonuna gelmeden döngü değişkeninin değerini artırarak
döngü başına dönmek gerekebilir. Bunun için “continue for” ve “continue do” ifadeleri
kullanılır.
Ör:
Loop
End Sub
End Class
Ör:
Public Class Form1
Dim s As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
For s = 1 To 15
Next
End Sub
End Class
Ör:
Public Class Form1
Dim i, j, t As Byte
Private Sub Button1_Click(ByVal sender As [Link],
ByVal e As [Link]) Handles [Link]
t = 0
For i = 1 To 4
MsgBox("dış döngüye girildi " & i)
For j = 1 To 2
t = t + 1
MsgBox("iç döngüye girildi dış döngü= " & i &
" iç döngü= " & j)
Next j
Next i
MsgBox("döngülerden çıkıldı. iç döngü " & t & " kez
yapıldı")
End Sub
End Class
Örnek2: İki kişi arasında oynanabilecek basit bir sayı bulma oyunu hazırlayalım. Birinci
oyuncu programa sabit bir sayı olarak 1 ile 100 arasında bir değer girecek ve girilen bu değer
ikinci oyuncu tarafından görülmeyecektir. Oyunun esas öğrencisi ikinci oyuncudur. İkinci
oyuncu 1 ile 100 arasında bir sayı girerek birinci oyuncunun girdiği sayıyı tahmin etmeye
çalışacaktır. İkinci oyuncunun girdiği değerler birinci oyuncunun girdiği değerden büyük,
küçük veya eşit olabilir. Bu üç farklı duruma göre program çıktı kutusunda ‘girilen Büyüktür’,
‘Girilen Küçüktür’ ya da ‘Tebrikler Bildiniz’ Mesajı gösterilecektir. İkinci oyuncu en fazla 5
deneme yapabilecektir. İkinci oyuncu 5 denemede birinci oyuncunun girdiği değeri bilirse
oyunu kazanacak diğer durumda oyunu kaybedecektir. Çıktı kutusunda ‘üzgünüm oyunu
kaybettiniz’ mesajı gösterilecek ve oynama hakkı diğer oyuncuya geçecektir. Tüm bu
işlemleri düzenleyen bir program yazın.
KONTROL DEYİMLERİ
İF…THEN…ELSE…
Programın çalışmasını bir koşula bağlı olarak bir yerden programın başka bir yerine
yönlendirmek için kullanılır.
Bir kaç değişik kullanım şekli vardır.
Koşul doğru (true) olduğunda ifade1 yapılır ve programın çalışması bir sonraki kod satırından
itibaren devam eder. Koşul yanlış ise ifade1 yapılmaz ve programın çalışması bir sonraki kod
satırından itibaren devam eder.
Koşul doğru (true) olduğunda ifade1 yanlış (False) olduğunda ifade2 yapılır ve programın
çalışması bir sonraki kod satırından itibaren devam eder.
Kural olarak if – then – else ifadelerinin end if ile bitirilmesi gerekir. Ancak yukarıdaki
örneklerde olduğu gibi, koşullu ifade içeren kod yalnızca bir satır (bir komut) ise end if
kullanılmayabilir. VS akıllı kod editörü, then yazdıktan sonra enter tuşuna basarak bir alt
satıra geçince otomatik olarak end if ifadesini ekler.
İf seçim=”E” then
msgbox “seçim değişkenine atanan değer E olduğunda”
msgbox “Buradaki deyimler yorumlanır”
Msgbox (x)
Else
msgbox “seçim < > E ise”
msgbox “buradaki deyimler yorumlanır”
End if
İf – then – else koşullu ifadesinin üçüncü kullanım şeklinde, iç içe birden fazla koşullu ifade
yer almaktadır. Bir şart sağlanmadığında başka bir şarta bakılmaktadır. Bu kullanım biçimi
aşağıda gösterilmiştir.
İf şart then
İfadeler1
Elseif şart2 then
İfadeler2
Elseif şart3 then
İfadeler3
Else
Else-ifadeleri
End if
Bu kullanım biçimini kullanırken dikkatli olmak zorundayız. İç içe geçmiş birden fazla şart ve
ifade olacağından bunların yeri önemlidir.
Ör:
sayi = Val([Link])
End Sub
End Sub
Örnek3: Üç Tam sayı form Üzerindeki metin kutularından girildiğinde bu sayıları küçükten
büyüğe doğru sıralayan ve sonucu form üzerindeki metin kutularında gösteren bir program
yazınız. En büyük sayı textbox1’de en küçük sayı textbox3’de olsun
SELECT CASE
Select case ifadesi de if – then – else ifadesi gibi bir koşullu ifadedir. Şartlar ikiden fazla
olduğunda select case ifadesinin kullanılması daha uygun olur. Bu şekilde kod daha rahat
okunabilir olur.
Genel yazılım şekli:
Case ifade
Yorumlanacak deyimler
…
End select
Dizilimde görülen select case durum satırında bir durum belirlenir. Bu durum hangi case
ifadesi ile eşleşirse onun altındaki deyimler icra edilir ve select case ifadesinin dışına çıkılır.
Eğer belirlenen durumu hiçbir ifade satırı sağlamazsa dallanma case else ifade satırına olur.
Ör:
Case 12 To 20
[Link] = "x*y işleminin sonucu 12-20 arasındadır"
Case Is > 20
[Link] = "x*y işleminin sonucu 20 den büyüktür"
Case Else
[Link] = "x*y işleminin sonucu hiç biri değil"
End Select
End Sub
End Class
Örnek:
A=4
B=9
Select case a+b
Case 13
[Link] = “toplamları 13 e eşit”
Case is>44
[Link] = “toplamları 44 den büyük”
End select
Örnek:
A=7
B=10
Select case a+b
Case 13
[Link] = “toplamları 13 e eşit”
Case 10 to 20
[Link] = “toplamları 10-20 arasındadır”
End select
Ör:
Select case sayi
Case 0
Msgbox (“girilen sayı sıfır”)
Case 1,2,3,50,32
Msgbox (“girilen sayı 1, 2 veya 3”)
Case 4 to 44
Msgbox (“girilen sayı 4-44 arasında”)
Case else
Msgbox (“girilen sayı belli değil”)
End select
Ör: Bir kitapevinde çalışan satış temsilcisi sattığı kitap oranında ücret almaktadır. Satış
temsilcisi günlük 100 tl’ye kadarlık kitap satışı için satışın %10 u 100-200 tl arası satışlar için
satışın %20 sini 200 tl den yüksek satışlar için ise satışın %25 ini almaktadır. Buna göre girdi
kutusundan satış miktarı girilen temsilcinin alacağı ücreti hesaplayan ve çıktı kutusuyla
gösteren bir program yazın.
Ör: Girdi kutusundan bir veya iki basamaklı pozitif bir tamsayı girildiğinde bu sayıyı yazı
olarak çıktı kutusunda gösteren bir program yazınız.
Operatörler
1- Matematiksel işlem operatörleri
End Sub
Private Sub Button1_Click(ByVal sender As [Link], ByVal e As
[Link]) Handles [Link]
[Link] = Val([Link]) + Val([Link])
End Sub
Ör: a like b
“ali” like “veli”
x = UCase([Link])
Not
Değişken1 sonuç
False True
True False
And
Değişken1 Değişken2 sonuç
False False False
False True False
True False False
True True True
Or
Değişken1 Değişken2 sonuç
False False False
False True True
True False True
True True True
Xor
Değişken1 Değişken2 sonuç
False False False
False True True
True False True
True True False
Andalso
Değişken1 Değişken2 sonuç
False Kontrol edilmez False
True False False
True True True
Orelse
Değişken1 Değişken2 sonuç
False False False
False True True
True Kontrol edilmez True
İşlem öncelikleri
Aritmetik işlemler
1- Parantez içi ( )
2- Üs alma ^
3- Negatifleme -
4- Çarpma, bölme *,/
5- Tamsayı bölmesi \
6- Kalanı bulma mod
7- Toplama çıkarma +,-
Mantıksal Operatörler
1- Not
2- And
3- Or
4- Xor
DEĞİŞKENLER VE SABİTLER
DEĞİŞKEN TANIMLAMALARI
Örneğin
Dim ad as string
Nokta, noktalı virgül, soru işareti, tek tırnak, çift tırnak, parantez ve boşluk
kullanılmaz.
Atama operatörleri (=), karşılaştırma operatörü (==) ve aritmetik operatörler (<, > v.b.)
kullanılamaz.
[Link] içerisinde değişken isimlerinde büyük küçük harf ayrımı yoktur. ad, AD, Ad,
aD aynı değişkeni temsil eder.
Değişken isminden sonra as terimi kullanır ve sonra değişkenin tipi belirtilir. Tipi
belirtilmeyen değişkenlerin tipi [Link] tarafından aldıkları değerler göre otomatik
belirlenir.
Doğru
Yanlış
2 Değişken isminde boşlık bulunmaz. Bunun yerinde alt çizgi (_) karakteri kullanılabilir.
Doğru
Yanlış
Doğru
Dim satis-tarihi , [Link]
Yanlış
Dim not
Yanlış
Dim and
Yanlış
DEĞİŞKEN TİPLERİ
8 bytes on 64-
bit platform
In scientific notation, "E" refers to a power of 10. So 3.56E+2 signifies 3.56 x 102 or 356, and
3.56E-2 signifies 3.56 / 102 or 0.0356.
Sadece bir karakterden oluşan veriler için char veri tipi tercih edilir (ç,z,a,r,X,Y,0,9,#,+,/ v.b.)
Birden fazla karakterden oluşan metni saklamak için string veri tipi kullanılır.
Char ve string tipte tanımlanan bir değişkene veriler çift tırnak (“ “) içerisinde atanır.
Dim ad as string=”İsmail”
Dim t as char
T=”e”
Doğru/yanlış, var/yok, evet/hayır, açık/kapalı gibi yalnızca iki ihtimalli durumlarda boolean
veri tipi kullanılır. Boolean tipindeki bir değişkenin değeri true veya false olur.
Tarih ve saat bilgilerini tutmak için date veri tipi kullanılır. Date veri tipindeki bir değişkene
tarihler # # karakterleri arasına yazılır.
#11-7-2013#
ÖZEL KARAKTERLERLE DEĞİŞKEN TİPİNİ TANIMLAMA
İnteger Tipi
Veya
Veya
Dim sayı1%
Dim sayı2%
Sayi=18562
Long İnteger:
Veya
Dim toplam&
Dim ortalama!
Double Precision (Çift Hassasiyetli Gerçel Sayı) Tipi:
Dim miktar#
String Tipi:
Dim ad as string
Dim ad$
Decimal Tipi:
Dim tutar@
3. Bir değişkenin projenin tamamında geçerli olması için iki yöntem uygulanabilir:
İnteger tipindeki bir değişkeni bir etikete aktaralım. Bu durumda program hata vermeden
çalışır. Fakat label’ın text özelliği string türdedir. İnteger tipindeki bir değişkeni göstermemesi
gerekirken gösterdi. Bu tip dönüşümü sayesinde oldu. VB bizim yerimize kendi dönüştürmeyi
yaptı. Bu tip dönüştürme kapalı dönüştürme (implicit conversion) adı verilmektedir. VB’nin
bizim yerimize dönüştürme yapıp yapmayacağı bizim tercihimize bırakılmıştır. Option strict
seçeneği ile bu tercihi yapabiliriz. VB’nin bizim yerimize dönüştürme yapmasını istemiyorsak
option strict seçeneğinin değeri on yapılır.
Option explicit seçeneğinde olduğu gibi option strict seçeneği de iki yolla değiştirilebilir:
DÖNÜŞTÜRME FONKSİYONLARI
Değişkenlere atanan verilerde veri tipi uyuşmazlığı olduğunda açık dönüştürme yapıldığında
dönüştürme fonksiyonları kullanılır. Dönüştürme fonksiyonları aşağıdadır.
CBool Boolean Data Type Parametre olarak verilen değeri boolean tipine
dönüştürür. Parametre olarak verilen değer
sıfırdan farklıysa true, sıfır ise false değerini
döndürür
CByte Byte Data Type Parametre olarak verilen 0 ile 255 (unsigned)
arsındaki değeri byte tipine dönüştürür; kesirli
kısım tama yuvarlanır
CDate Date Data Type Parametre olarak verilen geçerli bir tarih veya
saati date tipine dönüştürür.
CDbl Double Data Type Parametre olarak verilen değeri double tipine
dönüştürür
CDec Decimal Data Type Parametre olarak verilen değeri decimal tipine
dönüştürür
CInt Integer Data Type Parametre olarak verilen değeri integer tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CLng Long Data Type Parametre olarak verilen değeri long tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CObj Object Data Type Parametre olarak verilen değeri object tipine
dönüştürür
CSByte SByte Data Type Parametre olarak verilen değeri sbyte tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CShort Short Data Type Parametre olarak verilen değeri short tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CSng Single Data Type Parametre olarak verilen değeri single tipine
dönüştürür
CStr String Data Type Parametre olarak verilen Returns for CStr
depend on the expression argument.
CUInt UInteger Data Type Parametre olarak verilen değeri uinteger tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CULng ULong Data Type Parametre olarak verilen değeri ulong tipine
dönüştürür; kesirli kısım tama yuvarlanır.
CUShort UShort Data Type Parametre olarak verilen değeri ushort tipine
dönüştürür; kesirli kısım tama yuvarlanır.
SABİTLER
İçeriği sabit olan değer ve ifadelerin saklanması amacıyla kullanılırlar. Bir sabitin değeri
uygulamanın çalıştırılması sırasında kesinlikle değiştirilemez. Const deyimi ile tanımlanırlar.
Const pi as single=3.142857143
Cevre=2*pi*yarıcap
Alan=pi*r^2
cevre = 2 * pi * yarıcap
alan = pi * yarıcap ^ 2
[Link] = cevre
[Link] = alan
End Sub
AÇIKLAMA EKLEMEK
Ör:
Dim d as integer=112
FORMLAR (FORMS)
resizebegin: formun boyutları değiştirilmek üzere kenarlıklar üzerinde fare imleci tıklandığı
anda meydana gelir.
Resizeend: formun boyutları değiştirilmek üzere kenarlıklar üzerinde fare imleci tıklanıp
bırakıldığı anda meydana gelir.
Mouseenter
Mousemove
Mousehover / mousedown / mousewheel / mouseclick
Mouseup
mouseleave
FORM METOTLARI
Metotlar, bir denetimin (kontrol), nesne veya sınıfın hazır yordamlarıdır. Yani ait oldukları
denetimler için belli işlevleri gerçekleştirirler. Formun metotları da formun özellikleri ve
olaylarının yönetilmesi için gerekli işlemlerin gerçekleştirilmesini sağlarlar. Örneğin formun
kapatılması gerektiğinde formun kapatma eylemini gerçekleştirecek metodu (close metodu)
çağrılır.
Örnek
Sayfa 1 / 3
FORMLAR (FORMS)
End Sub
End Class
End Sub
Close: formu kapatır.
Ör:
Private Sub Button7_Click(ByVal sender As [Link], ByVal
e As [Link]) Handles [Link]
[Link]()
End Sub
Sayfa 2 / 3
FORMLAR (FORMS)
End Sub
Showdialog: formun diyalog kutusu şeklinde gösterilmesini sağlar. Bu şekilde gösterilen bir
formu kapatmadan diğer formlara geçiş yapılamaz.
Hide: Hide metoduda sık kullanılan metotlardandır. Hide metodu Show metodunun tersine
formun görüntüsünü ekrandan kaldırır. Diğer bir deyişle formu saklar. Hide metoduyla
saklanan form arka planda çalışmasına devam eder.
Sayfa 3 / 3
FORMLAR (FORMS)
Keydown: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır. Yön
tuşları ve kontrol tuşlarına basıldığında da tetiklenir. [Link] metodu ile basılan tuşun kodu
kontrol edilmektedir. Burada istenirse tuşun karakter kodu yazılır ya da aşağıda görüldüğü
gibi [Link]şadı şeklinde tuşun adı belirtilebilir. Eğer kontrol tuşları kullanımı kontol
edilecekse [Link], [Link], [Link] şeklinde kullanılabilir.
Ör1:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]
MsgBox([Link])
End Sub
Ör2:
Örnek
End If
End Sub
Sayfa 1 / 4
FORMLAR (FORMS)
[Link]()
End Sub
Keypress: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır.
[Link] ile basılan tuşun karakter kodu kontrol edilmektedir. Ancak keypress olayında
ALT, ALTGR, CTRL gibi kontrol tuşlarının basıldığını algılayamayız.
Ör 1:
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
MsgBox([Link])
End Sub
Ör:2
End If
End Sub
Keyup: formun keypriew özelliği aktif iken klavyeden basılan bir tuştan parmağımızı çekme
olayıdır.
Mousehover: fare imleci form üzerinde belli bir süre hareketsiz bekletildiğinde meydana
gelir.
Örnek:
[Link] = [Link]([Link])
End Sub
Mousewheel: fare tekeri çevrildiğinde meydana gelir. [Link] değişkeni teker yukarı
çevrildiğinde +120 aşağı çevrildiğinde -120 değerini alır.
Ör1:
Private Sub form1_MouseWheel(ByVal sender As Object, ByVal e
As [Link]) Handles [Link]
[Link] = val([Link])+[Link]
End Sub
Ör2:
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]
End Sub
Sayfa 3 / 4
FORMLAR (FORMS)
Else
[Link] = [Link] -
[Link] * 10 / 100
[Link] = [Link] -
[Link] * 10 / 100
End If
End Sub
Sayfa 4 / 4
FORMLAR (FORMS)
Visual Basic ortamında nesnelere bağlı olaylar programlanır. Kullanıcının form üzerinde
yaptığı eylemlere göre belli olaylar meydana gelir ya da tetiklenir. Tetiklenen bu olayları
denetleyebilmek için olayların yönetilmesi gerekir. Örneğin kullanıcının formu aktif hale
getirmesi, boyutlarını değiştirmesi, form üzerinde iken farenin sol veya sağ düğmelerine
tıklaması, formu kapatması, fare ile form üzerinde dolaşması gibi durumlarda ilgili olaylar
tetiklenir. Formun olaylar karşısındaki davranışını programcı belirler.
Formdaki olayları programlamak yani kod yazmak için kod editörünü açmak gerekir. Bu
editörü solution explorer penceresinden veya özellikleri penceresinde istenilen olay adına çift
tıklayarak açabilirsiniz. Kod editörünü F7 kısayol tuşu ile de açabilirsiniz. Bu editörü
açtığınızda karşınıza kod yazım sayfası gelecektir. Bu sayfanın üst tarafında açılabilir liste
kutuları bulunur (combobox). Sol taraftaki comboda form ve formda bulunan nesneleri
göreceksiniz. Sağ taraftaki comboda ise seçtiğiniz nesneye bağlı programlanabilecek olayların
listesi bulunur.
Kod editörünü bir kez açtıktan sonra sekmelere tıklayarak kod editörü ile tasarım ortamları
arasında geçiş yapabilirsiniz.
Sayfa 1 / 5
FORMLAR (FORMS)
FORM OLAYLARI
Load: Formun yüklenmesi olayı load olayı olarak tanımlanı[Link] ekranda görüntülenmeden
önce üzerinde yapmak istediğiniz düzenlemeleri form_load prosedürüne yazabilirsiniz.
End Sub
End Class
MsgBox(x)
End Sub
End Sub
End Class
Sayfa 2 / 5
FORMLAR (FORMS)
Not: Bir .NET formunun FormClosed ve FormClosing olayı arasında seçim yaparken,
programcılar varsayılan olarak FormClosing olayını kullanmalıdır. FormClosed olayı
kullanılıyorsa ve olay işleyici, form içindeki kontrollere başvuran kodu içeriyorsa, büyük
olasılıkla hata çalışma zamanında oluşturulacaktır. Bunun nedeni, FormClosed olayı
yürütüldüğünde formun zaten atılmış olması ve kontrollerinin ya gitmiş olması ya da çöp
toplama sürecinde olmasıdır. FormClosing olayı, FormClosed olayından önce başlatılır,
böylece form içindeki denetimler hala var olur ve olay işleyicisinde başvurulabilir.
Activated: Activate olayı formun etkin hale gelmesi olayıdır. Run komutuyla uygulama
çalıştırıldığında form yüklendikten sonra activate olayı gerçekleşir. Uygulama içindede çeşitli
metotlarla (activate gibi) activate olayı gerçekleşebilir. Load olayı ise formun yüklenmesi
olayıdır. Load olayı ile activate olayları arasındaki en önemli fark load olayının (formun
yüklenmesi) activate olayından (formun yüklenmesi) daha önce olduğudur.
Deactivate Olayı: Activate olayının tersidir. Bir form etkin halini kaybederse deactivate olayı
gerçekleşmiş olur. Örneğin çalışma alanında iki form bulunsun. Birinci form üzerindeki bir
butondan ikinci form çağrıldığı zaman ikinci form activate birinci form ise deactivate olur.
Windows ile çalışırken defalarca activate ve deactivate olayları gerçekleşir.
End Sub
End Class
Sayfa 3 / 5
FORMLAR (FORMS)
End Class
Ör:
Public Class Form1
End Sub
End Sub
End Class
Backcolorchanged: formun arka plan rengi değiştirildiğinde meydana gelir.
Keydown: formun keypriew özelliği aktif iken klavyeden bir tuşa basılması olayıdır. Yön
tuşları ve kontrol tuşlarına basıldığında da tetiklenir. [Link] metodu ile basılan tuşun kodu
Sayfa 4 / 5
FORMLAR (FORMS)
kontrol edilmektedir. Burada istenirse tuşun karakter kodu yazılır ya da aşağıda görüldüğü
gibi [Link]şadı şeklinde tuşun adı belirtilebilir. Eğer kontrol tuşları kullanımı kontol
edilecekse [Link], [Link], [Link] şeklinde kullanılabilir.
Ör1:
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
[Link]) Handles [Link]
MsgBox([Link])
End Sub
Ör2:
Sayfa 5 / 5
FORMLAR (FORMS)
FORMLAR (FORMS)
Formlar bir Visual Basic nesnesidir. Ve kullanıcı arabiriminin zeminini oluşturur. Diğer
nesneler formlar üzerine yerleştirilerek arabirim oluşturulur.
Bu alan Visual Studio ortamında oluşturduğumuz projelerimiz ile ilgili olarak dosya yönetimi
yaptığımız, yeni item, yeni formlar ekleyebildiğimiz alandır. Yani üzerinde çalışmış
olduğumuz projelerimizin bağlı olduğu tüm dosyalara buradan erişebiliriz.
Her nesnenin kendisine özgü çeşitli özellikleri vardır. Nesnenin rengi, üzerindeki yazıların tipi
ve büyüklüğü, nesnenin biçimi, boyutu ve daha bir çok özellik özellikler penceresinden
düzenlenir. Nesnelerin özellikleri düzenlenmedikçe varsayılan değerler geçerli sayılır.
Çalışma alanında hangi nesne seçilirse, özellikler penceresinde de o nesneye ait özellikler
görüntülenir.
FORM KULLANIMI
Formlar kullanıcı ile iletişimi sağlayan arabirimin zeminini oluşturur. Basit, temel Visual
Basic uygulamalarında tek bir form bulunur. Büyük projelerde ise onlarca form ve modül
kullanılabilir.
Visual Basic çalışma alanına ulaştığınızda karşınızda önceden oluşturulmuş bir form
görüntülenecektir. Bu form kullanıcı arabirimini oluşturmak için bir zemin görevi görür.
Arabirim oluştururken kullanılacak diğer nesneler form üzerine yerleştirilir.
Her nesnenin olduğu gibi formların da isim, boyut, zemin rengi, yazıların rengi ve tipi gibi bir
çok özelliği vardır.
Küçült, büyült ve kapat düğmeleri Windows tabanlı tüm uygulamalardan bildiğimiz,
pencerenin şekillendirilmesinde kullanılan butonlardır.
Form başlığı yine tüm pencerelerde bulunan ve pencerenin ne amaçla kullanıldığını belirten
bir alandır. Bir form ilk oluşturulduğunda başlıkta forma verilen isim form1,form2,form3…
olarak belirir
Form başlığının sol tarafındaki küçük şekil form ikonudur. Bu ikon özellikler penceresinden
değiştirilebilir.
Sayfa 1 / 7
FORMLAR (FORMS)
Tüm nesnelerin olduğu gibi formlarında çeşitli özellikleri vardır. Birçok nesnenin ortak
özellikleri olduğu gibi, her nesnenin kendine özgü çeşitli özellikleri olabilir. Nesnelerin
özellikleri özellikler (Properties) penceresinden düzenlenir. Özellikleri düzenlemenin diğer bir
yoluda kodlamadır. Form görünüm özellikleri, eklenecek kontrollerin (değiştirilmedikleri
sürece) görünümlerini de etkiler. Şimdi çok kullanılan form özelliklerini inceleyelim.
Name: Formun ismi belirlenir. Bu isim formu diğer form ve modüllerden çağırmak için
kullanılacaktır. Nesneler isimlendirilirken nesneye verilecek ismin başına nesne türünü
belirtecek üç harf yazmak kodlama işlemini kolaylaştırır. Örneğin frmiletişim gibi bir
adlandırmada frm harflerinden bunun bir form olduğu kolayca anlaşılacaktır.
Autosize: kontrolün text özelliğine uzunca bir şey yazdığımızı farz edelim ve bu
yazdıklarımız formun boyutundan büyük olsun. Eğer autosize özelliği true ise form o yazının
uzunluğu kadar otomatik olarak genişler.
Sayfa 2 / 7
FORMLAR (FORMS)
Background image: formun arka planına resim eklememizi sağlar. Özelliğin üstüne bir kere
tıkladığımızda şeklinde bir buton karşımıza çıkar. Bu butona tıkladığımızda aşağıdaki
pencere açılır.
Burada iki seçenek vardır: Local Resource ve Project Resource File. Local Resource’a
tıklayıp import butonuna bastığımızda bilgisayarımızdan bir resim eklememiz için
dosyalarımızın bulunduğu kısım açılır. OK diyerek resmi ekleriz. Resmi değiştirmek için ise
öncelikle Local resource kısmındaki clear ile var olan resmi sileriz. Daha sonra yeni resim
ekleriz. Projet resource file kısmında ise yine import ile bir resim ekleriz. Ancak bu resim
bizim projemizde bir klasör içinde saklanır.
Sayfa 3 / 7
FORMLAR (FORMS)
[Link] = [Link]
Cancel Button
Kullanıcı ESC tuşuna bastığında tıklanan düğme kontrolünü alır veya ayarlar.
Örnek: formda button7 cancelbutton olarak ayarlansın. Bu durumda ESC tuşuna basıldığında
click olayındaki kodlar icra edilir.
Cursor: Farenin formunuz üzerinde dolaşırken işaretçisinin değişmesini sağlar. Aşağıda fare
işaretçisinin bazı şekilleri görünmektedir.
[Link] = [Link]
Sayfa 4 / 7
FORMLAR (FORMS)
Bu kodlamaya göre formun Enabled özelliği true olmadığı sürece form ekranda
görüntülenecek ancak kullanılamayacaktır.
Font: Form üzerindeki yazıların biçimini düzenlemek için kullanılır. Yazının tipi, boyutu ve
biçimi bu özellik ile düzenlenir.
Kod:
Forecolor: Bu özellik form üzerindeki nesnelerin yazı rengini belirlemek için kullanılır.
[Link] = [Link]
None: Formun kenarları yoktur. Başlık çubuğu ortadan kalkar. Formun boyutu kullanıcı
tarafından değiştirilemez.
Fixed 3D: forma üç boyutlu görünüm vererek aynı zamanda boyutlarının değiştirilmesini
engeller.
Fixed Dialog: denetim düğmesi (formun simgesi) görünmez. kullanıcı formun boyutunu
değiştiremez.
Fixed Tool Window: formun boyutları değiştirilemez, denetim düğmesi (formun simgesi)
görünmez, ekranı kaplama ve simge durumuna küçültme butonları görünmez. Yalnızca
kapatma butonu aktiftir.
Sizeable Tool Window: Fixed Tool Window seçeneğiyle aynıdır. Fakat kullanıcı formun
boyutunu fare ile değiştirebilir.
FormBorderStyle = [Link]
Sayfa 5 / 7
FORMLAR (FORMS)
FormBorderStyle = [Link].Fixed3D
FormBorderStyle = [Link]
FormBorderStyle = [Link]
FormBorderStyle = [Link]
FormBorderStyle = [Link]
FormBorderStyle = [Link]
İcon: Formunuzun simgesini seçip değiştirebileceğiniz kısımdır (simge formun sol üst
tarafındadır). Bu özelliğin değeri değiştirilmek istendiğinde ICO uzantılı bir dosya yeri
belirlemek için göz at penceresi çıkar. Bu pencereden istenen simge dosyası forma yüklenir.
Keyprewiev: Form üzerinde iken herhangi bir tuşa basıldığında formun keypress veya
keydown olaylarının tetiklenmesini sağlar.
Location: program çalıştırıldığı zaman formun sol üst köşesinin bulunduğu konumu gösterir.
Location özelliğini kullanabilmek için startposition özelliğinin manual değerde olması
gerekir.
[Link] = 0.5
Sayfa 6 / 7
FORMLAR (FORMS)
alt formu gibi formlar için ekranın ortasında veya üst formun merkezinde görüntülenmesini
sağlayabilirsiniz.
Sayfa 7 / 7