G03
Transkript
VISUAL BASIC Visual Studio Ürünleri Microsoft firmasının ürünü olan Visual Studio, aşağıdaki paketlerden oluşmaktadır. İlk iki paket ücretlidir, üçüncü paket ilk iki pakete göre bazı kısıtlamalara sahiptir fakat kayıt (register) olmak şartıyla ücretsiz olarak indirilip kullanılabilmektedir (bir MSN hesabına sahip iseniz, msn kullanıcı ismi ve şifreniz ile Visual Studio Express Edition sürümüne kayıt olabilirsiniz, aksi halde bu ürünü kısıtlı bir sürede kullanabilirsiniz). Visual Studio 2005 Professional Edition Visual Studio 2005 Standard Edition Visual Studio 2005 Express Edition: Not1: Ücretsiz olarak indirilip kurulabildiğinden, bundan sonraki anlatımlar Visual Basic Express Edition esas alınarak yapılacaktır. Not2: Express Editon ile oluşturulan programlar Professional ve Standart Edition sürümlerinde problemsiz çalışabilmektedir. Not3: Şu anda Visual Studio 2010 sürümü kullanımdadır. Anlatacaklarımız açısından 2005 sürümü ile 2010 sürümü arasında herhangi bir fark bulunmamaktadır. Bundan sonra anlatılacaklar 2005 sürümü üzerinde yapılacaktır fakat anlatılanların hepsi 2010 sürümünde de problemsiz kullanılabilir. Visual Studio 2005 Express ürünleri, öğrencilerin, hobi olarak bu işi yapanların ve sektöre yeni girenlerin Microsoft.NET Framework üzerinde programlamayı öğrenebilmeleri için geliştirilmiştir. Express Edition, Windows programları ve dinamik web siteleri yapabilmek için, diğer Visual Studio ürünlerine göre kullanımı kolay olan (kısıtlı) araçları üzerinde bulundurmaktadır. -1- ♦ Web ortamı Visual Web Developer 2005 Express Edition: Bu sürüm, yalnızca web uygulamaları üzerine yoğunlaşmış olup Asp.NET ile birlikte Visual Basic, C#, veya J# dillerinden birini kullanabilirsiniz. ♦ Veritabanı SQL Server 2005 Express Edition: Bu sürüm ile, başlangıç düzeyinde veritabanı uygulamaları geliştirebilirsiniz. ♦ Windows ortamı: Aşağıdaki programlama dillerinden herbiri, windows form uygulamaları (Windows ortamında çalışacak programlar) geliştirmek için kullanılabilirler. Visual Basic 2005 Express Edition Visual C# 2005 Express Edition Visual C++ 2005 Express Edition Visual J# 2005 Express Edition (Java Programlama Dili) .NET Framework Nedir? Bir çok uygulama geliştirme dili ve bu dillerle yazılmış uygulamaları çalıştırmak için ise farklı platformlar vardır. .net Framework, windows tabanlı uygulamalar geliştirebilmek için farklı programlama dillerinin birlikte çalışabileceği ortak bir geliştirme ortamıdır. Bu ortam hem yazılımları geliştirmek hem de çalıştırmak için gereklidir. .net Framework bileşen yönelimli uygulamaların geliştirilmesini ve yürütülmesini destekleyen bir ortam tanımlamaktadır. Bu sayede; farklı programlama dilleri, farklı işletim sistemleri ile çalışabilme özelliğine sahiptir. .net Framework aşağıdaki bileşenlerden oluşur: The Common Language Runtime (CLR), Ortak Dil Çalışma Zamanı: Uygulamaların çalışabilmesi ve yönetilmesine yardımcı olan, dilden bağımsız bir yazılım geliştirme ve çalışma ortamıdır. Programların çalışmasını idare eden, programların taşınabilirliğini sağlayan, aynı zamanda diğer avantajlarının dışında karışık dilde programlamayı destekleyen ve güvenliği sağlayan parçadır. -2- The Framework Class Libraries (FCL), Framework sınıf kütüphaneleri: Framework çatısı altındaki dillerin ortak kullanabilecekleri kütüphaneleri barındırır. .net Framework Özellikleri Standart ağ protokollerine ve standartlarına destek: TCP/IP, SOAP, XML, HTTP gibi standart internet protokolleri ve standartlarına destek verir. Farklı programlama dillerine destek: Programcılara istedikleri dilde geliştirme özgürlüğü sunan .net bünyesinde bir çok programlama dilini barındırır. Farklı dillerde geliştirilen programlama kütüphanelerine destek: .net Framework, farklı dillerde oluşturulmuş programlama dillerinde oluşturulmuş program kütüphanelerine destek verir. Kütüphaneler uygulama geliştirmeyi kolaylaştıran bir kere yazılmış bir program parçasını tekrar tekrar yazmaktan kurtaran yapılardır. Farklı platformlara destek: .net Framework bütün windows platformları için mevcuttur. Farklı bilgi işlem platformlarından insanları, sistemleri ve cihazları birbirine bağlar. Meselâ, Windows XP gibi bir masaüstü platformunu kullanan insanlar veya Windows CE kullanan gezgin bir platformu kullanan insanlar Windows 2003 Server gibi bir sunucu sistemine bağlanabilir. Visual Basic (VB) 2005 Express Edition (VBEE) Visual Basic 2005 Express Edition bir programlama arabirimidir. Kullanıcılar için arayüz geliştirme, kod yazma, yazılan kodun hatalarını ayıklama, derleme vb. fonksiyonlarıyla yazılımcıların çözüm geliştirmelerini sağlar ve Visual Studio 2005 üzerinde çalışır. Profesyonel programcıların program geliştirme yöntemi olarak kullandıkları Nesne Yönelimli Programlamayı tam olarak destekleyen Visual Basic 2005, profesyonel uygulamalar geliştirmek için kullanılan bir dildir. VBEE de bu dilin tüm özelliklerini destekler. Diğer taraftan sihirbazlar, sürükle-bırak, hazır programcıklar ve akıllı etiketler sayesinde çok kısa zamanda, çok daha az kod yazarak başarımı yüksek uygulamalar geliştirmeye zemin sağlar. VB 2008 Express Edition, Microsoft firmasının, http://www.microsoft.com/express/vb/default.aspx internet adresinden şimdilik ücretsiz olarak indirilebilmektedir. -3- İndirilen dosyanın içinde; − VB 2008 Express Edition, − .Net Framework 3.5, − MSDN Express Library 2008, − Microsoft SQL Server 2008 Express Edition bulunmaktadır. Bu programların istenirse hepsi aynı anda bilgisayarınıza kurulabileceği gibi, sadece bir veya birkaçı da, o anda veya daha sonra kurulabilir. VBEE’ı çalıştırabilmek için bilgisayarınızda bulunması gereken asgari şartlar şunlardır: İşlemci: 600 MHz veya daha hızlı (Tavsiye edilen: 1 GHz veya daha hızlı). RAM: Minimum: 192 MB (Tavsiye edilen: 256 MB, eğer VBEE ile birlikte SQL Express yüklendiyse, 512 MB veya daha fazlası). Hard Disk: Sabit diskinizde en az 500 MB. Boş yeriniz olmalı. Tam kurulum: VBEE kurulum programının tamamını (VB 2008 Express Edition, .Net Framework 3.5, MSDN Express Library 2008, Microsoft SQL Server 2008 Express Edition) bilgisayarınıza yüklemek isterseniz, sabit diskinizde 1.3 GB. Boş alana ihtiyacınız olacaktır. Uyarılar : VBEE’nin bilgisayarınızda çalışabilmesi için, .NET Framework 3.5 bilgisayarınıza kurulu olmalıdır. VBEE Hakkında Temel Bilgiler Event (Olay): VB Olay Sürümlü (Event-Driven) bir programlama dilidir. VB’de Olay için tıklama, yazı kutusuna bir harf yazma örnekleri verilebilir. Olay Sürümlü ifadesi, olay işlemi olmadan Windows’un hiçbirşey yapmadan kullanıcıyı beklemesi anlamındadır. Proje: VBEE programının kodları (program satırları), formları, kontrolleri, nesneleri, yardımcı program parçaları vbg. olan bütün bileşenleridir. Yani bir VB programından bahsederken aslında bir VB projesinden bahsetmiş oluyoruz. -4- Bir projede bulunabilecek dosyalar ve uzantılarının anlamları Dosya İsmi.uzantısı Dosyanın anlamı Solution İsmi.sln Solution dosyası Solution İsmi.suo Solution seçimlik dosyası Proje İsmi.vbproj Proje dosyası – Çözümdeki her bir proje için bir tane Proje İsmi.vbproj.user Bir başka proje dosyası – Çözümdeki her bir proje için bir tane Form İsmi.Designer.vb Form designer dosyası – her bir form için bir tane Form İsmi.vb Formu oluşturan program satırları-kod satırları dosyası – her bir form için bir tane Form İsmi.resx Form kaynakları dosyası – her bir form için bir tane VBEE’nin çalıştırılması Eğer VBEE kurulumunuzu problemsiz bir şekilde gerçekleştirdiyseniz; Başlat-Programlar-Microsoft Visual Basic 2005 Express Edition yolunu takip ederek VBEE’yi çalıştırabilirsiniz. Sonradan açılış ile ilgili bazı değişiklikler yapmadıysanız (bu işlemi; VBEE editörüne girdiğinizde, Tools-Options (bu pencerede en alttaki “Show all settings” seçili olmalı)-Environment-Startup-At startup değiştirebilirsiniz) büyük bir ihtimalle aşağıdaki açılış ekranı ile karşılaşırsınız. -5- yolu ile Bu ekrandaki; “Recent Projects” pencerindeki “Open” ifadesinin yanındaki “Project” seçeneği; daha önce üzerinde çalıştığınız bir VBEE projesini tekrar açmak için kullanılır. “Create” ifadesinin yanındaki “Project” seçeneği; ilk defa oluşturacağınız (başlayacağınız) bir VBEE projesini açmak için kullanılır. Diğer pencerelerde, VBEE ile ilgili son haberler, yeni kullanıcılar için yardım bölümleri vbg. Linkler bulunmaktadır. Yeni bir projeyi başlatma Açılış ekranından “Create Project” seçeneği tercih edilirse, aşağıdaki açılış ekranı ile karşılaşılır. Windows Applications: Bu derste Windows Uygulamaları üzerinde çalışılacağından, Tempalates kısmından “Windows Applications” seçeneği tercih edilmeli ve pencerenin altındaki “Name” kutusunda (istenirse) projeye bir isim verilmelidir (projeye isim verme işlemini bu pencerede yapmak zorunda değilsiniz, isterseniz sonraki adımlarda da bu işlemi gerçekleştirebilirsiniz). -6- VBEE Çalışma Ortamı Çalışma ortamında üç halde bulunabilirsiniz; 1-Design modu: projenizi geliştirme, tasarlama durumunda çalıştığınız ortamdır (aşağıdaki ekran görüntüsündeki; Form1.vb [Design] sekmesine dikkat edin, bu ifade kullanıcının şu anda tasarım (design) durumunda olduğunu göstermektedir). 2-Run modu: tasarladığınız projeyi çalıştırdığınız durumdur. 3-Debug modu: projenizi çalıştırma sırasında, sonlandırmadan (proje sonlanmadan) hataları ayıklamak (bulmak) için bulunulan durumdur (projenizin sonlanmadan hangi satırda duracağını siz belirlersiniz, bu durum projenizden uygun değerleri elde edemediğiniz durumlarda ve özellikle “programın hangi aşamasında hangi değerler elde ediliyor” sorusu için çok kullanışlıdır). Form Penceresi: Projemizi tasarladığımız penceredir (nesne-kontrol-obje’dir), dolayısıyla projeyi oluşturan nesneleri üzerinde bulundurur. Aksi belirtilmediği sürece projemizi çalıştırdığımızda karşımıza gelecek ilk ekrandır. Bundan dolayı bu pencerenin üzerine -7- yerleştirilenler aynı zamanda başlangıç görüntümüz olur. Form penceresine, ekranın sağındaki “Solution Explorer” penceresindeki Form1.vb ifadesine tıklanarak da ulaşılabilir. Toolbox Penceresi: Projemizi tasarlarken kullanabileceğimiz nesneleri üzerinde bulunduran penceredir. Toolbox üzerinde bulunan nesneler form penceresine taşınarak projeler oluşturulur. Yeri gelmişken şunu da belirtelim; Nesne-Obje- Kontrol ifadeleri VBEE’de benzer ifadelerdir ve VBEE nesne yönelimli (object-oriented language) bir programlama dilidir. Properties Penceresi: Form penceresine taşınan nesnelerin özelliklerini ve olaylarını (event) üzerinde bulunduran penceredir. Bu pencere sayesinde projemizde kullanacağımız nesnelerin; boyutları, rengi, üzerinde bulunmasını istediğimiz yazı, büyüklüğü, resmi vbg. özelliklerini değiştirebiliriz ve sözkonusu nesnenin hangi olaylarının kullanılabilir olduğu ve hangilerinin kullanıldığını Properties penceresi sayesinde görebiliriz. Solution Explorer: Projeyi oluşturan bütün program parçalarını üzerinde bulunduran ve bu programlara istediğimiz anda ulaşmamızı sağlayan penceredir. Projede kaç tane form, module, sınıf vs. kullanılmış, bu pencere sayesinde öğrenebiliriz. En sık kullanılan nesneler -8- Toollar (aletler) Visual Basic'in solunda bulunan ToolBox'in üzerindeki elemanlardır. Pointer (İmleç): Form üzerine yerleştirilmiş kontrol nesnelerini seçmek, yerini ve boyutunu değiştirmek için kullanılır. Button (Komut Düğmesi): Programın belirli bir işi yerine getirmesi için onaylama düğmesidir. CheckBox (Onay Kutusu): Birden fazla seçeneğin olduğu ve bu birden fazla seçeneğin de aynı anda seçilebildiği durumlarda kullanılabilir. RadioButton (Seçenek Düğmesi): Birden fazla seçeneğin olduğu fakat sadece bir tanesinin seçilebildiği durumlarda kullanılır. ComboBox (Kombine Kutu): Yerden tasarruf etmek amacıyla, birden fazla seçeneğin açılır bir metin kutusunda toplandığı durumlarda kullanılır. Birden fazla seçeneğin olduğu bütün uygulamalarda kullanılabilir. ListBox (Liste Kutusu): ComboBox nesnesine benzer, tek farkı seçeneklerin bu nesne içinde bir veya birden fazla satırlık alanda listelenebilmesidir. Label (Etiket): Diğer nesneleri tamamlayıcı (tanımlayıcı) ifadeleri form üzerinde tanımlayabilmek (yazabilmek) için kullanılır. PictureBox (Resim Kutusu): Form üzerinde resim gösterebilmek için kullanılır. TextBox (Yazı Kutusu): Metin ifadelerin ekranda gösterilmesi için kullanılır. Örneğin; programın çalışması sırasında elde edilen bir sonucun gösterilmesi, program içinde kullanılacak bilinmeyenlerin sordurulması gibi durumlar için uygundur. HORIZONTAL SCROLL BAR (Yatay Hareket Çubuğu): Veri girişi için kullanılır. -9- VERTICAL SCROLL BAR (Düşey Hareket Çubuğu): Veri girişi için kullanılır. TIMER (Zamanlayıcı): Formun çalıştığı sırada, zamana bağlı olarak belirli aralıklarla, eylemlerin gerçekleşmesini denetler. DRIVE LIST BOX (Sürücü Listeleme Kutusu): Geçerli sürücülerin bir listesini göstermeye yarar. Aynı zamanda sürücüler arası geçiş için kullanılır. DIRECTORY LIST BOX (Dizin Listeleme Kutusu): Sürücülerin içerisindeki dizinleri (klasörleri) görüntüler. FILE LIST BOX (Dosya Listeleme kutusu): Bir dizin (Klasör) içindeki tüm dosyaları listeler. SHAPE (Sekil): Form üzerine geometrik şekiller çizmek için kullanılır. LINE (Çizgi): Form üzerine çizgi çizmek için kullanılır. IMAGE (Görüntü): Resim kutusu gibi bir resmi gösterir. DATA ACCESS (Veriye Erişim): Sistemdeki mevcut veri tabanına erişerek, bilgi güncelleme ya da görüntüleme işlemlerinin yapılabilmesine olanak sağlar. OLE CLIENT (Ole Istemcisi): Bu araç ile form içine bir Windows programından (Access, Excel gibi) nesneler aktarmak mümkündür. - 10 - VISUAL BASIC’TE FORMLAR Visual Basic' te iki çeşit form vardır. Bunlardan bir tanesi tek başına çalışan form türü olan Visual Basic ilk çalıştığı zaman ekrana gelen form ve projeye her eklenen yeni formun türü olan SDI (Single Document Interface) formlarıdır. Bu tür formların içinde başka formlar çalışamazlar. İkinci tür form çeşidi ise içerisinde başka formların çalışmasına izin veren ve MDI (Multi Document Interface) olarak bilinen form türüdür. Bu tür formların içinde Child form olarak adlandırılan ve normal SDI formların Child özelliğinin true yapılmasıyla oluşan formlar çalıştırılabilir. Formların özellikleri: Caption: Formun başlığına yazılacak yazıyı belirtir. Bu özelliğe formun özellikler penceresinden ulaşılabileceği gibi program içerisinde de formun başlığı değiştirilebilir. İkon : Formda kullanılacak simgeyi belirtir. Bu simge aynı zamanda programınıza ait bir kısayol oluşturduğunuzda gözükecek simgedir. BorderStyle : Formun sınırlarının belirlendiği bu özellik aşağıda belirten değerleri alabilir. 0-None: Bu değer verildiğinde form boyutlandırılamaz, taşınamaz ve kapatılamaz. Ayrıca formun çerçevesi, başlığı, kontrol kutusu, min ve max düğmeleri de formda yer almayacaktır. - 11 - 1-FixedSingle: Bu değer verildiğinde kullanıcı formu büyültüp küçültemez ama formu taşıyabilir ve kapatabilir. Ayrıca formun boyutlarında herhangi bir değişiklik yapılamaz. 2-Sizable: Varsayılan değer budur ve formun tüm özellikleri kullanılabilir. 3-FixedDouble: Kullanıcı formu boyutlandıramaz ama formu taşıyabilir ve formu kapatabilir. 4-FixedToolWindow: Normal forma göre başlığı daha küçük olan ve kontrol menüsü içermeyen bir form oluşturur. Bu formun boyutları kullanıcı tarafından değiştirilemez. 5-SizableToolWindow: Yukarıdaki forma benzer terk farkı boyutları kullanıcı tarafından değiştirilebilir. MaxButton, MinButton: Formun sağ üst köşesinde bulunan ve formun büyültülüp küçültülmesi işlemleri için kullanılan düğmelerin formda bulunup bulunmamasını belirler. ControlBox: Formun sol üst köşesinde bulunan kontrol menüsünün görünüp görünmemesini sağlar. Bu değer true veya false değerlerini alabilir. Eğer bu değer true ise kontrol menüsü görünür ve bu form Alt+F4 tuş kombinasyonu kullanılarak kapatılabilir. Moveable: Bu özellik ile kullanıcının formu taşıyıp taşıyamayacağı belirlenir. Bu özellik true veya false değerini alabilir. Eğer bu değer true ise kullanıcı formu taşıyabilir. ShowInTaskbar: Bu özellik formun çalışma esnasında görev çubuğunda görünüp görünmeyeceğini belirler. True ya da false değerlerini alabilir. Eğer bu özellik true ise program çalıştığında form görev çubuğunda görünür. AutoRedraw: Bu özellik ile formun üzerine başka bir form geldiğinde veya formun boyutlarıyla oynandığında formun üzerindeki yazı veya çizimlerin yenilenip yenilenmeyeceği belirlenir. Bu özellik true veya false olmak üzere iki değer alabilir. Eğer bu değer true ise formda yenileme yapılır ve formun üzerindeki yazı ve çizimler kaybolmaz. FontTransparent: Formun üzerine Print metodu ile yazılan yazıların zemin renginin olup olmamasını belirler. Bu özellik true yada false olabilir. Eğer true ise yazıların zemin rengi olmayacaktır. False ise yazı kandı zemin rengi üzerine yazılır ve altındaki nesneyi göstermez. WindowState: Formun ilk çalışmaya başlayacağı zaman alacağı durumu belirler. Bu özellik üç değer alabilir. - 12 - 0-Normal: Normal durumda açılır. 1-Minimized: Simge durumunda açılır. 2-Maximized: Ekranın tamamını kaplayacak şekilde açılır. StartupPosition: Formun yüklenmeye başlandığı zaman ekran koordinatlarının neye göre belirleneceğini belirler. Bu özellik dört farklı değer alabilir. 0-Manuel: Form tasarlandığı zamanki konumda açılır. 1-CenterOwner: Child özelliği true yapılmış formların MDI formun ortasında açılmasını sağlar. 2-CenterScreen: Formun ekranın ortasında açılmasını sağlar. 3-WindowsDefault: Formun konumunu Windows belirler. KeyPreview: Form aktifken basılan tuşlardan formun etkilenip etkilenmeyeceği bu özellik kullanılarak ayarlanılır. Bu özellik iki değer alabilir. Eğer değer true ise formda bulunan herhangi bir kontrolün üzerinde basılan tuşlar ilk önce formun KeyPress, Keydown, KeyUp olaylarını meydana getirir. Bu değer false ise kontrolün üzerinde basılan tuşlar o kontrolün KeyPress, Keydown, KeyUp olaylarını meydana getirir. Count: Formdaki menüler dahil kontrol sayısını belirtir. Picture: Formun üzerinde gösterilecek resmi belirtir. MDIChild: Yukarıda bahsettiğimiz MDI formların içinde çalışabilen bir form istiyorsak bu özelliği true yapmamız gerekiyor. CurrentX, CurrentY: Formun üzerindeki aktif pixelin yerini belirtir. Formun üzerine yazdırılacak yazılar bu noktadan başlayarak yazdırılır. Width: Formun genişliğinin belirlendiği özellik. Heigth: Formun yüksekliğinin belirlendiği özellik. Left: Formun ekranın ne kadar solunda olacağının belirlendiği özellik. - 13 - Top: Formun ekranın ne kadar üstünde yer olacağının belirlendiği özellik. Font: Formlara yazılacak yazıların fontlarının belirlendiği özellik. BackColor: Formun zemin renginin belirlendiği özellik. ScaleMode: Formda kullanılan ölçü birimini belirtir. Varsayılan ölçü birimi Twip'dir. Kullanılabilecek ölçü birimleri ise; 1-Twip 2- Point 3- Pixel 4- Character 5- Inch 6- Millimeter 7- Centimeter (1 inch = 1440 twip = 72 point = 2.54 cm) MousePointer: Form üzerindeki fare işaretçisinin şeklini belirler. Enabled: Formların kullanılabilir olup olmamasının belirlendiği özellik. Eğer bu özellik bir form için false ise o form proje içerisinde kullanılamaz. VISUAL BASIC’TE FORMLARA UYGULANABİLECEK OLAYLAR Visual Basic “olay temelli” bir programlama aracı olup, kullanılan kontroller için önceden tanımlanmış olaylara ilişkin kodlar yazılarak programın çalışması sağlanır. Örneğin siz, formun üzerine çift tıklanması durumunda bir olayın meydana gelmesini istiyorsunuz. Bunun için formda tanımlanmış DblClick olayına ilgili kodu yazarak bu olayın meydana gelmesini sağlayabilirsiniz. Şimdi sırasıyla formlara uygulanabilecek olayları inceleyelim. Load() : Formun ilk defa hafızaya yüklendiği zaman meydana gelen olaydır. Bu olay kullanılarak, kullanıcıya formu göstermeden önce yapılması gereken işler yapılabilir. Örneğin, kullanıcı programı başlattığında ilk önce kullanıcıdan, kullanıcı adı ve şifresini alarak daha sonra yüklenecek ana formda bu bilgileri kullanarak bir veritabanına bağlantı sağlayabiliriz. Activate() : Formun, programda aktif olması sırasında meydana gelir. Eğer programımızda bir tane form varsa bu form her zaman aktiftir. Bu olaya, formun aktif olması sırasında yapılmasını istediğimiz olayları yazabiliriz. Deactivate() : Formun, programda aktivitesini kaybetmesi sırasında meydana gelen olaydır. Bu olaya, formun aktivitesini kaybetmesi sırasında yapılmasını istediğimiz olayları yazabiliriz. - 14 - Unload(Cancel As Integer) : Formun kapatılması sırasında meydana gelen olaydır. Ayrıca bu olayda tanımlanmış Cancel değişkenini kullanarak sadece bizim istediğimiz durumda formun kapanmasını sağlayabiliriz. Bunu gerçekleştirmek için, yani formun kullanıcı tarafından hiçbir şekilde kapatılmaması için Cancel değişkenine True değerini atamalıyız. Aşağıdaki örnekte kullanıcı formu kapatmak istediği zaman bir pencereyle (inputbox) karşılaşıyor ve bir değer girmesi isteniyor. Eğer girdiği değer 2 ve 2'den büyükse form kapanmıyor. Private Sub Form_Unload(Cancel As Integer) Dim c c = InputBox("Formu kapatmak için bir sayi giriniz", "Çikis") If c > 2 Then Cancel = True Else Cancel = False End If End Sub Not : Bu olay formun End komutuyla sonlandırılması sırasında meydana gelmez. Yani bu olayın meydana gelebilmesi için formun program tarafından End komutu kullanılarak sonlandırılmaması gerekir. Yukarıdaki programı çalıştırdığınızda aşağıdakine benzer bir ekranla karşılaşmalısınız. - 15 - Resize() : Formun boyutlarının değiştirilmesi sırasında meydana gelir. Örneğin formun genişliğinin veya yüksekliğinin değiştirilmesi bu olayın meydana gelmesini sağlar. KeyPress(KeyAscii As Integer) : Formun çalışması sırasında yön ve kontrol(Ctrl, Alt, Shift) tuşları dışında herhangi bir tuşa basılması sırasında meydana gelen olaydır. Bu olayda basılan tuşun Ascii değeri KeyAscii değişkenine atanır. Bu değişkeni kullanarak hangi tuşa basıldığını öğrenebilirsiniz. Aşağıdaki program, formun çalışması sırasında hangi tuşa basıldığını ekrana yazar. Private Sub Form_KeyPress(KeyAscii As Integer) Show Print Chr(KeyAscii) & " tusuna bastiniz." End Sub KeyDown(KeyCode As Integer, Shift As Integer) : Bu olay herhangi bir tuşa basıldığı anda meydana gelir. Bu olayda iki parametre kullanılır. Bu parametrelerin biri basılan tuşun Ascii değerini, diğeri ise bu tuşla birlikte Shift, Ctrl ve Alt tuşlarından herhangi birine basılıp basılmadığı konusunda bilgi tutar. Aşağıdaki tabloda Shift parametresinin alabileceği değerler ve açıklamalarını bulabilirsiniz. - 16 - Shift Parametresinin Değeri Açıklama 0 Shift, Ctrl, Alt tuşlarından herhangi birisi basılı durumda değil. 1 Shift tuşu basılı durumda. 2 Ctrl tuşu basılı durumda. 3 Shift ve Ctrl tuşları basılı durumda. 4 Alt tuşu basılı durumda. 5 Shift ve Alt tuşları basılı durumda. 6 Ctrl ve Alt tuşları basılı durumda. 7 Shift, Ctrl ve Alt tuşları basılı durumda. Aşağıdaki örnekte kullanıcı Ctrl tuşu ile birlikte A tuşuna basarsa kullanıcıya mesaj verecektir. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 65 And Shift = 2 Then MsgBox "Ctrl+A tus kombinasyonunu kullandiniz." End If End Sub - 17 - KeyUp(KeyCode As Integer, Shift As Integer) : Bu olay ise kullanıcının bastığı tuşu bırakması sırasında meydana gelir. Yukarıdaki tabloda Shift parametresi için gösterilen değerler bu olayda da geçerlidir. MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) : Bu olay formun üzerinde mouse'un herhangi bir tuşuna basılması sırasında meydana gelir. Bu olayda kullanılan parametrelerden Button parametresi, kullanıcını mouse'un hangi tuşuna bastığı bilgisine tutar ve kullanıcı mouse'un sol tuşuna basmışsa 1, sağ tuşuna basmışsa 2, her iki tuşa birlikte basmışsa 3 değerini alır. İkinci parametre olan Shift ise mouse'un tuşlarına basıldığı sırada herhangi bir kontrol karakterine basılıp basılmadığı bilgisini tutar ve yukarıdaki tabloda açıklanan değerler bu olaydaki Shift parametresi için de geçerlidir. X ve Y parametreleri ise bu olayının meydana geldiği andaki mouse işaretçisinin yerinin Twip cinsinden değerlerini tutarlar. Aşağıdaki örnekte mouse'un sol tuşuna tıklandığı yerin Twip olarak değeri kullanıcıya mesaj olarak gösteriliyor. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then MsgBox ("Mouse'un yeri :" & Str(X) & "," & Str(Y)) End If End Sub - 18 - MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) : Bu olay kullanıcını mouse'un bastığı tuşunu serbest bırakması sırasında meydana gelir ve kullanılan parametreler MouseDown olayındakilerle aynıdır. MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) : Bu olay mouse işaretçisinin form üzerindeki yerinin değişmesi sırasında meydana gelir ve kullanılan parametreler MouseDown olayındakilerle aynıdır. Click() : Bu olay mouse ile formun herhangi bir yerine tek tıklama yapıldığında meydana gelir. DblClick() : Bu olay mouse ile formun herhangi bir yerine üst üste iki tıklama yapıldığında meydana gelir. Aşağıdaki programda kullanıcıya, formun herhangi bir yerine çift tıklaması durumunda bir mesaj gösterilecektir. Private Sub Form_DblClick() MsgBox "Mouse ile Çift Tıklama Yaptiniz.", , "Çift Tiklama" End Sub VISUAL BASIC’TE VERİ YAPILARI 1-)Sabitler (Constants) Programın içinde değeri değişmeyen sabitlerdir. VB'de hazır bu tip değişkenler olduğu gibi programı yazarken kendi ellerimizle de tanımlayabiliriz. String türü ifadeler sayısal işlemlere sokulmazlar. Sabit tanımlamak için mutlaka ihtiyacımız olan şeyler "const" ve sabitin ismidir. Private ve public, değişkenlerin etkili olacağı alanları - 19 - belirlememizde işe yarar. Çoğu zaman private'yi kullanın çünkü standart.exe olarak açtığınız formlarda public işe yaramaz, hata verir. 2-)Değişkenler Program içerisinde değerleri sürekli olarak değişebilen veri yapısıdır. x=23 iken x=x+3 dersek x'in değerini 26 yaparak değiştirmiş oluruz. Yani bir değişkene yeni bir değer atanırsa eski değeri silinecektir. a-)Değişkenlere isim verme • Değişken isminin ilk karakteri rakam olmamalıdır. • Diğer karakterler harf, rakam, alt çizgi_ olabilir. • Harflerin küçük ya da büyük olmasının bir önemi yoktur. • Değişken isimlerinin uzunlukları 40 karaktere kadar olabilir. • Değişken isimleri içerisinde diğer semboller (+,-,/ vb) bulunmamalıdır. b-)Değişken türleri Bu bölümde, VB'de program yazarken, programınızda kullanabileceğimiz veri türleri tanıtılacaktır. variant: Bu tipte tanımlanmış bir değişkene herhangi bir tip’te veri yüklenebilir. Yani ne tür bir veri gireceğimizi bilmediğimiz değişkenlerde Variant kullanabiliriz. Bu tür değişkenler hafızada sayısal değerler için 16 byte ve her bir karakter için 1 byte yer kaplarlar. Örnek: Private Sub Form_Load() Dim Ad As Variant , No As Variant Dim Dogum As Variant Ad="Ali ÇELİK" Tel="5551234567" Dogum=#Oct,25,1983# End Sub - 20 - string: Matematiksel işlemlere sokulamayan karakter veri tipidir. Her karakter için 1 byte yer kaplar. Uzunluğu 65000 karaktere kadar olabilir. İki karakter ifade arasındaki + işareti bu karakterleri birleştir anlamına gelir. Integer: Tamsayılar için kullanılır. 2 byte yer kaplar, -32768 ile 32767 arasında değer alabilir. long: Daha büyük bir aralıkta integer yani tamsayı tanımlamak için kullanabileceğimiz bir veri tipidir. Hafızada 4 byte yer kaplar. Sınır değerler -2,147,483,648 ile +2,147,483,647 dir. currency: Para hesaplarında kullanılmak üzere tanımlanmış bir veri tipidir. Hafızada 8 byte yer kaplarlar. 4 hane ondalık kısmı olmak üzere toplam 19 haneden oluşur. (nokta hariç) Alabileceği sınır değerler -922,337,203,685,477.5808 ile 922,337,203,685,477.5807 dir. date: Tarih türündeki bilgileri kullanmak için oluşturulmuş bir değişken tipidir. Hafızada 8 byte yer kaplarlar. 1 Ocak 100 ile 31 Aralık 9999 arasındaki tarihleri kullanabilirsiniz Örnek: Private Sub Form_Load() Dim Dogum_tarihi As Date , Olum_Tarihi As Date Dogum_tarihi =#Oct,25,1955# Olum _Tarihi=#Oct,6,2002# End Sub boolean: Mantıksal veri tipleri için kullanılır. İki seçenekten birisini (True, False) alabilir. Bellekte 2 byte yer işgal ederler. - 21 - byte: O ile 255 arasındaki tamsayıları ifade etmek için kullanılabilecek veri tipidir. Bellekte 1 byte yer kaplar. Örnek Private Sub Form_Load() Dim A As Byte , B As Byte A =23 B= 143 End Sub single: Tam sayı olmayan sayılar için kullanabileceğimiz bir veri tipidir. Single tipindeki veriler bellekte 4 byte yer kaplarlar. Negatif sayılar için alabileceği aralık -3.402823E38 ile -1.401298E-45, pozitif sayılar için alabileceği aralık 1.401298E-45 ile 3.402823E38 arasındadır. double: Visual Basic’te kullanılabilecek en büyük sayısal değerlerin veri tipidir. Hafızada 8 byte yer kaplarlar. 16 basamağa 4.94065645841247E-324 kadar ile duyarlıdır. Sınır değerler 1.797693134862232E308, negatif pozitif sayılar sayılar için için de -1.797693134862232E308 ile -4.94065645841247E-324 arasındadır. b-)Tip bildirimi için DIM deyimi İyi bir program oluşturmak için, değişkenlerin tiplerini önceden bildirmek faydalı bir alışkanlıktır. Tip bildiriminde bulunulmazsa, değişkenlerin tipi variant olarak atanır. Bu da hafızada gereksiz yer kaplamaya neden olur. Dim x as integer Dim a, b, c, d as double şeklindeki ifade, sedece d'yi double olarak atayacak, a, b, c değişkenleri ise variant olarak kalacaktır. - 22 - Doğru kullanım ise: Dim A As Double, B As Double, C As Double, D As Double şeklinde olmalıdır. c-)Zorunlu tip bildirimi VB'de tip bildirimi zorunlu değildir. Fakat yazılımcı isterse bunu zorunlu hale getirebilir. Bunun için şu adımlar izlenmelidir. • Kod penceresi açılır. • General, declarations kısmı; seçilir. • Bu bölüme option explicit yazılır. Option Explicit komutu, değişkenlerin tanımlanmasını zorunlu hale getirmek veya değişkenleri tanımlama zorunluluğunu ortadan kaldırmak için kullanılır. Bu komutun kullanılma mecburiyeti yoktur, kullanılmazsa, değişkenleri mutlaka tanımlamak zorundasınız demektir (option explicit on), aksi durumda, yani değişkenlerin kullanılma zorunluluğu ortadan kaldırılmak istenirse kullanılması mecburidir. Kullanılış şekli; Option Explicit On (Kullandığınız değişkenleri tanımlamak zorundasınız). Option Explicit Off (Kullandığınız değişkenleri tanımlamak zorunda değilsiniz) General Declerations Bölümü Option Explicit komutu kullanılmak istenirse, VB editörünün sadece General Declerations bölümüne yazılması gerekir, aksi halde VB hata mesajı verir. General Declerations bölümü; bütün yordamların ve program satırlarının en üstündeki satırdır, aşağıdaki örnekte bu bölümün yeri gösterilmektedir. - 23 - bunu yaptıktan sonra programınızı yazarsanız, eğer değişkenleri tanımlamadıysanız, programı da o halde çalıştırdıysanız "Variable not defined" hatası verecektir. d-)Değişkenlerin tanımlandıklara yere göre durumları Değişkenler iki yere göre tanımlanırlar: Genel tanımlamalar: Yordamların üzerinde yapılan tanımlamadır. Bu şekilde yapılan tanımlar yordamlar üstü olduğu için, Class içindeki bir veya birden fazla yordam içinde bu tanımlar geçerli olacaktır. Özel tanımlar: Yordamların içinde yapılan tanımlardır. Bu şekilde yapılan tanımlar yordam içinde olduğundan, sadece tanımlandığı yordamlarda geçerli olacaktır, program akışı ilgili yordamın dışına çıktığında, yordam içinde yapılan tanımlar geçersiz olacaktır. Aşağıdaki örnek, iki tür tanımlamayı da içermektedir. Öncelikle bu programın “Option Explicit On” satırından dolayı çalışmayacağını belirtmek gerekir. Bu programın hatasız çalışması için “Option Explicit On” satırının “Option Explicit Off” haline getirilmesi gerekir. Çünkü bu örnek tanımlamaları göstermek için özellikle bu şekilde düşünülmüştür. Bu satır, program içinde kullanılan bütün değişkenlerin tanımlanmasını zorunlu hale getiriyor Bu satırda a değişkeni “genel” olarak ve 12 başlangıç değeri ile tanımlanmıştır. Genel tanımlaması, CLASS satırından sonra ve 2 SUB yordamın üzerinde olmasından anlaşılmaktadır. Bu tanıma göre a değişken değerine Sub Form1_Load ve Sub Button1_Click yordamlarından ulaşılabilir. Bu yordamdaki b değişken tanımlaması sadece bu yordam içinde geçerlidir. Bu yordamın içinde a ve b değişken değerleri tanımlıdır, c değişken değeri tanımsız olarak işlem görür. Bu yordamdaki c değişken tanımlaması sadece bu yordam içinde geçerlidir ve “deneme” başlangıç değeri ile tanımlanmıştır. Bu yordamın içinde a ve c değişken değerleri tanımlıdır, b değişken değeri tanımsız olarak işlem görür. - 24 - Aşağıdaki örnekte a değişkeni önce genel olarak integer sayı tipinde ve 12 başlangıç değeri ile tanımlanmış, ancak daha sonra Form1_Load yordamının içinde aynı değişken özel tanımlamaya, string değişken tipine ve “Ali” başlangıç değerine döndürülmüştür. Buna göre Form1_Load yordamının içinde a değişken değeri, tipi string’e ve başlangıç değeri de “Ali” ifadesine döndürülür, bu kullanımda Form1_Load yordamının içinde a değişken değeri “Ali” olarak işleme girer. Ama buna karşın “deneme” yordamının içinde a değişkeni ile ilgili bir değişiklik yapılmadığı için bu yordamın içinde a değişken değeri integer ve 12 olarak işleme girer. e-) Değişkenlerin statik ve dinamik durumları Aksi belirtilmediği sürece tanımladığımız değişkenler dinamiktir; yani olay, prosedürün her çalışmasında (mesela, her command1_click olduğunda) bir önceki işlem sonundaki hesaplanmış değeri saklamazlar. Fakat değişkenimizi tanımlarken Dim X As integer değil de Static X As integer olarak tanımlarsanız her prosedür çalıştığında bir önceki procedure sonundaki hesaplanmış değeri saklar onun üstünden işlem yapar. Veri Tiplerine (değişkenlere) başlangıç değeri atanmamışsa !!! Sayı değişken tipleri için (byte, integer, double vb.) sıfır (O sayısı). String değişken tipleri için (char, string vbg.) "" değeridir, bu değerin yazı olarak ifadesi şudur: çift tırnak işareti açılır ve arada boşluk olmadan kapatılır. Boolean mantıksal değişken tanımlama tipinde False değeridir. Date değişken tanımlama tipinde "00:00:00" değeridir. - 25 - VB’DE FONKSİYONLAR Asc: Klavyeden girilen herhangi bir ifadenin, nümerik ascii karşılığını verir. Eğer tek harfli ifade yerine sözcük girerseniz, sözcüğün ilk karakterini baz alacaktır. Mesela asc (bilgisayar) denirse b'nin nümerik ascii karşılığı olan 98 elde edilir. Chr$: 0-255 arasında girilen bir nümerik ascii koduna karşılık gelen karakteri verir. Örnek: Bu programda text1'e gireceğiniz karakterin karşılığı text2'de, text3'de girdiğiniz karakterin karşılığı text4'de görünecektir. Private Sub Command1_Click() a = Text1.Text a = Asc(a) Text2.Text = Str(a) End Sub Private Sub Command2_Click() b = Text3.Text b = Val(b) If b > 255 Then GoTo son b = Chr(b) Text4.Text = b son: End Sub Space$(n): Belirtilen text'e veya herhangi Text1.text=space$(4) gibi - 26 - bir yere n kadar boşluk koyar. Right$: Belirtilen stringin en sağından başlayarak belirtilen sayıda stringi kopyalamak için kullanılır. A=Right$("pamukkale",4) derseniz A="kale" olacaktır. Left$:Belirtilen stringin en solundan başlayarak belirtilen sayıda stringi kopyalamak için kullanılır. A=Leftt$("pamukkale",5) derseniz A="pamuk" olacaktır. Mid$: Belirtilen stringin belirtilen karakterinden başlayarak, soldan sağa doğru belirtilen kadar karakter kopyalamaya yarar. A=Mid$("pamukkale",4,4) derseniz A="ukka" olacaktır.Yani 4. karakterden başlayarak sağa doğru 4 karakter kopyalayacaktır. Örnek: Standart.exe olarak açtığınız form'a 1 tane text kutusu(text1.text), 3tane command butonu yerleştirin, command butonlarının adını ister değiştirin ister değiştirmeyin program yinede çalışır. Butonların üzerlerine sıra ile çift tıklayarak sıra ile aşağıdaki kodları yazın. Programı çalıştırdıktan sonra "sağdan" butonuna tıklarsanız, text1 kutusuna ,"pamukkale" stringinin içindeki "kale"yi alıp yazacaktır, "soldan" butonuna tıkladığınızda ise "pamuk", ortadan butonuna tıkladığınızda ise "ukka" yazacaktır... Private Sub Command1_Click() Dim a As String a = Right$("pamukkale", 4) Text1.Text = a End Sub Private Sub Command2_Click() Dim b As String b = Left$("pamukkale", 5) Text1.Text = b End Sub Private Sub Command3_Click() - 27 - Dim c As String c = Mid$("pamukkale", 4, 4) Text1.Text = c End Sub Private Sub Form_Load() Text1.Text = "pamukkale" End Sub Len(String): Girilen stringin kaç karakter uzunluğunda olduğunu öğrenmemize yardımcı olur. Sayısal bir değer alır. A=Len("pamukkale") derseniz A=9 olur. Val(String): Girilen stringi sayısal ifadeye çevirir ve bize, onu toplama, çıkarma gibi işlemlerde kullanma imkanı sağlar. A=val("15") ifadesi text kutusundan veya herhangi bir yolla girilmiş 15 yazısını rakamsallaştırmaya yarar. Str(Rakam): Val'ın yaptığını tam tersini yapar. Örneğin text kutusunda rakamsal ifadeleri kullanamayız, ancak onları str ile string haline getirip kullanabiliriz. A=Str(15) derseniz A="15" olacaktır. Lcase(String): İçine girilen küçüklü büyüklü yazıyı tamamen küçük harfe çevirir. A=Lcase("PamUKKale") derseniz A="pamukkale" olacaktır. Ucase(String): İçine girilen küçüklü büyüklü yazıyı tamamen büyük harfe çevirir. Ucase("PamUKKale") derseniz A="PAMUKKALE" olacaktır. Instr(Rakam,String1,String2): Birinci karakter içinde ikinci karakteri arar. Eğer aradığını bulursa değeri bulduğu karakterin sıra numarası olur. Örneğin birinci karakterimiz "pamukkale" ikinci karakterimiz "a" yani birinci karakter içinde a'yı arıyacağız. Programı yazıp çalıştırdığımızda değer 2 olacaktır, yani "a" 2. sırada. İsterseniz aramayı istediğiniz sıradan başlatabilirsiniz. Örneğin A=Instr(5,"pamukkale","a") derseniz A=7 olacaktır. Çünkü 5. karakterden aramaya başlattığımız için 7. sıradaki "a" yı gördü. Trim(String): Parantez içine girilen karakterin sağındaki ve solundaki boşluk karakterini siler. Ltrim(String): Parantez içine girilen karakterin solundaki boşluk karakterini siler. Rtrim(String): Parantez içine girilen karakterin sağındaki boşluk karakterini siler. - 28 - Date: Bu komut sayesinde sistemin tarihini öğrenebilir yada onu yeniden ayarlayabiliriz. A=Date dersek A o günün tarihi olacaktır. Yalnız atlanılmaması gereken önemli bir ayrıntı ise A yı dim ile tanımlarken “dim A as date” demeliyiz. Eğer bilgisayarın tarihini ayarlamak istiyorsak Date="aa-gg-yyyy". Bir de date olarak tanımladığımız bir değişkene tarih atayabiliriz. Mesela “dim t as date” olarak tanımladığımız değişkene tarih atamak istersek “t=#aa-gg-yyyy#” şeklinde bir ibare kullanmalıyız. Eğer ay kısmına 13 ve daha büyük yada gün kısmına 32 ve daha büyük rakamlar girerseniz programın çalışması esnasında hata verecektir. Time: Hem zamanı öğrenmede hem de zamanı set etmede kullanılır. Time="SaSa:dkdk:snsn" şeklinde set edilebilir. Ayrıca... Private Sub Command1_Click() Text1.Text = Time End Sub ile zamanı bir değişken olarak elimizde tutabiliriz Now: Programın çalıştığı anki tarih ve zamanı bize verir. Private Sub Command1_Click() Text1.Text = Now End Sub Datevalue(string): İçine girilen string türü bir ifadeyi date türü bir değişkende tutmamıza yarar. Örneğin programda kullanıcıdan textboxa doğum tarihini girmesini istediniz, textbox bunu tabi ki string türü bir ifade olarak saklayacaktır. Bunu date türü bir ifadeye çevirmede datevalue komutu devreye giriyor... Dim t as date Text1.text="25-10-1983" t= Datevalue("text1.text") Dateserial(Yıl,Ay,Gün): Girilen integer türü değişkenleri date türü değişkenlere çevirmeye yarar. Ayrıca Dateserial(1996,10,28)-Dateseria(1954,3,5) gibi bir kullanımla 2 tarih arasındaki gün sayısını bulabiliriz. - 29 - Timeserial(saat,dakika,saniye): Parantez içine girilen ifadeyi zaman türünde değişkene çevirir. A=Timeserial(22,11,08) komutu ile A; 10:11:08 PM değerine eşit olacaktır. Day(Tarih): Verilen tarih türü bilginin içinden gün kısmını alır. A=Day("10/25/1983") ifedesinde A=25 olacaktır. Month(Tarih): Verilen tarih türü bilginin içinden ay kısmını alır. Year(Tarih): Verilen tarih türü bilginin içinden yıl kısmını alır. Hour(Zaman): Zaman türü bilginin içinden saati alır. Minute(Zaman): Zaman türü bilginin içinden dakikayı alır. Second(Zaman): Zaman türü bilginin içinden saniyeyi alır. VB’DE İŞLETİM SİSTEMİ İLE İLGİLİ KOMUTLAR MKDiR: DOS’tan alınmış bir komuttur. Aktif dizinin altında yada belirlenen yeni bir yola uygun olarak yeni dizin yaratır. Örneğin MkDir "ders" ile aktif yolun altına yeni bir dizin açabilirsiniz. Bu dizin zaten mevcutsa hata verir. RmDir: DOS’tan alınmış bir komuttur. Geçerli yolun altındaki belirtilen klasörü silmeye yarar. Örneğin RmDir "ders" ile aktif yolun altındaki ders dizinini siler. Eğer öyle bir dizin yoksa hata verir. Ayrıca dizinin içi boş olmalı yoksa gene hata verecektir. Kill: Belirtilen bir dosya veya dosya gurubunu siler. Mesela RmDir ile içi dolu dizini silemezsiniz ilk önce kill "ders\*.*" diyerek içini boşaltırsınız. Sonra içi boş dizini RmDir ile silersiniz. ChDrive: Aktif sürücüyü değiştirir. ChDrive "D" komutu ile aktif sürücüyü D yapmış olursunuz. ChDir: Aktif dizini değiştirir. Örneğin ChDir "D:\MsOffice\Excel" Name: Belirtilen dosyanın adını ve yolunu c:\Hb\Hesap.bas - 30 - değiştirir. Name "c:\Vb\alan.bas" as CurDir: O anki geçerli olan sürücünün yolunu (aktif dizini) veya o anda kullanılmayan fakat daha önce kullanılmış sürücünün en son yolunu verir. String türü ifade yollar. A=Curdir(c) şeklinde kullanılır. Shell: Kullanılış şekli Değişken=Shell(Yol Adı,Pencere Stili) şeklindedir.Com, Exe, Bat uzantılı dosyaların Vb içinden çalıştırmaya yarar. Örnek: Private Sub Command1_Click() x=Shell("c:\msoffice\excel\excel.exe,1) End Sub FileCopy: Kaynaktaki dosyaları alır hedefe kopyalar. FileCopy"c:\a1.bmp",c:\Vb\a1.bmp SetAttr: Belirtilen dosyanın özelliklerini değiştirmek için kullanılır. Örneğin, SetAttr "C:\Vb\Xdat", vbHidden+vbReadOnly ifadesi ile, x.dat adlı dosya, sadece okunabilir ve gizli olarak değiştirilir. Dir: Yazılış biçimi Dir(Yol Adı) şeklindedir. Yol adında belirtilen dosyanın olup olmadığını araştırır, eğer varsa dosyanın yolunun ismini string olarak gönderir. ?ve* gibi joker karakterler kullanmaya izin verir. VB’DE KARAR KOMUTLARI if-then-else if koşul then KOMUTU Belirtilen koşulun olması halinde programa yaptırmak istediğimiz şeyleri yaptırmaya yardımcı komuttur. Kullanımı; if koşul then KOMUTLAR end if - 31 - Şeklindedir. Yani belirttiğimiz koşul sağlanırsa program, if ile end if arasında belirttiğimiz komutları uygulayacaktır. Eğer belirttiğimiz koşul sağlanmamışsa program -end if- komutunun bir alt satırına atlayacaktır. Yani if ve end if komutları arasındaki hiç bir işlemi yapmayacaktır. Örnek: Standart.exe olarak açmış olduğunuz formunuza bir textbox (text1) ve bir commandbutton (command1) ekleyiniz. Sonra tasarım penceresindeyken command buttona çift tıklayarak açılan kod penceresine aşağıdaki kodları yazınız. Daha sonra F-5'e basarak programı çalıştırınız. Program sayınızın tek mi çift mi olduğunu kontrol ediyor ve ona göre mesaj veriyor. Private Sub Command1_Click() a = Text1.Text a = Val(a) If a Mod (2) = 0 Then MsgBox "girdiğiniz sayı çifttir" End If If a Mod (2) <> 0 Then MsgBox "girdiğiniz sayı tektir" End If End Sub if koşul then.... else...KOMUTU If ... end if 'ten tek farkı vardır, koşulun sağlanmadığı durumda da programa müdahale edebilirsiniz. Örneğin belirttiğiniz koşulun olup olmadığını if ile kontrol ediyordunuz, şimdi burada da else diyerek, programa; koşulun olmadığı durumda da şunu yap diye emir veriyorsunuz. Kullanımı şu şekildedir: if koşul Then KOMUTLAR else KOMUTLAR - 32 - End if Eğer belirttiğiniz koşul varsa if' in altındaki komutlar yerine getiriliyor, eğer belirttiğiniz koşullar yoksa else’nin altındaki komutlar yerine getiriliyor. Örnek: Yukarıda 2 tane if komutu kullanarak yazdığımız komutu daha kısa satırda else kullanarak yazacak olursak; Private Sub Command1_Click() a = Text1.Text a = Val(a) If a Mod (2) = 0 Then MsgBox "girdiğiniz sayı çifttir" Else MsgBox "girdiğiniz sayı tektir" End If End Sub If koşul then..... ElseIf koşul then.....KOMUTU Birden fazla koşulumuzun olduğu durumlarda defalarca if kullanmaktansa if ve else if lerle durumu bağlayabiliriz. If koşul Then KOMUTLAR ElseIf Koşul1 Then KOMUTLAR ElseIf Koşul2 Then KOMUTLAR End If Örnek: 1'den 5 e kadar olan sayıların kontrolünü yapan, girdiğiniz sayının kaç olduğunu size söyleyen ve 5 ten büyük bir sayı girmişseniz uyaran bir program yazıyoruz. Formunuza bir - 33 - textbox ve bir command buton ekleyin ve tasarım aşamasındayken command butona cift tıklayıp açılan pencerede bu kodu yazın.. Private Sub Command1_Click() a = Text1.Text a = Val(a) If a > 5 Then MsgBox "5'ten büyük sayı giremezsiniz" End If If a = 1 Then MsgBox "Girdiğiniz sayı=1" ElseIf a = 2 Then MsgBox "Girdiğiniz sayı=2" ElseIf a = 3 Then MsgBox "Girdiğiniz sayı=3" ElseIf a = 4 Then MsgBox "Girdiğiniz sayı=4" ElseIf a = 5 Then MsgBox "Girdiğiniz sayı=5" End If End Sub Select .... Case Mantık olarak yukarıda anlattığımız If..ElseIf yapısının aynısıdır. İlgili değişken Select Case DEGİŞKEN komutuyla seçilir ve bu değişkenin birden fazla durumları Case Değer1... Case Değer2.... komutlarıyla kontrol edilir. Kullanımı; Select Case Değişken Case Değer1 ..... Case Değer2 - 34 - ..... Case Değer3 to Değer 10 ..... Case Else End Select Görüldüğü gibi birden fazla koşullu durumda select case yi kullandık. Case değer 3 to değer 10 yazan satır değişkenin değerinin belli bir şeyden diğer şeye kadar olan durumda şunu yap anlamına gelir. Dikkat edilmesi gereken diğer komut da Case Else. Bu da belirtilen tüm seçeneklerin dışında başka bir değer olması durumunda altında belirtilen komutları uygulatır. InputBox Visual Basic programının çalışması sırasında klavyeden bilgi girmek amacıyla kullanılır. Buradan gelecek değer string türü bir değerdir, eğer girilecek bu değeri sayısal bir hesapta kullanmak istiyorsak Val(String) komutuyla sayısal değere çevirmeliyiz. Kullanımı Değişken=Inputbox("Başlık") şeklindedir. Örnek: Standart.exe olarak açtığınız formunuza bir adet text.box koyun ve textbox koyduğunuz projenin üzerinde herhangi bir yere çift tıklayarak (Private Sub Form_Load() ve End Sub ifadelerini otomatik olarak elde edebilmek için forma çift tıkladık) aşağıdaki ifadeleri yazın. Private Sub Form_Load() a = InputBox("İsminizi Giriniz...") Text1.Text = a End Sub Yani inputbox, programa dışarıdan bir veri girmek istediğimizde kullanılıyor. MsgBox Visual Basic programının çalışması sırasında elde edilen bazı sonuçları ve kullanıcıyı uyaracak gerekli bazı mesajları ekrana A=MsgBox("Mesaj",Görünüm,"başlık") taşımamıza şeklindedir. - 35 - yardımcı Görünüm ve olur. başlık Kullanımı: kısımları kullanılmasa da olur. Bu kısımlar kullanılmazsa sadece MsgBox "mesaj" şeklinde kullanımımız doğru olanıdır. Görünüm kısmında tanımlayacağımız komutlarla ok, cancel, yes, no gibi kontrol butonları koyabileceğiz. Mesela bazen Kullanıcıya ....... yapmak istermisiniz diye sorarsınız, evet mi hayır mı deyip demediğini bu gürünümün değişkene yollayacağı ifadeyle anlarız. Ama görünüm kısmına Hiçbirşey yazmazsak sadece ok butonu olacaktır mesaj kutumuzda. Görünümde; VbOkOnly, VbOkCancel, VbYesNo, VbYesNoCancel... gibi tanımlamalarla mesaj kutumuza birden fazla buton koyabiliriz. Kullanıcının tıklayacağı buton A değişkenine Vbok, VbCancel... gibi yansıyacaktır. Daha sonra işlemlerimizi bunlara göre yapacaksak, if kontrolüyle bunları yönlendirebiliriz. Örnek: Standart.exe olarak açtığınız formunuza bir adet text.box koyun ve programın tasarım aşamasındayken forma çift tıklayarak (Private Sub Form_Load() ve End Sub ifadelerini otomatikman elde edebilmek için) aşağıdaki ifadeleri yazınız. Programınızı çalıştırdığınızda isminizi soracak, sonra isminizi text kutusuna yazacak, text kutusunda yazılı olan isminizin doğru olup olmadığını soracak eğer eveti tıkladıysanız program ekranına geri dönecek, hayırı tıkladıysanız bir uyarı mesajı daha gönderecektir. Private Sub Form_Load() a = InputBox("İsminizi Giriniz...") Text1.Text = a Form1.Show b = MsgBox("İsminiz Doğrumu?", vbYesNo, "Sorgu Ekranı") If b = vbNo Then MsgBox ("Yanlış Olması İmkansız") End If End Sub VB’DE DÖNGÜLER Programlama dillerinde döngüler genelde aynı işi birden fazla yaptırmak amacıyla işlemi istenilen miktarda tekrarlamak için kullanılır. Ya da belli aralıklarda birşey arattırmak için veya belli aralığa birşeyler eklemek için aynı işlemi tekrar tekrar yapmaktan kurtulmak için. - 36 - Döngüler yapı olarak ikiye ayrılır. For....Next Ve Do...Loop . VB de Do...Loop sözcüklerini içeren dört ayrı tür mevcuttur. 1)Do While ... Loop Yapısı Bu yapıda önce koşul kontrol edilir. Kontrol doğruysa programın akışı döngünün içine girer. Değilse döngüye bir kez bile girilmeden program işleyişine devam edecektir. Şunu da unutmamak gerek, döngü while koşulu sağlandığı sürece işlevine devam edecektir. Yapısı; Do While Koşul Komutlar Loop Örnek: Standart.exe olarak açtığınız bir forma bir buton yerleştirin. Butonu çift tıklayın Private Sub Command1.click ile başlayan paragrafı yazın. Sonra tekrar project penceresine geçin ve formun herhangi bir yerine çift tıklayın Private Sub Form Load ile başlayan paragrafı Yazın. Sonra F5 e basarak çalıştırın. Project penceresinden çift tıklatmamızın sebebi, ilgili kısma ait private sub... end sub metinlerini VB’nin otomatik yazması sebebiyledir. Private Sub Command1_Click() End End Sub Private Sub Form_Load() a = MsgBox("Devam için evet,bitirmek için hayırı tıkla", vbOKCancel, "DoWhile-Loop Yapısı incelemesi") Do While a = vbOK a = MsgBox("Devam için evet,bitirmek için hayırı tıkla", vbOKCancel, "DoWhile-Loop Yapısı incelemesi") Loop End Sub - 37 - 2)Do Until ... Loop Bu yapıda da önce koşul kontrol edilir ancak while..loop yapısının tersine burada koşul doğru olmadığı sürece programın akışı döngünün içine girer, doğru olduğunda döngünün dışına çıkar. Yada koşul zaten doğruysa hiç döngünün içine girmez. Yapısı; Do Until Koşul Komutlar Loop Örnek: Yukarıda While..Loop Yapısındaki yaptığımız programla aynı işe yarayan programı until..loop ile yapacağız. Yapmanız gereken while’ı silip until, vbOK’u silip vbcancel yapmanız. Private Sub Command1_Click() End End Sub Private Sub Form_Load() a = MsgBox("Devam için evet,bitirmek için hayırı tıkla", vbOKCancel, "DoWhile-Loop Yapısı incelemesi") Do Until a = vbCancel a = MsgBox("Devam için evet,bitirmek için hayırı tıkla", vbOKCancel, "DoWhile-Loop Yapısı incelemesi") Loop End Sub 3)Do ... Loop While Burada koşul altta kontrol ediliyor. Koşul sağlansa da sağlanmasa da döngü yukarıdan aşağıya en az bir kez akacaktır, sonra aşağıdaki while ile belirtilen koşul sağlandığında döngü yukarı çıkıp bir kez daha dönecektir, ta ki koşul sağlanmayıncaya dek. Sağlanmayınca programın akışı döngüden çıkar ve alt satırdan devam eder. Yani birinci ve ikinci yapıdan farkı, hiçbirşey olmasa bile döngü, koşul en aşağıda kontrol edildiği için en az bir kez icra eder. Yapısı; - 38 - Do Komutlar Loop While Koşul 4)Do ... Loop Until Bu da koşulu aşağıda kontrol ediyor. Yani koşul kontrol edilmesi için program döngünün içinde en az bir kere akıyor. Yapısı; Do Komutlar Loop Until Koşul 5)For ... Next For..Next döngüsünde olay for ve next arasında istenilen miktarda tekrar edilerek döner. Kullanımı: For x=a to b step Y Komutlar Next x Burada sayacımız x oluyor. Bu x, a dan b ye kadar Y kadar atlayarak sayıyor. Mesela For x=1 to 10 step 1 gibi bir ifadeyle döngü 1 den 10 a kadar 10 kez dönecektir. Yani yukarıdaki ifadede x=1 alacak next’e kadar olan komutları yerine getirecek, bir sonraki adımda x=2 alarak next’e kadar olan komutları yerine getirecek, son olarak x=10 alarak next’e kadar olan komutları yerine getirecek ve döngüden çıkıp artık next’in altındaki komutları yerine getirmeye başlayacak. Eğer step 2 deseydik x 1,3,5,7,9 değerlerini olacaktı, eğer for x=0 to 10 step 2 deseydik x 0,2,4,6,8,10. Mesela 0 den 10 a kadar olan çift sayıların toplamını bu şekilde döngü içerisinde yapabiliriz. Örnek: Sıfır ile 10 arasındaki çift sayıları toplayan çok küçük bir program yazacağız. Standart.exe olarak açtığınız programa bir tane command buton koyarak çift tıklayın. Çift tıklayınca project penceresinden command penceresine geçecektir. Bu pencerede şu kodu - 39 - yazın ve F5 e basarak programı çalıştırıp command butonunu tıklayın. İçinde 30 yazan bir Mesaj kutusu elde edeceksiniz. Private Sub Command1_Click() For x = 0 To 10 Step 2 a=a+x Next x MsgBox a End Sub VB'DE ALT SIRALI (İNDİSLİ) DEĞİŞKENLER Vektör ve matris gibi indislerle ifade edilebilen değişkenler alt sıralı değişken olarak tanımlanır. Böylece aynı isme ve değişken türüne ait bir değerler dizisi elde edilir. ALT SIRALI DEĞİŞKENLERİN TANIMLANMASI VB'de değişkenler, indislerinin alt ve üst sınır değerleri belirtilerek alt sıralı olarak tanımlanır. Dim a( ) Dim Vektor(1 to 20) as Integer Dim Matris (1 to 3, 1 to 4) as Long Birinci değişkenin sınırları ve değişken türü belirtilmemiştir. İndislerin sayısı, alt ve üst sınırı yoktur ve Variant olarak alınacaktır. İkinci değişken bir boyutlu, indis değerleri 1 den 20 ye kadar değerler alabilen bir sayı dizisidir ve Integer türünde bir alt sıralı değişkendir. Üçüncü değişken iki boyutludur. Birinci indis 1 den 3 e kadar ikinci indis 1 den 4 e kadar değerler - 40 - alabilmektedir. (3 x 4) elemanlı bir matris için kullanılabilir. Matrisin elemanları long değişken türünde tanımlanmıştır. Eğer alt sıralı bir değişkenin indislerinin alt ve üst sınırları belirtilmezse o değişken program içerisinde kullanılmadan önce yeniden tanımlanmalıdır. Buna dinamik alt sıralı değişken denir. İndislerinin sınırları program içinde değişebilen değişkenler için uygundur. Eğer indislerin alt ve üst sınırları belirtilmişse programda bu değerlerin dışına çıkamaz. Böyle değişkenlere statik alt sıralı değişken denir. Dim A( ) ……………… ……………… i = 10 : j = 100 ReDim A(i to j) ……………… Burada i ve j nin değerleri program içinde değiştirilerek A değişkeninin alt ve üst sınırları farklı değerler alabilir. Aşağıdaki programda (10 x 10) luk bir M matrisinin değerlerinin text1 yazı kutusu ile girilmesi, matrisin tüm elemanların toplanması ve sonucun text2 yazı kutusuna yazdırılması işlemi yapılmaktadır. Dim I As Integer, J As Integer Dim M (1 To 10, 1 To 10) As Single For I = 1 To 10 For J = 1 To 10 M ( I , J ) = Val ( text1 . text ) T=T+M(I,J) Next J Next I text2 . text = T Erase Değişken( ) ile alt sıralı bir değişkenin değerleri silinir. Bir değişkenin alt sıralı olup olmadığı IsArray (değişken) komutu yardımıyla anlaşılır. Eğer değişken indisli ise IsArray - 41 - fonksiyonunun değeri True değilse False olur. VB'de en fazla 60 boyutlu değişken kullanılabilir. VB DE DOSYA İŞLEMLERİ Bir dosya üzerinde okuma yazma yapılabilmesi için öncelikle o dosyanın açılması gerekir. Open "Dosya Adı" For Append As # Dosya No Binary Input Output Random Dosyaları kapatmak için Close Dosya No Açılmış olan tüm dosyaları kapatmak için sadece Close komutları kullanılabilir. Dosyayı bilgisayardan tamamen silmek için Kill Dosya Adı komutu kullanılabilir. Açık olan bir dosya silinemez önce dosyayı kapatmak gerekir. Dosya yada dizinlerin isimlerini değiştirmek için; Name eski dosya veya dizin ismi As yeni dosya veya dizin ismi Dosyaya yazma işlemi; Write # Dosya No, Değişkenler veya Print # Dosya No, Değişkenler ile yapılabilir. Dosyaya yazılacak sayısal değerler Val(Değer) şeklinde tanımlanmalıdır. Aksi taktirde karakter olarak yazılır. Dosyadan okuma işlemi; Input # Dosya No, Değişkenler ile yapılabilir. - 42 - RASGELE ERİŞİMLİ DOSYALAR Buraya kadar incelenenler "sıralı dosyalar" dır. Bunun dışında "rasgele erişimli dosyalar" da kayıt işlemlerinde kullanılmaktadır. Rasgele erişimli dosyalarda bilgiye daha hızlı erişilmektedir. Bu tip dosyalarda aynı anda okuma ve yazma işlemi yapılabilir. Rasgele erişimli dosyalarda değişkenlerin dosya içerisindeki sıralaması Type veri grubunun adı Değişken1 As Değişken Türü Değişken2 As Değişken Türü Değişken3 As Değişken Türü ………. End Type komutları yardımıyla belirlenir. Open deyimi ile dosya açılır. Dosya türü Random olarak seçilir. Dosyaya kayıt Put, dosyadan okuma ise Get deyimleriyle yapılır. Rasgele erişimli dosyalar yine Close komutu ile kapatılır. - 43 -
Benzer belgeler
bilgisayarlı kontrol 6
1.4. Seri Port Bağlacı (Konnektörü)
RS-232C standardı, 22 tanesi kullanılan 25 iğneli D tipi bir konnektörü
tanımlamaktadır. Bunların bir çoğu normal bilgisayar haberleşmelerinde kullanılmadığında...
Bilgisayarli Kontrol Sistemleri
sürümü ile 2010 sürümü arasında herhangi bir fark bulunmamaktadır. Bundan sonra
anlatılacaklar 2005 sürümü üzerinde yapılacaktır fakat anlatılanların hepsi 2010 sürümünde
de problemsiz kullanılabil...
VISUAL BASIC.NET - IbrahimCayiroglu.Com
Toollar (aletler) Visual Basic'in solunda bulunan ToolBox'in üzerindeki elemanlardır.
Pointer (İmleç): Form üzerine yerleştirilmiş kontrol nesnelerini seçmek, yerini ve
boyutunu değiştirmek için k...
Tıkla İndir - PC Bilkent Bilgisayar Kulübü
PROGRAMLAMA DILI NEDIR?
PROGRAMLAMANIN TARIHI
PROGRAM GELISRIRME SÜRECI
IYI BIR PROGRAMIN NITELIKLERI
PROGRAM GELISTIRME ADIMLARI
2-VB 60 KURULUMU
Konfigürasyonlari
SÜRÜMLER
NET nedir?
Visual Basic...