pcworld online logo

İnceleme: Visual Basic 5.0

Birkaç hafta önce Microsoft’un düzenlediği bir kursa katılma şansı yakaladım. Şans diyorum çünkü kurs, Mart ayının sonlarında çıkması ve büyük yankılar uyandırması beklenen Visual Basic 5.0’ın yeni özelliklerini öğretme amaçlıydı. 3 gün süren kursta, daha önce test ettiğim ve çok etkilendiğim VB 5.0 Control Creation Edition’dan arabirim dışında bambaşka bir VB’ile karşılaştım.

Bu yazıda Visual Basic 5.0 ile ilgili tüm yenilikleri bulamayacaksınız, fakat yeni VB’nin özelliklerini görürken, Microsoft’un Internet stratejilerinde ne kadar ciddi olduğunun bir kez daha farkına varacaksınız, bir programlama dilinden öteye gidilen Visual Basic 5.0’da kullanıcının işinin bir yandan ne kadar kolay bir düzeye indirildiğini görürken aynı zamanda kompile olayların nasıl üstesinden gelindiğine de şahit olacaksınız.

Arabirimdeki değişiklikler

Visual Basic 5.0’ı ilk çalıştırdığınızda tasarımın oldukça değiştiğini fark ediyorsunuz. Microsoft, 97 adı altında çıkardığı tüm programlarda kullandığı çarpıcı tasarımı yeni VB’de de kullanmış. Değişiklik sadece menü pencereleri ve farklı butonlarla sınırlı değil, artık formları tasarlarken bir Container’ın dışına çıkamıyorsunuz, tüm işlemleri bir MDI form içerisinde gerçekleştiriyorsunuz.

Sayfaya ilk baktığınızda "Form Layout Window" ve "Form Editor" adlı iki yeni pencereye rastlıyorsunuz. İçerisinde küçük bir pencere resmi bulunan "Form Layout Window" sayesinde artık formların ekranın neresinde görünmesini istiyorsanız kolayca oraya taşıyabiliyorsunuz.

Aynı zamanda Format menüsünde de bir kopyasını bulabileceğiniz Form Editor ise birden fazla kontolü aynı anda biçimlendirmek, formun düzenini sağlamak için kullanılıyor. Visual Basic’in önceki sürümlerinde kullandığınız birçok kontrolü Properties kutucuğu yoluyla değiştirme imkanı Form Editörü sayesinde çok daha esnek bir hale getirilmiş.

VB’nin her sürümünde az çok değişikliğe uğrayan Properties kutusu VB5.0 ile bambaşka bir görünüm kazanmamış ama işlevselliği arttırılmış, yeni kutunun en güzel özelliği listeden seçilen kontrol özelliklerinin kısa açıklamalarını kutun hemen altında bir pencerede görebilmeniz. Properties kutusu ayrıca isim ve kategorilere göre ayrılmış, kullanıcı kendi isteğine göre kontrol özeliklerini harf sırasına veya kategorilere göre listeleyebiliyor.

Kod penceresine ilk bakıldığında her zamanki gibi sol tarafta kontrol sağ tarafta özellik kutularını görüyorsunuz, "bir kaç satır kod yazalım bakalım" dediğinizde ise bütün işler değişiyor, çünkü VB yazdığınız ilk kontrol isminde veya komut’ta size bir sürpriz hazırlamış oluyor. Belki de yeni VB’nin en can alıcı özelliklerinden biri olan kod yardımı gerçekten süper tasarlanmış, kullanıcı bir kontrol ismi girdiğinde VB kontrol ile ilgili kullanabileceğiniz tüm özellikleri bir araya getiriyor ve bir liste hazırlıyor, programcıya sadece ok tuşlarıyla uygun özelliği bulup ENTER ile kodların arasına eklemek kalıyor. Pencereye bir komut girildiğinde ise VB hemen ilgili komut için bir yardım baloncuğu çıkarıyor.

Kod yardımı sadece kontroller ve komutlar için değil tüm sınıflar, değerler gibi VB’nin tüm bileşenleri için geçerli. VB 4.0 ile gelen altyordamların çizgi ile ayrılma özelliği VB5’de default olarak geliyor.

Yapısal Değişiklikler

