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.

  1. Kullanıcı Arayüzü Gerçekleştirimi

  2. 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.

  3. Menü Ekleme, Dosya Menüsü:

  4. 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.

  5. Düzen Menüsü, Yardım Menüsü ve Pencere Menüsü:

  6. 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 formuna 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

  7. Nesneye Yönelik Yaklaşım:

  8. 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

  9. Microsoft Common Dialog Control nesnelerinin kullanılması, araç çubuğu ve geri kalan menü oğeleri.

  10. 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
    Metin 0 - Left  0 - Text  1 - Inset  1 - Spring
    Caps  1 - Center  1 - CAPS  1 - Inset  2 - Content
    NumLock  1 - Center  2 - NUM LOCK  1-Inset  2 - Content
    Ins  1 - Center  3 - INS  1 - Inset  2 - Content
    Scroll  1 - Center  4 - SCROLL  1 - Inset  2 - Content
    Time  1 - Center  5 - Time  1 - Inset  2 - Content
    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 = ""

  1. Yazdırma ayarları ve Yazdırma:

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.
 
 


 
 
 
 
 

back_sel.gif (1050 bytes)forw_sel.gif (1053 bytes)

Ana Sayfa