文档库 最新最全的文档下载
当前位置:文档库 › bil-04

bil-04

bil-04
bil-04

B?LüM4

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.

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:

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:

Program ? ?al ??t ?rd ???n ?zda a ?a ??daki ekran g?rüntüsü ??kacakt ?r. Option Explicit Dim frmMetin As New frmDok Private Sub MDIForm_Load() frmMetin.Show End Sub Startup Object: frmAna Project Name: metinyaz 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

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.

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.

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

Private Sub Form_Resize() Me.txtDok.Top = 0 Me.txtDok.Left = 0

Me.txtDok.Width = Me.ScaleWidth Me.txtDok.Height = Me.ScaleHeight End Sub Me.Height = Screen.Height * 0.75 Me.Width = Screen.Width * 0.75

Me.Move (Screen.Height - Me.Height) / 2, _(Screen.Width - Me.Width) / 2

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) 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

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

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 B ?LG ?SAYAR KULLANMA-II Kaya

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. Private Sub txtDok_Change()

degisti = True End Sub 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 B ?LG ?SAYAR KULLANMA-II Kaya

Daha sonra frmDok formunun a ?a ??daki olay yordamlar ?ndan MenuGunle yordam ? ?a ?r ?lmal ?d ?r. mnuKes.Enabled = False mnuSil.Enabled = False End If

If Clipboard.GetFormat(vbCFText) Then mnuYapistir.Enabled = True Else

mnuYapistir.Enabled = True End If End If

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

B ?LG ?SAYAR KULLANMA-II Kaya

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.

?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)

MenuGunle End Sub Private Sub mnuMetinYazH_Click() frmMetinYazH.Show vbModal End Sub B ?LG ?SAYAR KULLANMA-II Kaya

Bu menü o ?eleri i?in a ?a ??daki kodu frmAna formuna ekleyin.

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. 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 Public dokKume As New Collection Public kumeIndeksi As Integer 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.

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

2.3 clsDok s ?n ?f ? i?in degisti adl ? bir Property yarat ?p a ?a ??daki kodu ekleyin.

Private mtndegisti As Boolean Public kapat As Boolean Public dokIsim As String Public dokForm As frmDok Set dokKume =Nothing

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

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.

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:

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

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

If Cancel = False Then

frmAna.dokKume.Remove CStr(kumeNo) Set objDok = Nothing End If

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

B ?LG ?SAYAR KULLANMA-II Kaya

4-3 M ?CROSOFT COMMON D ?ALOG CONTROL NESNELER ?N ?N KULLANILMASI, ARA? ?UBU ?U VE GER ? KALAN MENü O ?ELER ?.

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

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.

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

B ?LG ?SAYAR KULLANMA-II Kaya

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.

Name txtDok

Apperance 0-Flat

BorderStyle 0-No Border

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 _

B?LG?SAYAR KULLANMA-II Kaya

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.

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

B ?LG ?SAYAR KULLANMA-II Kaya Private Sub mnuKaydet_Click() With frmAna.ActiveForm

相关文档