Microsoft’un Visual Basic takımı programı oldukça değişik bir yapıya sokmuş, VB5’i diğerlerinden farklı kılan tek mantık aslında ActiveX kontrolleri ve bu kontrollerin Internet ve Intranet ortamlarında kullanılabilmesini iken, Microsoft’un bu yolda yaptığı değişiklikler programın sadece arabiriminin değil felsefesini de biraz değiştirmiş gibi görünüyor.

Programlar artık bir proje gibi değil de bir "GRUP" gibi görünüyor, kod aşamasında yazdığınız tüm ActiveX kontrolleri, dökümanları, sınıflar ve formlar VB5’de bir grup gibi görünüyor. VB5 tüm bir projeyi kaydetmek istediğinizde projenin soyadını VBG olarak atıyor. Grup mantığı içerisinde kontrolleri ve diğer bileşenleri başka projelerde veya tek başına kullanabilseniz bile gruplar, örneğin bir ActiveX kontrolü bulunamadığında hata veriyor ve çalışmıyor.

Programlarınızın tüm hiyerarşisini her zamanki gibi Project penceresinde görebiliyor ve değiştirebiliyorsunuz, her ActiveX dökümanı, sınıf, form ve ileride değineceğimiz "Property Page" yaratıldığı anda burada beliriyor.

Kontrol özelliklerini "Expose Etmek"
Bir Visual Basic kontrolünü seçtiğinizde ve properties kutusuna baktığınızda onun kullanabileceğiniz tüm özelliklerini görürsünüz. Kendi tasarladığınız kontroller için de değişen bir şey yok. Kontrol, tasarım aşamasındayken tüm özellikleri properties kutucuğunda beliriyor, fakat kontrolü form üzerine yerleştirdiğinizde işler değişiyor çünkü kontrolün sadece renk boyu gibi temel özelliklerini listede görebiliyorsunuz. Microsoft’un amacı son kullanıcının bir kontrolün tüm özelliklerini değil sadece programcının tayin ettiği özellikleri özellikleri görebilmesini sağlamak. Bu da Visual Basic 5’deki bazı komutlar ve sihirbazlarla sağlanmış. Menülerden bulacağınız "ActiveX Control Wizard" ile kontrolde programınız tarafından kullanacağınız özellikleri seçebilir yani kontrol özelliklerinin bazılarını expose edebilirsiniz.

Bir kontrolü expose ettiğinizde aşağıdaki gibi kodlar ortaya çıkacaktır. Get Color ve Let Color kontrol özelliklerinin form içinden hem okunmasını hem de değiştirilmesini sağlamak amacıyla kullanılmıştır.

Option Explicit

Public Property Get Color() As Long
    Color = BackColor
End Property

Public Property Let Color(NewValue As Long)
    BackColor = NewValue
End Property

Private Sub UserControl_Initialize()

End Sub
Property Page
Yukarıda belirttiğimiz gibi sadece programcının kullanılmasını istediği özellikler properties kutucuğunda görünecek ve program çalışırken değiştirilebilecektir. Expose edilen her bir özellik aynı zamanda Property Page denilen ve Properties kutucuğuna çok benzeyen bir kutucuğa yerleştirilebilir. Nedir Property Page? Microsoft, programcıların tasarladıkları uygulamaya tam olarak hakim olmalarını istemi ve onlara bir çok seçenek vermiş. Property Page, programcının en çok kullandığı özellikleri bir araya getirmesini sağlamak amacını taşıyan bir araç. Expose ettiğiniz veya kontrol ile standart olarak gelen tüm özellikleri kodlar aracılığıyla yada VB sihirbazlarıyla Propert Page’lere eklemek mümkün.

Program içerisinde bir kontrol en fazla 1 property page’e sahip olabilirken projede istediğiniz kadar property page kullanabilirsiniz.

Visual Basic’de yeni bir fonksiyon: enumerate
Bir değişkene atanabilen tüm değerleri teker teker saymak anlamına gelen "enumerate" olayı MS Visual C++ gibi güçlü programlama dillerinde çok önceleri kullanılmaya başlansa da Visual Basic’e hiç bir zaman dahil edilmemişti. VB5 ile birlikte ENUM fonksiyonunu API’lerden çağrılmasına izin verilmiş.

