1. VISUAL BASIC 5 İLE PROGRAMLAMAYA GENEL BİR BAKIŞ
1.1. VISUAL BASIC 5 İLE YAZILIM GELİŞTİRME
Visual Basic 5 ilk açıldığında görülen New Project penceresi Visual Basic 5 ile neler yapılabileceğinin bir özeti gibidir.
Standart EXE:
Normal bir uygulama yazılımı geliştirmek için kullanılır. Buna örnek olarak, bir kütüphane otomasyonu sistemi, adres etiket programı gibi yazılımlar verilebilir.
ActiveX EXE:
Başka programların kendi verilerine erişebilmesine olanak tanıyan programlar geliştirmek için kullanılır. Bu programlar işlem dışı sunucular olarak da adlandırılırlar, çünkü bu programların kendi işlem kesimleri vardır. Activex EXE programlar kendi işlevlerinden yararlanan programlardan ayrı bir program olarak çalışırlar.
ActiveX DLL:
Başka programlar tarafından kullanılabilen fonksiyon ve yordam kümelerini içeren kütüphanelerdir. DLL dosyaları işlem içi sunucular olarak da adlandırılırlar. ActiveX DLL dosyalar kendi işlevlerinden yararlanan programlarla aynı bellek alanında işlem görürler. ActiveX EXE programlardaki gibi ayrı bir program olarak çalıştırılmazlar.
ActiveX Control:
Bir programa eklemek için kullanıcının ihtiyaç duyduğu kontrol nesnelerini kendisinin tasarlayıp gerçekleştirmesi için kullanılır. Visual Basic programlama sisteminde iki tür kontrol nesnesi bulunur. Bunlar içsel kontrol nesneleri ve ActiveX kontrol nesneleridir. İçsel kontrol nesneleri Visual Basic açıldığında araç kutusunda görülen nesnelerdir. ActiveX control nesneleri araç kutusuna eklenebilen kullanıcıya özel kontrol nesneleridir.
ActiveX Document DLL:
Web sayfalarında kullanılmak üzere doküman hazırlamak için kullanılır. Bu dokümanlar bir web browser kullanılarak gösterildiğinde içerdiği işlevlerin yer aldığı bir kütüphaneye ihtiyaç duyarlar. İhtiyaç duyulan bu işlevler ActiveX Document DLL kütüphanelerinde bulunur. Bu kütüphanelerdeki işlevler işlevi kullanan dokümanla aynı bellek alanında çalıştığı için bunlar işlem içi bileşenlerdir.
ActiveX Document EXE:
ActiveX Document DLL ile aynıdır. Farklı olan kesim, içerdiği işlevlerin işlem dışı olarak çalışmasıdır. İşlem içi bileşenler daha hızlı çalışma özelliğine sahiptir.
ADD IN:
Visual Basic ortamına bazı işlemlerin otomatikleştirilmesi için eklenebilen bir bileşen yaratmak için kullanılır.
VB Application Wizard:
Programın bir kısmını otomatik olarak üretmek için kullanılan bir bileşendir. Bir çok seçeneği sayesinde programın kullanıcı arabiriminin çoğunu otomatik olarak üretir.
Visual Basic ile yapılabilecekler kısaca yukarıda belirtildiği gibidir.
Bir uygulama geliştirirken önce geliştirilecek olan uygulamanın bunlardan hangisi ile yapılabileceğine bakmak gerekir. Uygulama yazılımları genellikle Standart EXE türündedir.
Şimdi Visual Basic ile Uygulama Yazılımı
geliştirmeyi, kullanıcı arayüzü tasarımını, kod yazmayı, girilen verilerin
doğruluğunu kontrol etmeyi ve hataları ele almayı tekrar gözden geçirmek için bir
örnek tanımlayalım.
Örnek: Wordpad programına benzeyen fakat çoklu doküman arayüzüne sahip bir metin yazma programı gerçekleştirelim.
Yeni bir proje yaratın ve Project menüsünden bir MDI form
ekleyin. MDI form kullanmak bize birden fazla dosyayı aynı anda açabilmeyi sağlayacak.
MDI formu programın temel penceresi, diğer formlar da açılan dosyaların
gösterildiği pencereler olacaktır. Burada dosyaların gösterildiği formlardan sadece
biri yaratılacak, diğerleri kodun içinden gerektikçe yaratılacaktır. Formların
isimlerini ve Caption özelliklerini şu şekilde değiştirin:
Bileşen Özellik Değer MDIForm Name frmANA Caption MetinYaz Form1 Name frmDok Caption isimsiz MDIChild True
FrmDok üzerine bir metin kutusu yerleştirin:
Bileşen Özellik Değer TextBox Name txtDok Text Multiline True ScrollBars 2-vertical
Başlangıç olarak aşağıdaki kodu frmAna formunun kod kesimine ekleyin:
Option Explicit
Dim frmMetin As New frmDok
Private Sub MDIForm_Load()
frmMetin.Show
End Sub
Startup Object: frmAna
Project Name: metinyaz
Programı çalıştırdığınızda aşağıdaki ekran görüntüsü çıkacaktır.
Şekil 1.1. Metinyaz-ilk çalıştırma
Formların icon özelliklerini aşağıdaki gibi düzeltin:
frmAna: note03.ico
frmDok note07.ico
Bir formun icon özelliği formun köşesinde yer alan simgeyi belirler.
Çalışma esnasında gerekli olabilecek form sayısı önceden belli olmadığı için yeni dokümanlar için çalışma esnasında form yaratmak gerekir. Bunun için yukarıdaki kodu frmAna formundan silip yerine aşağıdaki kodu ekleyin.
Option Explicit
Private Sub MDIForm_Load()
FormEkle
End Sub
Private Function FormEkle() As Form
Set FormEkle = New frmDok
FormEkle.Show vbModeless
End Function
Böylece istenilen sayıda form eklemek mümkün hale geldi. Bir form eklemek için FormEkle fonksiyonunu çağırmak yeterlidir.
Program çalıştırılıp metin penceresi büyütüldüğünde içindeki metin kutusunun birlikte büyümediği görülür. Metin kutusunun da form ile beraber büyümesini sağlamak için formun Resize olayına aşağıdaki kodu yazmak gerekir.
Private Sub Form_Resize()
Me.txtDok.Top = 0
Me.txtDok.Left = 0
Me.txtDok.Width = Me.ScaleWidth
Me.txtDok.Height = Me.ScaleHeight
End Sub
Program çalıştığında ekranı ortalaması ve belirli bir büyüklükte çıkması için aşağıdaki kodu MDIForm_Load olay yordamının başına ekleyin.
Me.Height = Screen.Height * 0.75
Me.Width = Screen.Width * 0.75
Me.Move (Screen.Height - Me.Height) / 2, _(Screen.Width - Me.Width) / 2
Şimdi program çalıştırıldığında daha güzel bir ekran görünümüne sahip olduğu görülecektir.
Programın genel iskeletini oluşturduktan sonra, biraz
işlerlik kazandıralım. Bunun için önce bir menü eklemek gerekir. Menüler kullanım
kolaylığı açısından program geliştirirken sık başvurulan öğelerdir.
Aşağıdaki menüyü frmAna formuna ekleyin.
Eklenecek Menüler:
Dosya (mnuDosya) &Yeni (mnuYeni) Ctrl+Y &Aç (mnuAc) Ctrl+A &Kapat (mnuKapat) Gri - (mnuDosyaCiz1) Kayde&t (mnuKaydet) Gri Ye&ni Adla Kaydet (mnuYeniAd) Ctrl+N Gri - (mnuDosyaCiz2) Yazdirma Aya&ri (mnuYAyar) Ya&zdir (mnuYazdir) Ctrl+Z Gri - (mnuDosyaCiz3) Cikis (mnuDosyaCikis) Düzen (mnuDuzen) &Kes (mnuKes) Ctrl+X Gri K&opyala (mnuKopyala) Ctrl+C Gri &Yapistir (mnuYapistir) Ctrl+V Gri &Sil (mnuSil) Del Gri - (mnuDuzenCiz1) &Tümünü Seç (mnuTumunuSec) Gri Zaman/&Tarih (mnuTarih) F5 Gri Yardim (mnuYardim) MetinYaz Hakkinda (mnuMetinYazH)
Dosya menüsü için aşağıdaki kodu frmAna formuna ekleyin.
Public Sub MenuGunle()
Dim bulundu As Boolean
Dim i As Integer
For i = 0 To Forms.Count - 1
If Forms(i).Name = "frmDok" Then
If Forms(i).kapat = False Then
bulundu = True
Exit For
End If
End If
Next i
mnuKapat.Enabled = bulundu
mnuKaydet.Enabled = bulundu
mnuYeniAd.Enabled = bulundu
mnuYazdir.Enabled = bulundu
End Sub
Private Sub mnuCikis_Click()
Unload Me
End Sub
Private Sub mnuKapat_Click()
Unload frmAna.ActiveForm
End Sub
Private Sub mnuYeni_Click()
FormEkle
End Sub
Burada MenuGunle yordamı menülerin gri yapılmasını veya aktif hale getirilmesini sağlar. Bunun için önce açık döküman olup olmadığını kontrol eder. Eğer dokümanlardan en az bir tane varsa ve kapatılmak üzere değilse açık dokümanların bulunduğunu menü elemanlarını aktif hale getirerek belirler.
Menüyü geçerli kılmak ve dokümanların değişip değişmediğini kontrol etmek dolayısıyla kapatma işleminin yapılabileceğine karar vermek için için aşağıdaki kodu frmDok formuna ekleyin.
Dim degisti As Boolean
Public kapat As Boolean
Private Sub Form_Load()
frmAna.MenuGunle
End Sub
Private Sub Form_Unload(Cancel As Integer)
If degisti Then
Select Case MsgBox(Me.Caption & " 'deki metin degisti" _ & vbCr & vbCr & " degisiklikler kaydedilsin mi", _ vbExclamation Or vbYesNoCancel, frmAna.Caption)
Case vbYes 'kaydetme işlemleri
Case vbNo 'kapatma işlemine devam et
Case vbCancel
Cancel = True
End Select
End If
kapat = Not Cancel
frmAna.MenuGunle
End Sub
Private Sub txtDok_Change()
degisti = True
End Sub
Burada form kapatılırken dokümanın değişip değişmediği kontrol edilir. Eğer değişiklik varsa kapatılmasına izin vermek için onay istenir. Bu işlem bir mesaj kutusu aracılığıyla yapılır.
Düzen menüsündeki öğeleri aktif hale getirmek veya
gri yapmak için MenuGunle fonksiyonuna aşağıdaki kod eklenmelidir.
mnuTumunuSec.Enabled = bulundu
mnuTarih.Enabled = bulundu
If bulundu = False Then
mnuKopyala.Enabled = False
mnuKes.Enabled = False
mnuSil.Enabled = False
mnuYapistir.Enabled = False
Else
If frmAna.ActiveForm.txtDok.SelLength > 0 Then
mnuKopyala.Enabled = True
mnuKes.Enabled = True
mnuSil.Enabled = True
Else
mnuKopyala.Enabled = False
mnuKes.Enabled = False
mnuSil.Enabled = False
End If
If Clipboard.GetFormat(vbCFText) Then
mnuYapistir.Enabled = True
Else
mnuYapistir.Enabled = True
End If
End If
Daha sonra frmDok formunun aşağıdaki olay yordamlarından MenuGunle yordamı çağrılmalıdır.
Private Sub Form_Activate()
FrmAna.MenuGunle
End Sub
Private Sub txtDok_KeyUp(KeyCode As Integer, Shift As Integer)
FrmAna.MenuGunle
End Sub
Private Sub txtDok_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
FrmAna.MenuGunle
End Sub
FrmDok için menu gunleme işlemi Form_Load olay yordamından kaldırılmalıdır. Menü elemanlarını işler hale getirmek için aşağıdaki kodu frmAna formuna ekleyin
Private Sub mnuKes_Click()
Clipboard.SetText frmAna.ActiveForm.txtDok.SelText
Sil
MenuGunle
End Sub
Private Sub mnuKopyala_Click()
Clipboard.SetText frmAna.ActiveForm.txtDok.SelText
MenuGunle
End Sub
Private Sub mnuYapistir_Click()
Dim metin As String
Dim clipboardMetni As String
Dim selStart As Long
If Clipboard.GetFormat(vbCFText) Then
If frmAna.ActiveForm.txtDok.selLength > 0 Then Sil
metin = frmAna.ActiveForm.txtDok.Text
selStart = frmAna.ActiveForm.txtDok.selStart
clipboardMetni = Clipboard.GetText
frmAna.ActiveForm.txtDok.Text = Left(metin, selStart) & _
clipboardMetni & Right(metin, Len(metin) - selStart)
frmAna.ActiveForm.txtDok.selStart = selStart
Else
MenuGunle
End If
End Sub
Private Sub mnuSil_Click()
Sil
MenuGunle
End Sub
Private Sub mnuTumunuSec_Click()
frmAna.ActiveForm.txtDok.selStart = 0
frmAna.ActiveForm.txtDok.selLength = _
Len(frmAna.ActiveForm.txtDok.Text)
MenuGunle
End Sub
Private Sub mnuTarih_Click()
Dim metin As String
Dim selStart As Long
If frmAna.ActiveForm.txtDok.selLength > 0 Then Sil
metin = frmAna.ActiveForm.txtDok.Text
selStart = frmAna.ActiveForm.txtDok.selStart
frmAna.ActiveForm.txtDok.Text = Left(metin, selStart) & _
Now & Right(metin, Len(metin) - selStart)
frmAna.ActiveForm.txtDok.selStart = selStart
MenuGunle
End Sub
Yardım menüsündeki MetinYaz Hakkında seçeneği için de aşağıdaki formu yaratın.
Bu formu gostermek için ilgili menü seçeneğine aşağıdaki kodu ekleyin.
Private Sub mnuMetinYazH_Click()
frmMetinYazH.Show vbModal
End Sub
Şimdi frmAna formuna aşağıda belirtildiği gibi bir pencere menüsü ekleyin.
Pencere (mnuPencere) WindowList Yer&lestir (mnuYerlestir) &Yatay Yerlestir (mnuYatay) &Dikey Yerlestir (mnuDikey) Dü&zenle (mnuDuzenle)
Bu menü oğeleri için aşağıdaki kodu frmAna formu
na ekleyin.Private Sub mnuYerlestir_Click()
frmAna.Arrange vbCascade
End Sub
Private Sub mnuDikey_Click()
frmAna.Arrange vbTileVertical
End Sub
Private Sub mnuYatay_Click()
frmAna.Arrange vbTileHorizontal
End Sub
Private Sub mnuDuzenle_Click()
frmAna.Arrange vbArrangeIcons
End Sub
Bu noktaya kadar MetinYazma programının kullanıcı
arayüzü tamamlanmış bulunmaktadır.
Programın etkinliğini artırmak için Nesneye Yönelik bir yaklaşım kullanmak daha doğru olacaktır. Programın şu andaki haline bakılırsa doküman pencerelerini birbirinden ayırmak mümkün değildir. Programı Nesneye Yönelik yaklaşımla yeniden yazacak olursak, önce bir döküman sınıfı yaratmak gerekecektir. Adımları sırayla yazacak olursak:
4.1.Dokümanlar için dokKume adlı bir küme (Collection) yaratın. Bunun için frmAna formunun başına aşağıdaki kodu ekleyin.
Public dokKume As New Collection
Public kumeIndeksi As Integer
Bu kümeyi yok etmek için ise frmAna formunun MDIForm_Terminate olay yordamına aşağodaki satırı ekleyin.
Set dokKume = Nothing
4.2. Programa yeni bir sınıf ekleyip adını clsDok olarak değiştirin. Bu sınıfın kod kesimine aşağıdaki kodu ekleyin
Private mtndegisti As Boolean
Public kapat As Boolean
Public dokIsim As String
Public dokForm As frmDok
4.3. clsDok sınıfı için degisti adlı bir Property yaratıp aşağıdaki kodu ekleyin.
Public Property Get degisti() As Variant
degisti = mtndegisti
End Property
Public Property Let degisti(ByVal vNewValue As Variant)
mtndegisti = vNewValue
If mtndegisti Then
If Right(dokForm.Caption, 2) <> " *" Then
dokForm.Caption = dokIsim & " *"
End If
Else
If Right(dokForm.Caption, 2) = " *" Then
dokForm.Caption = dokIsim
End If
End If
End Property
4.4. FrmDok formundaki degisti ve kapat değişken tanımlarını kaldırın ve yerine aşağıdaki kodu yazın.
Public objDok as new clsDok
Dim kumeNo As Integer
Private Sub Form_Load()
frmAna.dokKume.Add objDok, CStr(frmAna.kumeIndeksi)
kumeNo = frmAna.kumeIndeksi
frmAna.kumeIndeksi = frmAna.kumeIndeksi + 1
Me.Caption = Me.Caption & CStr(frmAna.kumeIndeksi)
Set objDok.dokForm = Me
objDok.dokIsim = Me.Caption
End Sub
4.5. Daha sonra degisti ve kapat değişkenlerine yapılan tüm erişimleri objDok.degisti veya objDok.kapat olarak değiştirin.
4.6. frmDok formunun Form_Unload olay yordamının sonuna aşağıdaki kodu ekleyin:
If Cancel = False Then
frmAna.dokKume.Remove CStr(kumeNo)
Set objDok = Nothing
End If
4.7. Doküman içinde bir metni aramak için frmAna formunda Duzen menüsüne aşağıdaki menü seçeneğini ekleyin.
- (mnuDuzenCiz2) &Bul (mnuBul) Ctrl+B Gri
Daha sonra bu seçeneğin aktif veya gri yapılmasını denetlemek için frmAna formundaki MenuGunle yordamının Düzen menüsü için yapılan işlemler kısmına aşağıdaki satırı ekleyin.
mnuBul = bulundu
Arama işlemi için aşağıdaki elemanları içeren ve görünüşü verilmiş olan formu hazırlayın.
| Bileşen | Özellik | Değer |
| Form | Name | frmBul |
| Borderstyle | 3-Fixed Dialog | |
| ControlBox | False | |
| Label | Name | lblBul |
| TextBox | Name | txtBul |
| CommandButton | Name | cmdBul |
| Default | True | |
| CommandButton | Name | cmdIptal |
| Cancel | True |
Bu formu göstermek için frmAna formundaki mnuBul_Click olay yordamına aşağıdaki satırı ekleyin.
frmBul.Show vbModal
Ayrıca frmBul formuna aşağıdaki kodu ekleyin.
Private Sub cmdBul_Click()
Dim dokObj As clsDok
Dim sonuc As Integer
For Each dokObj In frmAna.dokKume
sonuc = InStr(dokObj.dokForm.txtDok.Text, txtBul.Text)
If sonuc > 0 Then
dokObj.dokForm.ZOrder
dokObj.dokForm.txtDok.selStart = sonuc - 1
dokObj.dokForm.txtDok.selLength = Len(txtBul.Text)
Exit For
End If
Next dokObj
Unload Me
End Sub
Private Sub cmdIptal_Click()
Unload Me
End Sub
Bu kısımda Dosya menüsünde eksik kalmış olan
doküman açma ve kaydetme işlemleri, Duzen menüsüne eklenecek olan Font ve Renk
seçenekleri ile bir araç çubuğu MetinYaz programına dahil edilecektir.
Şimdi yapılacak işlemleri adımlar halinde gerçekleştirelim.
5.1. frmDok doküman formundaki metin kutusunu RICHTEXTBOX ile değiştirin. Bunu yapmaktaki amaç, metin kutusunun getirdiği kısıtlamaları ortadan kaldırmaktır. Eklenen RICHTEXTBOX metin kutusunun aşağıda belirtilen özelliklerini belirtildiği gibi değiştirin.
Name txtDok
Apperance 0-Flat
BorderStyle 0-No Border
5.2. frmAna formuna bir CommonDialog nesnesi yerleştirin.
5.3. Dosya menüsünün Aç seçeneği için aşağıdaki kodu frmAna formuna ekleyin.
Private Sub mnuAc_Click()
Dim Cancel As Boolean
On Error GoTo hata
Cancel = False
CommonDialog1.Filter = "Metin dosyalari|*.txt|" & _
"Tum dosyalar|*.*|Rich Text dosyalari|*.rtf"
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlOFNHideReadOnly Or _
cdlOFNFileMustExist
CommonDialog1.ShowOpen
If Not Cancel Then
If UCase(Right(CommonDialog1.filename, 3) )= "RTF" Then
frmAna.ActiveForm.txtDok.LoadFile _
CommonDialog1.filename, rtfRTF
Else
frmAna.ActiveForm.txtDok.LoadFile _
CommonDialog1.filename, rtfText
End If
frmAna.ActiveForm.txtDok.dokIsim = _
CommonDialog1.filename
frmAna.ActiveForm.txtDok.degisti = False
End If
Exit Sub
hata:
Select Case Err.Number
Case cdlCancel: Cancel = True
Case rtfInvalidFileFormat:
Cancel = MsgBox("Dosya açma hatasi", vbExclamation _
Or vbOKOnly, "Dosya Açma")
Resume Next
End Select
End Sub
Burada önce windows’un dosya açma diyalog kutusu kullanılarak bir dosya adı belirleniyor, belirlenen dosya türüne göre RICHTEXTBOX nesnesinin bir metodu olan LOADFILE kullanılarak dosya içeriği metin kutusuna yazılır.
5.4. Dosya menüsünün Kaydet seçeneği için aşağıdaki kodu ekleyin.
Private Sub mnuKaydet_Click()
With frmAna.ActiveForm
If .objDok.dokIsim = "isimsiz" Then
mnuYeniAd_Click
Else
If UCase(Right(.objDok.dokIsim, 3)) = "RTF" Then
.txtDok.SaveFile .objDok.dokIsim, rtfRTF
Else
.txtDok.SaveFile .objDok.dokIsim, rtfText
End If
.objDok.degisti = False
End If
End With
End Sub
Burada eğer doküman yeni yazılmış bir doküman ise bir isim verileceğinden Yeni Adla Kaydet menü seçeneği çağrılmaktadır.
5.5. Dosya menüsünün Yeni Adla Kaydet menü seçeneği için aşağıdaki kodu ekleyin.
Private Sub mnuYeniAd_Click()
Dim Cancel As Boolean
On Error GoTo hata
Cancel = False
CommonDialog1.DefaultExt = ".rtf"
CommonDialog1.Filter = "Metin dosyalari|*.txt|" & _
"Tum dosyalar|*.*|Rich Text dosyalari|*.rtf"
CommonDialog1.CancelError = True
CommonDialog1.Flags = cdlOFNHideReadOnly Or _
cdlOFNOverwritePrompt
CommonDialog1.ShowSave
If Not Cancel Then
If UCase(Right(CommonDialog1.filename, 3)) = "RTF" Then
frmAna.ActiveForm.txtDok.SaveFile _
CommonDialog1.filename, rtfRTF
Else
frmAna.ActiveForm.txtDok.SaveFile _
CommonDialog1.filename, rtfText
End If
frmAna.ActiveForm.objDok.dokIsim = _
CommonDialog1.filename
frmAna.ActiveForm.objDok.degisti = False
End If
Exit Sub
hata:
If Err.Number = cdlCancel Then
Cancel = True
Resume Next
End If
End Sub
5.6. Düzen menüsüne aşağıdaki menü seçeneklerini ekleyin.
- (mnuDuzenCiz3) &Font (mnuFont) &Renk (mnuRenk)
Daha sonra bu seçeneklerin aktif veya gri yapılmasını denetlemek için frmAna formundaki MenuGunle yordamının Düzen menüsü için yapılan işlemler kısmına aşağıdaki satırları ekleyin.
mnuFont = bulundu
mnuRenk = bulundu
5.7. Düzen menüsü Font ve Renk seçenekleri için aşağıdaki kodu ekleyin.
Private Sub mnuFont_Click()
On Error GoTo fonthata
CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects
CommonDialog1.ShowFont
With frmAna.ActiveForm.txtDok
.SelFontName = CommonDialog1.FontName
.SelFontSize = CommonDialog1.FontSize
.SelBold = CommonDialog1.FontBold
.SelItalic = CommonDialog1.FontItalic
.SelStrikeThru = CommonDialog1.FontStrikethru
.SelUnderline = CommonDialog1.FontUnderline
.SelColor = CommonDialog1.Color
End With
fonthata:
End Sub
Private Sub mnuRenk_Click()
On Error GoTo renkhata
CommonDialog1.Flags = cdlCCFullOpen
CommonDialog1.ShowColor
frmAna.ActiveForm.txtDok.SelColor = CommonDialog1.Color
renkhata:
End Sub
5.8. frmAna formuna bir araç çubuğu (ToolBar) ve bir ImageList ekleyin. ImageList resim listesine aşağıda görülen resimleri GRAPHICS\BITMAPS\TLBR_95 dizini içinden ekleyin ve sırasıyla araç çubuğuna yerleştirin.
Yukarıda belirtilen araç çubuğu düğmelerinin anahtar (Key) değerlerini sırasıyla “Yeni”, “Ac” ve “Kaydet” olarak değiştirin.
Kaydet düğmesini aktif hale getirmek veya gri yapmak için aşağıdaki satırı MenuGunle yordamının dosya menüsü ile ilgili kısmına ekleyin.
Toolbar1.Buttons(“Kaydet”).Enabled = bulundu
Daha sonra aşağıdaki kodu frmAna formuna ekleyin.
Private Sub Toolbar1_ButtonClick(ByVal Dugme As Button)
Select Case Dugme.Key
Case "Yeni": mnuYeni_Click
Case "Ac": mnuAc_Click
Case "Kaydet": mnuKaydet_Click
End Select
End Sub
5.9. frmAna formuna bir Durum Çubuğu (StatusBar) ekleyin. Bu durum çubuğuna aşağıda belirtilen özelliklere sahip 7 tane kesim ekleyin.
| Index | Key | Alignment | Style | Bevel | AutoSize |
| 1 | Metin | 0 - Left | 0 - Text | 1 - Inset | 1 - Spring |
| 2 | Caps | 1 - Center | 1 - CAPS | 1 - Inset | 2 - Content |
| 3 | NumLock | 1 - Center | 2 - NUM LOCK | 1-Inset | 2 - Content |
| 4 | Ins | 1 - Center | 3 - INS | 1 - Inset | 2 - Content |
| 5 | Scroll | 1 - Center | 4 - SCROLL | 1 - Inset | 2 - Content |
| 6 | Time | 1 - Center | 5 - Time | 1 - Inset | 2 - Content |
| 7 | Date | 1 – Center | 6 - Date | 1 - Inset | 2 - Content |
Aşağıdaki kodu frmAna formuna ekleyin.
Public Sub SatirNo()
Dim sNo As Integer
With frmAna.ActiveForm.txtDok
If .selStart > 0 Then
sNo = .GetLineFromChar(.selStart)
End If
frmAna.StatusBar1.Panels("Metin").Text = "SATIR: " _
& CStr(sNo + 1)
End With
End Sub
Daha sonra bu yordamı frmDok formunun aşağıdaki yordamlarından çağırın.
Private Sub Form_Activate()
frmAna.MenuGunle
frmAna.SatirNo
End Sub
Private Sub txtDok_SelChange()
frmAna.SatirNo
End Sub
Bunlara ek olarak aşağıdaki satırı frmDok formunun Form_Unload yordamının sonundaki If koşul deyiminin içine de satır numarasını temizlemek için aşağıdaki satırı yazın.
frmAna.StatusBar1.Panels("Metin").Text = ""
Programın eksik kalan kısmı yazdığımız metnin yazıcıdan çıkarılmasıdır. Şimdi programın bu kısmını adımlar halinde gerçekleştirelim.
6.1. Dosya menüsü Yazdırma Ayarı seçeneği için aşağıdaki kodu frmAna formuna ekleyin.
Private Sub mnuYAyar_Click()
CommonDialog1.Flags = cdlPDPrintSetup
CommonDialog1.PrinterDefault = True
CommonDialog1.ShowPrinter
End Sub
6.2. Dosya Menüsünün Yazdır seçeneği için aşağıdaki kodu frmAna formuna ekleyin.
Private Sub mnuYazdir_Click()
Dim cancel As Boolean
Dim kopya As Integer
On Error GoTo yazhata
cancel = False
CommonDialog1.CancelError = True
CommonDialog1.PrinterDefault = True
CommonDialog1.Copies = 1
CommonDialog1.ShowPrinter
If cancel = False Then
For kopya = 1 To CommonDialog1.Copies
Printer.Print frmAna.ActiveForm.txtDok.Text
Printer.EndDoc
Next kopya
End If
Exit Sub
yazhata:
If Err.Number = cdlCancel Then
cancel = True
Resume Next
End If
End Sub
Programın çalışır haldeki son durumu aşağıdaki gibi olacaktır.