İndir

Transkript

İndir
BÖLÜM 4
4.VISUAL BASIC İLE PROGRAMLAMAYA GİRİŞ
4-1 VISUAL BASIC İLE YAZILIM GELİŞTİRME
Visual Basic ilk açıldığında görülen New Project penceresi Visual Basic 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.
48
 BİLGİSAYAR KULLANMA-II
Kaya
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.
4-1-1 KULLANICI ARAYÜZÜ GERÇEKLEŞTİRİMİ
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:
49
 BİLGİSAYAR KULLANMA-II
Kaya
Bileşen
Özellik
Değer
MDIForm
Name
frmANA
Caption
MetinYaz
Name
frmDok
Caption
isimsiz
MDIChild
True
Form1
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.
50
 BİLGİSAYAR KULLANMA-II
Kaya
Şekil 4.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
51
 BİLGİSAYAR KULLANMA-II
Kaya
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.
4-1-1-1 MENÜ EKLEME, DOSYA MENÜSÜ
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.
52
 BİLGİSAYAR KULLANMA-II
Kaya
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)
-
(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
53
Ctrl+Z Gri
 BİLGİSAYAR KULLANMA-II
Kaya
If Forms(i).Name = "frmDok" Then
If Forms(i).kapat = False Thenbulundu = 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()
Form Ekle
End Sub
54
 BİLGİSAYAR KULLANMA-II
Kaya
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
55
 BİLGİSAYAR KULLANMA-II
Kaya
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.
4-1-1-2 DÜZEN MENÜSÜ, YARDIM MENÜSÜ VE PENCERE MENÜSÜ
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
56
 BİLGİSAYAR KULLANMA-II
Kaya
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
57
 BİLGİSAYAR KULLANMA-II
Kaya
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
58
 BİLGİSAYAR KULLANMA-II
Kaya
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
59
 BİLGİSAYAR KULLANMA-II
Kaya
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)
Yer&lestir
(mnuYerlestir)
&Yatay Yerlestir
(mnuYatay)
&Dikey Yerlestir
(mnuDikey)
Dü&zenle
(mnuDuzenle)
60
WindowList
 BİLGİSAYAR KULLANMA-II
Kaya
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
4-2
NESNEYE YÖNELİK YAKLAŞIM
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:
2.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
61
 BİLGİSAYAR KULLANMA-II
Kaya
Bu kümeyi yok etmek için ise frmAna formunun MDIForm_Terminate olay yordamına
aşağodaki satırı ekleyin.
Set dokKume = Nothing
2.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
2.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
62
 BİLGİSAYAR KULLANMA-II
Kaya
2.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
2.5 Daha sonra degisti ve kapat değişkenlerine yapılan tüm erişimleri objDok.degisti
veya objDok.kapat olarak değiştirin.
2.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
2.7 Doküman içinde bir metni aramak için frmAna formunda Duzen menüsüne
aşağıdaki menü seçeneğini ekleyin.
DuzenCiz2)
&Bul
(mnuBul)
Ctrl+B Gri
63
 BİLGİSAYAR KULLANMA-II
Kaya
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
Name
cmdIptal
Cancel
True
CommandButton
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
64
 BİLGİSAYAR KULLANMA-II
Kaya
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
4-3
MİCROSOFT COMMON DİALOG CONTROL NESNELERİNİN
KULLANILMASI, ARAÇ ÇUBUĞU VE GERİ KALAN MENÜ OĞELERİ.
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.
3.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.
65
 BİLGİSAYAR KULLANMA-II
Kaya
Name txtDok
Apperance 0-Flat
BorderStyle 0-No Border
3.2 frmAna formuna bir CommonDialog nesnesi yerleştirin.
3.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 _
66
 BİLGİSAYAR KULLANMA-II
Kaya
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.
3.4 Dosya menüsünün Kaydet seçeneği için aşağıdaki kodu ekleyin.
Private Sub mnuKaydet_Click()
With frmAna.ActiveForm
67
 BİLGİSAYAR KULLANMA-II
Kaya
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.
3.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"
68
 BİLGİSAYAR KULLANMA-II
Kaya
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
69
 BİLGİSAYAR KULLANMA-II
Kaya
3.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
3.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
70
 BİLGİSAYAR KULLANMA-II
Kaya
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
3.8 frmAna formuna bir araç çubuğu (ToolBar) ve bir ImageList ekleyin.
ImageListresim 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
71
 BİLGİSAYAR KULLANMA-II
Kaya
Case "Kaydet": mnuKaydet_Click
End Select
End Sub
3.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
72
 BİLGİSAYAR KULLANMA-II
Kaya
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 = ""
4-3-1 YAZDIRMA AYARLARI VE YAZDIRMA
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.
3.1.1 Dosya menüsü Yazdırma Ayarı seçeneği için aşağıdaki kodu frmAna formuna
ekleyin.
73
 BİLGİSAYAR KULLANMA-II
Kaya
Private Sub mnuYAyar_Click()
CommonDialog1.Flags = cdlPDPrintSetup
CommonDialog1.PrinterDefault = True
CommonDialog1.ShowPrinter
End Sub
3.1.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
74
 BİLGİSAYAR KULLANMA-II
Kaya
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.
75

Benzer belgeler