Visual Basic Program Örnekleri
Visual Basic ve Renk
Visual Basic’in renk kutusundan seçtiğiniz renkler 16’lık sayı
düzenine KK, YY, MM iki haneli ve 16’lık düzende sayılardır.
Visual Basic’i kullanarak her bir renk’ten 1’den 255’e kadar
bir ton alabilir, bunları karıştırabilir ve böylece 16.581.375
adet değişik renk elde edebilirsiniz. İşte size RGB komutu
kullanılarak form üzerine basit bir palet yaratan ufak bir
program. RGB değerini değiştirerek çok değişik görüntüler elde
edebilirsiniz. Örnekte ayrıca bir formun ortasının nasıl
bulunacağını da görebilirsiniz.
Private Sub Form_Click()
ScaleMode = 1 ' Ölçü sistemini piksele çevir
CX = ScaleWidth / 2 ' Formun dikey ortasını bul
CY = ScaleHeight / 2 ' Formun yatay ortasını bul
DrawWidth = 3 ' Çizim genişliğini ayarla
r = 100
For I = 50 To 0 Step -1
F = I / 50
F1 = 1 - F: F2 = 1 + F ' Hesaplamalar... r = r + 10: b = b + 10
If b > 50 Then g = g + 5 ForeColor = RGB(r, g, b) ' Önalan rengini belirle
Line (CX * F1, CY * F1)-(CX * F2, CY * F2), , BF
Next I End Sub |
Programınızı yazdıktan sonra formunuzun üzerine bir kere tıklayın.
Güzel bir renk paletinin oluştuğunu göreceksiniz.
Visual Basic’in size sunduğu diğer bir renk komutu ise
QBColor komutudur. Bu komutu kullanarak QBASIC’ten kalan sınırlı
15 tane temel rengi kullanabilirsiniz. Aktif formun arkaplan rengini
maviye boyamak için şunun gibi bir komut kullanmalısınız:
Form1.ForeColor = QBColor(1) |
Visual Basic'te yeni sürümlerdeki kolaylık
VB’nin her yeni sürümü ile programcıların işini daha da
kolaylaştıracak komutlar ve özellikler geliyor.
İşte With (Birlikte) komutu bunlara en güzel örnek.
Şimdi aşağıdaki satırları inceleyin ve bazı
komutların ne kadar gereksiz olarak kullanıldığını görün:
Private Sub Form_Load()
Form1.Height = 4000
Form1.Caption = "With Örneği"
Form1.BackColor = QBColor(6)
End Sub
|
Burada dikkat ettiğiniz gibi Form1 nesnesi her satırda tekrarlanmış.
VB 4.0 ile bu soruna bir çözüm
getirilerek With komutu yaratılmıştır.
Aşağıdaki örnek size bu komutun nasıl kullanıldığı hakkında
fikir verecektir.
Private Sub Form_Load()
With Form1 'Form1'i kullanarak...
.Height = 4000 'Yüksekliği 4000,.Caption = "With Örneği"
'Form başlığını "With Örneği",
.BackColor = QBColor(6) 'Arkaplan rengini yeşil yap.
End With 'Komutu bitir
End Sub
|
Bu komutu kullanırken With ve End With satırları
arasına yine With ve End With satırlarını
girebilirsiniz fakat bu iki komut arasına
komplike komutlar ve döngüler eklememelisiniz.
Bu hem programınızı yavaşlatır hem de ciddi
hatalara sebep olabilir.
Visual Basic ile Kes - Kopyala -Yapıştır
Windows altında çalışan hemen hemen tüm metin editörleri
panoyu kullanır. Panoya veri yapıştırmayı, panodan veri
almayı geçen aylarda verdiğimiz örneklerle iyice açıkladık.
Peki metin editörleri metinin hangi parçasının seçildiğini
nasıl anlıyor. Metnin belirli bir kısmını nasıl kesip alıyor?
İstenilen metni bütün bir yazı içinde nasıl buluyor?
Bu dediklerimizi yapmak için Visual Basic ile hazırlanmış
tüm metin editörleri hemen hemen aynı teknikleri uygular.
İşte bunlardan bir kaçı:
Metnin, kullanıcı tarafından seçilen kısmının anlaşılıp
panoya kopyalanması için (Kopyala)
ClipBoard.SetText screen.ActiveControl.SelText |
Metnin, kullanıcı tarafından seçilen kısmının anlaşılıp panoya
kopyalanması ve seçilen yerin silinmesi için (Kes)
ClipBoard.SetText screen.ActiveControl.SelText |
' Seçilen metni ilk önce kopyala
screen.ActiveControl.SelText = "" |
' Sonra işaretlenen yeri sil.
Panodan yapıştırılan kısmın kullanıcı tarafından seçilen
kısmın üzerine yazılması için(Yapıştır)
screen.ActiveControl.SelText = ClipBoard.GetText() |
Metnin belirtilen kısmını anlamak ve metnin herhangi
bir kısmını otomatik olarak seçtirmek için SelText komutunu,
metnin hangi kısımdan seçilmeye başlanacağını tayin etmek için
SelStart komutunu, Seçilecek metnin uzunluğunu ayarlamak için
ise SelLength komutunu kullanıyoruz. Hatırlayacağınız gibi
Microsoft Word kullanılırken CTRL+A tuş kombinasyonu tüm metni
otomatik olarak seçebiliyordu. Sadece ufacık bir kod parçasıyla
bunu gerçekleştirebiliriz.
' SelStart komutu metnin işaretlenen kısmının nereden
' başlayacağını belirtir. Biz işaretlemeye metnin
' başından başlamak istiyoruz...
text1.SelLength = Len(text1.Text) |
'Metnin işaretlenen kısmı metnin uzunluğu kadar olacak
Peki metin editörleri uzun bir yazının içinde istediğimiz kelimeyi nasıl arayıp buluyorlar?
Bunu anlamak için aşağıdaki kodu bir inceleyin.
Dim ara, nerede ' Kullanacağımız değişkenleri atayalım
' Kullanıcıdan aranacak metni iste
ara = InputBox("Aranacak metni girin:",
"Metin Teknikleri Örneği", , 1000, 1000)
nerede = InStr(text1.Text, ara) ' Metni yazı içinde ara
If nerede Then ' Bulunursa...
text1.SelStart = nerede - 1
' Bulunan metnin başını işaretle
text1.SelLength = Len(ara)
' Bulunan metnin uzunluğu kadar yazıyı işaretle
Else ' Metin bulunamazsa...
MsgBox "Metin bulunamadı!", 64
End If
|
Bütün bunları bildikten sonra oturup kendi metin editörünüzü kolayca yazabilirsiniz...
Yeni Kontroller: TreeView
Zaman zaman Visual Basic 4.0 ile gelen yeni kontrollere değiniyoruz.
İşte bu yeni kontrollerden birisi: Treeview. Windows 95’in Gezgininde
sol klasör penceresi bu kontrolle oluşturulmuş. Kontrolün kullanımı
gayet basit, nasıl kullanıldığını merak ediyorsanız hemen boş bir
formun üzerine bir Treeviev kontrolü yaratın ve aşağıdaki kodları
yazmaya başlayın. Kontrolün kullanımı hakkındaki tüm açıklamalar
kodların arasında verilmiştir.
Private Sub Form_Load()
Dim nodX As Node
' Bir metni ana başlık olarak atamak için aşağıdaki
gibi bir komut kullanmalısınız.
Set nodX = TreeView1.Nodes.Add(, , , "Müzik") 'Aşağıdakinin amacı 1. Başlığa bir alt başlık eklemektir.
' Eklediğiniz altbaşlıklar eklenme sıralarına göre
görüntülenir.
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Jazz")
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Pop")
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Klasik")
Set nodX = TreeView1.Nodes.Add(1, tvwChild, , "Rock")
' Pop alt başlığı altına 2.altbaşlık daha ekliyoruz.
Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Techno")
Set nodX = TreeView1.Nodes.Add(3, tvwChild, , "Rave")
' 2. Anabaşlığı ekliyoruz.
Set nodX = TreeView1.Nodes.Add(, , , "Resim")
' Tüm ağacı göstermek için kontrolü tazele.
nodX.EnsureVisible
End Sub |
' Ağacın dallarından birine tıklandığında...
Private Sub TreeView1_NodeClick(ByVal Node As Node)
mesaj$ = "Tıkladığınız Liste Seçeneği: " + Node.Text
tip = 64
baslik$ = "Treeview Örneği"
' Hangi dala tıklandığını söyle.
MsgBox mesaj$, tip, baslik$
End Sub |
Dosya Kopyalamak
VB'de dosyaları bir yerden bir yere kopyalamak için FileCopy isimli bir
komut olduğunu biliyor muydunuz?
FileCopy "C:\COMMAND.COM", "C:\COMMAND.XXX"
gibi bir komut verdiğinizde ana dizinde bulunan COMMAND.COM isimli
dosyanın yine aynı dizinde COMMAND.XXX isimli bir kopyası oluşacaktır.
KeyPreview
Option Explicit
Const KEY_F1 = &H70
Const KEY_F2 = &H71
Const KEY_ESCAPE = &H1B |
Şimdi de bu yukarıda belirttiğiniz tuşlara basıldığında neler
olacağını tayin edelim. Yukarıda belirtmediğiniz tuşlara bastığınızda
(Aşağıda bunları kullanmış olsanız bile) Formunuz bunu daha önceden
olduğu gibi sıradan tuş vuruşları olarak algılayacaktır.
Sub Form_KeyDown (KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case KEY_F1: Text1.text = Date$
' F1 tuşuna basıldığında metin kutusundaki metin
' silinsin ve yerine tarih atansın.
Case KEY_F2: Text1.Text = Time$
'F2 tuşu ise metin kutumuza zamanı yazsın
Case KEY_ESCAPE: Unload Me
' ESC tuşumuz ise aktif formu bellekten atsın.
End Select
End Sub |
Programlarınızda kullanabileceğiniz diğer tuş kodlarını Visual Basic
ile gelen ve tüm diğer sabitlerin bulunduğu CONSTANT.TXT dosyasından
bulabilirsiniz. Ayrıca yukarıda belirttiğimiz tuşları diğer tuş
kombinasyonlarıyla da kullanabilirsiniz (Örnek CTRL+ALT+F5 gibi.)
Masaüstünün Resmini değiştirmek
Visual Basic ile masaüstü resmini değiştirmek çok kolaydır.
Sadece USER32.DLL dosyasında bulunan bir fonksiyonu çağırmak
yeterlidir. Yemedik, içmedik sizin için bu API'yi kullanan bir
program oluşturduk. Öncelikle FORMdan ayrı bir BAS modülüne
aşağıdaki tek bir satırı girin.
Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal
uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni
As Long) As Long |
Fonksiyonu programınıza tanıttıktan sonra şekildeki gibi
bir form oluşturun ve ilgili bölümlere kodları yazın.
Private Sub Form_Load()
Dim Temp As String Temp = InputBox("Lütfen WINDOWS
klasörünü girin", "", "C:\WINDOWS\") If Temp = "" Then End 'Vazgeç'e basıldı
If Right$(Temp, 1) <> "\" Then Temp = Temp + "\"
list1.Tag = Temp
Temp = Temp + "*.bmp"
Temp = Dir$(Temp)
Do While Temp$ <> ""
Temp = Dir$ 'Dosya bulunamazsa döngüden çık.
If Temp = "" Then Exit Do
list1.AddItem Temp
Loop
list1.AddItem "(Yok)"
Show
list1.SetFocus
list1.ListIndex = 0
End Sub |
'Küçük açıklama: Formun yüklenme aşamasında
'Setfocus olayını kullanırsanız VB hata verir.
Private Sub list1_DblClick()
Dim Temp As String
Dim BMPFile As String
Temp = Tag
If list1.Text = "(Yok)" Then
BMPFile = "(Yok)"
Else
BMPFile = Temp + (list1)
End If SystemParametersInfo SPI_SETDESKWALLPAPER, 0,
ByVal BMPFile, SPIF_UPDATEINIFILE End Sub 'Değiştir tuşu
|
Private Sub Command1_Click()
list1_DblClick
End Sub |
Programınızı çalıştırdıktan sonra karşınıza BMP dosyalarınızın
yerini soran bir mesaj kutusu gelecektir.
Mesaj kutusuna uygun bir dizin girdikten sonra artık liste kutusundaki
ilgili resme çift tıklayarak veya değiştir tuşuna basarak resmi
masaüstüne yükleyebilirsiniz. Program aynı zamanda WIN.INI dosyasını
da haberdar ediyor.
--------------------------------------------------------------------------------
Not :Bu Bilgiler Günümüzde yayınlanmakta olan BYTE, PC WORLD, CHIP Degilerinden
ve verdikleri CD lerden yararlanarak hazırlanmıştır.
---------------------------------------------------------------------------------