Aşağıdaki küçük program fonksiyonun yapabileceklerinin en güzel kanıtı. Form üzerinde bir liste kutusu bir de komut butonu yarattıktan sonra aşağpıdaki kodları girin. Program, Windows içinde açık olan tüm pencereleri, açıklamalarını ve kodlarını liste kutusuna yazacaktır.

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _
ByVal lParam As Long) As Long

Function enumerate(ByVal xhwnd As Long, ByVal lret As Long) As Boolean
If lret = 0 Then
enumerate = False
Else
Form1.List1.AddItem CStr(xhwnd)
enumerate = True
End If
End Function


Private Sub Command1_Click()
Dim x As Integer
x = EnumWindows(AddressOf enumerate, 5)

Select Case x
    Case 0
        MsgBox "Hata oluştu"
    Case Else
        MsgBox "Tüm uygulamalardaki pencere sayısı " & List1.ListCount
    End Select
End Sub

İlk ActiveX uygulaması

VB5 içerisinde tasarladığınız kontrolleri Internet ortamına aktarabileceğinizi söylemiştik. Internet ile haşır neşir olduysanız mutlaka bilgisayarınıza ActiveX kontrolünü yüklemek isteyen bir site ile karşılaşmışsınızdır. Explorer kontrolü açmak istediğinde "Installing Components..." yazısını durum çubuğuna yerleştirir. Eğer merak ediyorsanız siz de bir ActiveX kontrolü yaratabilir ve Internet Explorer web tarayıcınız aracılığıyla yarattığınız kontrolü izleyebilirsiniz. (Netscape ne ActiveX kontrollerini ne de VBScript’i henüz desteklemiyor)

Öncelikle VB açıldığında yeni bir ActiveX kontrolü yaratın ve bunun içerisine rastgele işler yapan bir buton v.s. yerleştirin. Bundan sonra yeni bir form yaratın ve arkada kalan ActiveX kontrolünü "silmeden tamamen KAPATIN", kontrol çobuğunda silik olan bir buton, renklenecek ve kullanılabilir hale gelecektir. Bu butona basarak formunuzun üstüne gidin ve sağ tuşa basılı olarak formun üzerine bir kare çizin. Şu anda kendi yarattığınız ve Microsoft’un liste kutusu, klasör kutusu gibi ve aynı kategoriye giren bir ActiveX kontrolünü formunuzun üstüne yerleştirdiniz. VB5 ayrıca kontrolleri derleyerek OCX haline getirmenizi ve sonradan formlarınızın içinde bunları tekrar kullanabilmenize izin vermektedir.

Bu işlemlerden sonra VB projenizi DENEME.VBG olarak kaydedin ve "Application Setup Wizard"ı çalıştırın. Bu program size ne tip bir uygulama yapmak istediğinizi sorduğunda ona ActiveX uygulaması olarak cevap verin ve DENEME.VBG’yi seçerek işleme başlayın. Tüm işlemler bittiğinde programı derlendiğiniz dizinde bir CAB uzantılı bir de HTM uzantılı ili dosya ile karşılaşacaksınız. HTM dosyasının içeriğine baktığınızda VB tarafından otomatik olarak yazılmış olan aşağıdakine benzer kodlarla karşılaşacaksınız.

<OBJECT ID="UserControl1" WIDTH=187 HEIGHT=115 CLASSID="CLSID:1E00EB36-8FAE-11D0-96A2-0080ADAAB4E4" CODEBASE="DENEME1.CAB#version=1,0,0,0"> </OBJECT> </plaintext> CLASSID ifadesi hazırlayacağınız her ActiveX kontrolü için, hatta kontrolü her derlediğinizde farklı olacaktır, CODEBASE ise her zaman tasarladığınız projenin adını taşıyacaktır. CLASSID ile kontrolün içerisindeki numaranın tutmaması durumunda ise Internet Explorer bunu anlayacak ve kontrolü görüntülemeyecektir. <p> Nihayet HTM sayfasını Explorer ile görüntülediğinizde kontrolün aynı Visual Basic formunda çalıştığı gibi çalıştığına şahit olacaksınız. En sonunda Internet üzerinde de çalışabilen bir uygulama geliştirdiniz. <hr>