|
Abruzzi
|
 |
« : Mayıs 14, 2008, 17:35:01 ÖS » |
|
ÖNSÖZ Günümüz teknolojisinde çok büyük gelişmeler olmaktadır. Bilgisayarın her alanında olduğu gibi yazılım alanında da bu gelişmeler olmaktadır. Dünyanın gerisinde kalmamak ve günün gerçeklerine paralel olarak ilerlemek için gelişmeleri takip etmemiz gereklidir. Şimdiye kadar hep text ekranlarda uğraşıp duruyordum. Daha önce hiç görsel bir programlama diliyle çalışmadığımdan Visual Basic dili çok dikkatimi çekti. Gerekli kaynakları temin edip çalışmaya başladığımda çok sürükleyici bir serüvene girmiş oldum. OOP (Object Oriented Programming Language) bir dil olan Visual Basic dili ile pascal, c gibi programlama dillerine göre daha kolay proje geliştirilebilir ve güncelleşebilir bir yapıya sahiptir. Kullanımı kolay ergonomik bir ara yüze sahip olan DemirBaş Takibi programı ile orta büyüklükteki firmalar, ticari iş yerleri ve devlet kurumlarında çok rahatlıkla malzemelerin takibini yapabilecekleri bir biçimde tasarladım. Bu program sayesinde iş yerinin personel bilgilerini tutabilir, stokların giriş-çıkış işlemlerini takip edebilir ve stok envanterlerini alabileceğiniz gibi kurumun envanterinde azalan stokları takip edebilirsiniz. Bu itibarla bilgisayar yazılımı alanındaki gelişmeleri izleyecek olursak nesneye dayalı programlama dilleri kullanılmaktadır. Nesneye dayalı bir programlama dili öğrenmek için Visual Basic 5.0 ile başlamanın çok yararı olacaktır. İÇİNDEKİLER ÖNSÖZ i İÇİNDEKİLER ii EK 1: Şekiller Listesi v BÖLÜM 1: VİSUAL BASİC’TE ÇALIŞMAYA BAŞLAMAK 1 1.1. Project Penceresi 2 1.2. Code Penceresi 2 1.3. Properties Penceresi 3 1.4. ToolBox Penceresi 4 1.5. Projeyi Kayıt Etmek 5 1.6. Projeyi Yüklemek 5 BÖLÜM 2: FORMLAR 6 2.1. Standart Formlar 6 2.1.1. Standart Formların Özellikleri 6 2.1.2. Formlara Uygulanan Olaylar (Events) 7 2.2. MDI Formlar 9 2.2.1. MDIFormların Özellikleri 9 BÖLÜM 3: ÖZEL KONTROLLER (NESNELER) 10 3.1. Kontrollerin Ortak Özellikleri 11 3.2. Kontrollere Uygulanan Ortak Olaylar (Events) 12 3.3. Label Kontrolü 12 3.3.1. Label Kontrolünün Özellikleri 12 3.4. TextBox Kontrolü 12 3.4.1. TextBox Kontrolünün Özellikleri 13 3.5. Command Buton Kontrolü 13 3.5.1. Command Kontrolünün Özellikleri 13 3.6. ComboBox Kontrolü 14 3.6.1. ComboBox Kontrolünün Özellikleri 14 3.7. DBCombo Kontrolü 14 3.7.1. DBCombo Kontrolünün Özellikleri 15 3.8. MSFlexGrid Kontrolü 15 3.8.1. MSFlexGrid Kontrolünün Özellikleri 15 3.8.2. MSFlexGrid Kontrolü Metodları 16 3.9. Data Kontrolü 16 3.9.1. Data Kontrolünün Özellikleri 17 3.9.2. Data Kontrolünde Meydana Gelen Olaylar 17 3.9.3. Data Kontrolü Metodları 18 BÖLÜM 4 : VERİ TABANI (DATABASE) 19 4.1. Avantaj Ve Dezavantajları 19 4.2. Veritabanı Dosyasının Bölümleri 19 BÖLÜM 5: DEMİRBAŞ TAKİBİ PROGRAMINA GİRİŞ 21 5.1. Veri Tabanı Yapısı 21 5.2. Projenin Formlarının Hazırlanması 22 BÖLÜM 6: PROJE BULUNAN MENÜLERİ 24 6.1. Dosya Menüsü 24 6.1.1. Yeni Stok Kartı 25 6.1.2. Eski Stok Kartı 25 6.1.3. Yeni Personel Kartı 26 6.1.4. Eski Personel Kartı 27 6.1.5. Çıkış 27 6.2. Hareketler Menüsü 27 6.2.1. Giriş/Çıkış işlemleri 27 6.2.2. Eski Hareket 28 6.3. Rapor Menüsü 28 6.3.1. Stok Envanter 28 6.3.2. Kritik Envanter Listesi 28 6.3.3. Personel Listesi 28 6.4. Pencere Menüsü 29 6.5. Yardım Menüsü 29 6.5.1. Demirbaş Takibi Yardım 29 6.5.2. Hakkında 29 BÖLÜM 7: PROJE CODE’LARI 30 7.1. AnaMenü (AnaMenü.frm) 30 7.2. StKartıYeni (StKartıYeni.frm) 32 7.3. StKartıEski (StKartıEski.frm) 35 7.4. PerKartıYeni (PerKartıYeni.frm) 43 7.5. PerKartıEski (PerKartıEski.frm) 46 7.6. Hareket (Hareket.frm) 54 7.7. HareketEski (HareketEski.frm) 57 7.8. Module1 (Module1.bas) 59 KAYNAKLAR 60
EK 1- EK 1: Şekiller Listesi Şekil 1: Visual Basic 5.0’ın görünümü 1 Şekil 2: Visual Basic 5.0’ın Ana Formu 2 Şekil 3: Project penceresi 2 Şekil 4: Code yazım penceresi görünümü 3 Şekil 5: Properties penceresi 3 Şekil 6: ToolBox penceresi 4 Şekil 7: Code penceresi içinde Events seçenekleri 8 Şekil 8: Veri tabanı dosya yapısı 20 Şekil 9: Demirbaş projesi veri tabanı dosya yapısı 21 Şekil 10: Demirbaş veri tabanı tabloları ve bağlantı şeması 22 Şekil 11: Demirbaş takibi projesi module ve formları 22 Şekil 12: AnaMenü (AnaForm) görünümü 23 Şekil 13: Yeni stok kartı ekleme formu 24 Şekil 14: Eski stok kartı formu 25 Şekil 15: Yeni personel kartı formu 26 Şekil 16: Eski personel kartı formu 26 Şekil 17: Hareket işlemi formu 27 Şekil 18: Eski hareket formu 28
BÖLÜM 1: VİSUAL BASİC’TE ÇALIŞMAYA BAŞLAMAK VB ilk çalıştırıldığı zaman karşımıza New Project penceresi gelir burada bizden bir form seçmemizi ister. Biz Standart EXE seçeneğini seçim Aç düğmesini seçtiğimizde karşımıza aşağıdaki pencere gelir. Şekil 1: Visual Basic 5.0’ın görünümü VB’ de yapılan programlara proje adı verilir. Yukarıda da görüldüğü gibi VB projeye hemen bir form eklemiş durumda. VB’ de programları ekranda görüntülemek için formlardan yararlanılır. Windows’taki pencere kavramı VB’ de form kavramı ile adlandırılır. Bu nedenle bir projede en az bir form bulunmak zorundadır. Ancak VB programcıya projede birden fazla form kullanma izni de vermektedir. VB’ de formlar çok önemli olduğu için daha ileride ayrıntılı bilgi vereceğim. Şimdi VB’nin ekranda görünen kısımlarını açıklayalım. Bazı kaynaklarda Ana form olarak da adlandırılan bölümün şekli aşağıdaki gibidir. En üst satırı bütün Windows uyumlu programlarda da bulunan pencere başlığı bulunmaktadır. Pencere başlığının hemen altında VB’ ye ait menü çubuğu bulunmaktadır. Menü çubuğu altında ise o an aktif durumda bulunan araç çubukları bulunmaktadır. Aşağıdaki görüntüde sadece standart araç çubuğu aktif durumdaydı. Diğer araç çubuklarını da aktif yapmak için View menüsündeki Toolbars komutundan yararlanabilirsiniz.
Şekil 2: Visual Basic 5.0’ın Ana Formu 1.1. Project Penceresi Proje hakkında bilgi edinmek istiyorsanız View menüsündeki Project Explorer komutu ile ekrana getirilecek project menüsünden yararlanmanız gerekir. Bu pencere Visual Basic penceresi içerisinde herhangi bir yere taşınabilir. Tools-options menüsündeki docking sekmesinden project explorer check butonu seçilerek Visual Basic’ten bağımsız bir pencere olarak ayarlanabilir. Şekil 3: Project penceresi Yukarıdaki ilk şekilde projeye yalnızca bir tek form eklenmişti. Sağdaki şekilde ise projeye iki form eklenmiş durumdadır. Ekranda görmek istediğimiz formu project penceresindeki formun isminin üzerinde iki defa tıklamak yeterlidir. Project penceresinin başlık çubuğu altında bulunan üç düğmeden ilki view code düğmesidir. Projenin formuna program kodu yazmayı sağlayacak code penceresini ekrana getirir. İkinci düğme view object düğmesidir ki bu da seçili olan formu ekrana getirir. Üçüncü düğme ise Toggle Folders projeye eklenmiş olan form ve module isimleri project penceresinde listelenirken forms ve modules olarak ayırır veya tümünü tek başlıkta toplar. 1.2. Code Penceresi VB proje tasarımında bir çok nesneyi (kontrol) bünyesinde bulundurur. Bu nesnelerin yetersiz kaldığı yerde veya nesnelerin özelliklerini çalışma anında değiştirmek için bazı program kodu yazmak gereklidir. Bu program kodunu yazmak için Code penceresinden yaralanılır
Şekil 4: Code yazım penceresi görünümü Code penceresinde, başlık çubuğu altında iki combo buton ve altında code yazılacak bir bölümden oluşur. Burada önemli olan combo butonlardır. İlk combo buton Object (nesne) adı verilir ve kodun yazılacağı nenenin veya formun isminin seçilmesini sağlar. ikinci combo buton Events (olay) ise nesnede meydana gelen olayları içerir. Programın çalışma modunda iken meydana gelen olayda ne yapacağını buradan uygun olaya gerekli kodu yazarak düzenleyebilir. 1.3. Properties Penceresi Şekil 5: Properties penceresi VB’ deki önemli diğer bir pencere ise properties penceresidir. Properties penceresi yardımıyla formların ve daha ilerde göreceğimiz nesnelerin (kontrollerin) özelliklerini projeye uygun bir biçimde düzenleyebiliriz. Her nesnenin kendine özgü özellikleri vardır. Dolayısıyla seçilmiş olan nesne veya formun özelliği properties penceresinde farklılık gösterir. Properties penceresindeki başlık çubuğu altındaki combo buton sayesinde istenen form veya nesnenin özellikleri görüntülenebilir ve üzerinde değişiklik yapılabilir. Daha ilerde formun ve çok kullanılan nesnelerin özellikleri hakkında bilgi vereceğiz. 1.4. ToolBox Penceresi Şekil 6: ToolBox penceresi Toolbox penceresi VB’nin en önemli penceresidir. Projeye (form üzerine) dahil edilecek nesnelerin sembollerinin bulunduğu penceredir. Her sembol bir nesneyi temsil etmektedir. Projeye dahil edilecek olan nesne önce ToolBox penceresinden seçilir ve daha sonra formda istenen konuma yerleştirilir. Daha sonra eklenen nesnenin istenen özelliği properties penceresi yardımıyla değiştirilebilir. Visual Basic çalışma ortamında iki durum vardır. Projeye ilk başlandığı an Design (tasarım) anıdır. Tasarım anında iken projeye istenen nesne eklenebilir veya nesnenin, properties penceresi yardımıyla özellikleri değiştirilebilir. İkinci durum ise Run (çalışma) modudur. Bu modda iken projeye hiçbir nesne eklenemez ancak nesnelerin özellikleri kod yazımı ile değiştirilebilir. Proje üzerinde işlem yaptığımız sırada projenin bulunduğu mod başlık çubuğunda köşeli parantez içerisinde gösterilir. Örneğin tasarım anında iken Microsoft Visual Basic [DESIGN] bilgisi başlık çubuğunda bulunur. Tasarım[Design] modundan çalışma[Run] moduna geçmek demek programı çalıştırmak demektir. Bunun için Run menüsünden Start komutu verilebilir ayrıca F5 kısayol tuşu yardımıyla da proje çalıştırılabilir. Çalışma modundan tekrar tasarım moduna geçmek için Run menüsündeki End komutu kullanılır veya çalışmış olan projenin formu (pencere) üzerinde bulunan kapat düğmesi kullanılabilir. 1.5. Projeyi Kayıt Etmek Projeyi ilk kaydederken file menüsünden Save Project komutunu verdiğimizde önce projede bulunan formların isimlerini teker teker kaydedip daha sonra projeye dahil olan formların isimlerini tutacak olan project dosyası (proje ismi) kaydedilir. Bu formlara ve proje ismine istediğimiz ismi verebiliriz. 1.6. Projeyi Yüklemek Daha önceden hazırlamış olduğumuz bir projeyi yüklemek için file menüsündeki open project komutu verildiğinde iki sekmeli bir pencere açılır. İlk sekmede(existing) bilgisayarda kayıtlı olan klasör yapılarından projemizi bulma imkanı verir. İkinci sekmede(recent) ise daha önceden üzerinde çalıştığımız projelerin isimlerinden istediğimizi seçebiliriz. BÖLÜM 2: FORMLAR Windows ve Windows uyumlu programlardaki pencere kavramı VB projelerindeki karşılığı Formdur. VB’ de sık kullanılan iki türlü form bulunmaktadır. İlki standart Formlar ikincisi ise MDIForm’lardır. Birde VB’nin tasarlamış olduğu özel formlar vardır. Örneğin birçok programda bulunan Hakkında (About) adındaki pencere VB’ de hazır bir form olarak verilmektedir. 2.1. Standart Formlar Diğer dillerde (pascal, c, basic gibi) ekran görüntüsü çalışma esnasında oluşturulurdu. Visual Basic’te ise bu işlem tasarım esnasında yapılır. Böylece programınızda ekran düzenleyici kodların yazılması olayı ortadan kalkmış olur. Daha önce de belirttiğim gibi bir projeye birden fazla form ekleyebiliriz. 2.1.1. Standart Formların Özellikleri VB’nin tasarım anında properties penceresinde bulunan özelliklerini projeye uygun olarak ayarlayabileceğimiz gibi çalışma anında da kod yazımıyla değiştirebiliriz. VB properties penceresindeki özelliklere defaul değerler vermektedir. Biz istediğimizi projeye uygun olacak biçimde değiştirebiliriz. Şimdi properties penceresinde bulunan bazı önemli özellikleri kısaca göz atalım. Name: Formun program içerisindeki ismidir. Kod yazımında bu isim kullanılır. VB ilk eklenen forma Form1 ikinci forma Form2... ismini vermektedir. Caption: Formun başlığının tutulduğu özelliktir. VB Name gibi default olarak ilk eklenen forma Form1 ikinci forma Form2... ismini vermektedir. Backcolor: Formun zemin renginin tutulduğu özelliğidir. ControlBox: Form başlık çubuğunda bulunan kontrol menüsünü ve kapat,önceki konum ve simge durumuna küçült düğmelerinin görünür/görünmez özelliği ayarlanır. True/False değerlerinden yalnızca birini alabilir. Borderstyle: Enable: Formun kullanılabilir veya kullanılamaz olmasını sağlar. True/False değerlerinden birini alabilir. Font: Form üzerine yazılacak yazının yazıtipi,yazıtipi biçemi ve boyutunun belirlenmesini sağlar. Bu özellik nesneleri etkilemez sadece forma print komutuyla mesaj yazdırırken kullanılır. Icon: Forma icon vermeyi sağlar. Bu icon başlık çubuğunda görünür ayrıca kısayol oluşturulduğunda da kullanılır. Maxbutton: Maksimum yapma butonunu aktif/pasif duruma getirmeyi sağlar. Minbutton: Minimum yapma butonunu aktif/pasif duruma getirmeyi sağlar. Picture: Form zeminine bir resim eklenecekse bu dosyanın bilgilerinin tutulduğu özelliktir. BMP, JPEG, WMF dosyalarından birini seçebiliriz. Visible: Formun görünür/görünmez özelliğini tutar. Enable özelliğine benzerdir ancak Enable özelliğiyle formu kullanılmaz duruma getirebiliyoruz Visible özelliği ile hem görünmez hemde kullanılmaz duruma getirebiliriz. WindowState: Run moduna geçildiğinde formun durumunu tutar. Normal,simge durumunda ve maksimum durumlarından biri verilebilir. MDIChild: Bu formun MDIChild form olduğunu gösterir. True/False değerlerini alabilir. MDIFormlarda daha ayrıntılı olarak açıklayacağız. Code yazımıyla özellikler değiştirilecek ise önce; Formadı.Özellik = Alabildiği değer Şeklide yazılmaktadır. Aşağıdaki kod ile Form1 adlı formun başlığını değiştirebiliriz. Form1.Caption =” DemirBaş Takibi Programı” 2.1.2. Formlara Uygulanan Olaylar (Events) Aşağıdaki görüntüde Formun code penceresi açılmış durumda ve ikinci combo butona basılmış durumdadır. Buradan forma uygulanabilen bütün olaylar bulunmaktadır. Biz program kodu yazımında uygun olan olaya gerekli kodlar yazılmalıdır. Yazılacak kodlar Private sub olay_adı() ............... End Sub arasına yazılmalıdır. Şimdi olaylardan önemli olanlara kısaca göz atalım. Formlar uygulanan birçok olay diğer nesnelere de uygulandığından bu konuyu iyi anlayanlar ilerideki konuları daha rahat kavrayacaklardır. Load: Formun ilk açıldığında bu olay meydana gelir. Formun ilk açıldığında yapmasını istediğimiz kodları buraya yazmamız gerekmektedir. Click: Form üzerinde mouse ile tıklama yapıldığı zaman meydana gelen olaydır.
Şekil 7: Code penceresi içinde Events seçenekleri Dblclick: Form üzerinde mouse ile iki defa tıklandığı zaman meydana gelen olaydır. Activate: Form aktif olduğunda meydana gelir. Load’dan farkı load sadece form açıldığında meydana gelir form kapatılıp yeniden açılmadıkça bir daha meydana gelmez. Activate olayı ise başka forma geçim tekrar forma her dönüşte meydana gelir. unload: Formun kapatıldığı zaman meydana gelir. KeyPress: Form aktif durumdayken klavyeden her tuşa basıldığında meydana gelen olaydır. KeyDown: KeyPress gibi çalışır ancak tuşa basıldığı zaman meydana gelir KeyUp: Bu ise tuştan elinizi kaldırdığınız zaman meydana gelen olaydır. Yani KeyPreess olayı KeyDown ile KeyUp olaylarının toplamıdır. MouseDown: Form üzerindeyken mouse’un tuşuna basıldığı zaman meydana gelir. MouseMove: Mouse’un Form üzerinde hareket ettirilmesinde meydana gelir. Örnek: Projeye iki form ekleyelim Form1 ilk çalışacak ve Form1 üzerinde mouse ile tıklandığı zaman Form2 aktif olacağı kodu yazalım. Private Sub Form_Click() Form2.Show End Sub Form1’de tıklandığı zaman click olayı meydana geldiğinden yazılacak kod Form1’in click yordamına yazılır. Form2.Show komutuyla Form2 belleğe yüklenir ve aktif duruma geçer. 2.2. MDI Formlar Microsoft Word ve benzeri programlarda bir ana pencere ve onun altında istenen kadar pencere açılmaktadır. Aynı anda iki form aktif durumdadır. Şimdiye kadar kullandığımız standart formlarda ise yalnızca bir form aktif durumdaydı. VB’ de aynı anda iki formun aktif durumda olmasına izin vermektedir. Bu olay için Bir MDIForm ve onun altında istendiği kadar standart form açma izni vermektedir. MdıForm sürekli aktif durumda ve bunun yanında istenen bir standart formda aktif yapılabilmektedir. Bir projeye sadece bir MDIForm eklenebildiğinden MDIForm’un ana form olarak tasarlanması uygun olur. Buna karşılık istendiği kadar standart form eklenebilmektedir. MDIForm‘lar ile standart formları bağlamak için standart formların MDIChild özelliği True yapılası gerekmektedir. MDIChild özelliği true yapıldığında project penceresinde standart formun sembolünün değiştiği görülür. 2.2.1. MDIFormların Özellikleri Name, BackColor, Enable, Caption, Picture, Visible, WindowState özellikleri tamamen standart formlardakilerle aynıdır. Standart formlarda bulunan Font, ControlBox gibi bazı özellikler MDIFormlarda kullanılamadığından bulunmaz. MDIForma yazı yazılamadığından Font özelliğine gerek yoktur. Standart Formlarda bulunmayan ScrollBars özelliği projeye dahil edilen MdıChild (standart formlar) formların boyutları çalışma alanına sığmadığı anda MDIForma otomatik olarak düşey kaydırma çubuğu eklenir. ScrollBars özelliğine False değeri verilirse kaydırma çubuğu eklenmez. BÖLÜM 3: ÖZEL KONTROLLER (NESNELER) VB projelerinin en önemli bileşenleri Formlar ve Form üzerine yerleştirilen kontrollerdir. Formlar üzerine yerleştirilen metinler, düğmeler, resim kutuları vs her biri bir kontroldür ve formlarda olduğu gibi kendilerine özgü özellikleri vardır . Bir diğer önemli husus ise Formlardaki gibi bunlara uygulanan olaylar (event) vardır. Formlara yerleştirilebilen her kontrol ToolBox penceresinde bir düğme ile temsil edilmektedir. Projenin formuna kontrol eklemek için tasarım modunda bulunmak gerekmektedir. VB sık kullanılan kontrolleri projeye başlandığında kendiliğinden ekler. Daha sonra gerekli olan kontrolü eklemek için, Project menüsünde bulunan Components komutunu vererek karşımıza gelen kontrollerden gerekli olanı seçebiliriz. Aynı biçime ToolBox penceresine eklenmiş olan bir kontrolü Project-Componenets’den karşımıza gelen pencereden seçili olan kontrolü iptal ederek çıkarabiliriz. Yalnız projeye eklenmiş olan bir kontrol ToolBox penceresinden de çıkarılamaz. Projeye her eklenen OCX uzantılı dosya proje kapasitesini artırır ve performansı düşürür. Bu nedenle kullanılmayan kontroller eklenmemelidir. Kontroller C:\Windows\System klasörü altında OCX uzantısı ile bulunurlar. VB profesyonel sürümlü kitaptan bulabileceğiniz gibi kendinizde bu OCX uzantılı kontrollerden oluşturabilirsiniz. Tasarım anında forma bir kontrol eklemek için mouse yardımıyla ToolBox penceresinden düğme seçilir ve form üzerinde gerekli yere yerleştirilir. Forma yerleştirilen kontroller daha sonra form üzerinde istenen konuma taşınabilir veya boyutları değiştirilebilir. Formların ve kontrollerin özelliklerini tasarım [Design] anında properties penceresinden çalışma [Run] anında ise code yazılarak değiştirebiliriz. Yalnız Name gibi bazı özellikler sadece tasarım [Design] anında değiştirilebilir. Code yazımında aşağıdaki komut dizimi kullanılmak zorundadır. Kontrol_adı.kontrol_özelliği = alabileceği_değer Label.caption=”Adınızı Giriniz” Şimdi yapacağımız Demirbaş Takibi projesinde kullanılan kontrollerin özelliklerini ve bunlara uygulanan olayları kısaca inceleyelim. 3.1. Kontrollerin Ortak Özellikleri Aşağıdaki özellikler hemen hemen bütün kontroller için geçerlidir ve çok önemli özelliklerdir. Bir çok kontrolde kullanıldığı için iyi bir şekilde öğrenilmelidir. Name: Kontrolün ismini belirler code yazımında bu isim ile kontrole ulaşılabilir. Backcolor: Kontrolün zemin renginin tutulduğu özelliğidir. BorderStyle: Kontrollerin üç boyutlu olma veya olmama özelliği belirlenir. Enable: Kontrolün kullanılabilir veya kullanılamaz olmasını sağlar. True/False değerlerinden birini alabilir. Font: Formlarda olduğu gibi label içindeki sabit bilginin yazılacak yazının yazıtipi, yazıtipi biçemi ve boyutunun belirlenmesini sağlar. Height: Kontrolün Form üzerindeki yüksekliği bu özellikte tutulur. Visible: Kontrolün görünür/görünmez özelliğini tutar. Enable özelliğine benzerdir ancak Enable özelliğiyle formu kullanılmaz duruma getirebiliyoruz Visible özelliği ile hem görünmez hem de kullanılmaz duruma getirebiliriz. Left: Kontrolün, formun sol kenarından uzaklığını tutar. Uzaklık Twip birimi olarak belirlenmektedir. Yani sütunun başlangıç sütun numarasını tutar. Top: Kontrolün formun üst kenarından uzaklığını tutar. Uzaklık Twip birimi olarak belirlenmektedir. Pascal, c gibi dillerde tek komutla satır ve sütun verilerek kursör konumu verilebiliyordu. Burada ise left sütun top ise satır numarasını belirler. İki özellikle kontrollerin form üzerindeki konumları ayarlanabilir. TabStop: Kontroller arasında dolaşırken tab tuşundan yararlanılabilir. TabStop özelliği False yapılan kontrolün üzerine tab tuşu ile gidilmez o nesneyi görmez. Defaul olarak True değeri atanmıştır. ToolTipText: Kontrolün üzerine gelindiğinde dikdörtgen bir pencerede ekrana o kontrolle ilgili mesaj verir. TabIndex: Kontrollerin form üzerine yerleştirirken yerleştirilme sırası burada tutulur. Tab tuşu ile bunlar üzerinde dolaşırken TabIndex içindeki sıraya göre ilerler. Forma ilk eklenen kontrolün TabIndex değeri 0 daha sonrakilerin değerleri 1,2,3... diye devam eder. Width: Kontrolün genişlik bilgisi burada tutulur. 3.2. Kontrollere Uygulanan Ortak Olaylar (Events) Click: Kontrol üzerinde mouse ile tıklama yapıldığı zaman meydana gelen olaydır. Dblclick: Kontrol üzerinde mouse ile iki defa tıklandığında meydana gelen olaydır. MouseDown: Kontrol üzerinde mouse’un tuşuna basıldığı zaman meydana gelir. MouseMove: Mouse’un Form üzerinde hareket ettirilmesinde meydana gelir. KeyPress: Kontrol aktif durumdayken klavyeden her tuşa basıldığında meydana gelen olaydır. Her kontrolde bulunan bir özellik değildir. KeyDown: KeyPress gibi çalışır ancak tuşa basıldığı zaman meydana gelir KeyUp: Bu ise tuştan elinizi kaldırdığınız zaman meydana gelen olaydır. Yani KeyPreess olayı KeyDown ile KeyUp olaylarının toplamıdır. 3.3. Label Kontrolü ToolBox penceresinde büyük A harfli düğme ile temsil edilir. Projede formun üzerine sabit bir bilgi yazmak için kullanılır. Tasarım anında forma bir label kontrolü eklemek için mouse yardımıyla ToolBox penceresinden düğme seçilir ve form üzerinde gerekli yere yerleştirilir. 3.3.1. Label Kontrolünün Özellikleri Alignment: Label kontrolü içindeki sabit bilgini nereye dayalı olarak görüneceğini ayarlar. Soldan, sağdan veya ortadan hizalı olarak yazılabilir Caption: Label kontrolünün içinde yer alacak sabit bilgi burada tutulur. VB forma eklenen ilk labelin Name ve Caption özelliklerine Label1 ikincisine Label2 değerlerini atar. AutoSize: Label kontrolünün boyutları mouse ile değiştirilebildiği gibi AutoSize özelliği True değeri verilerek içine yazılan bilginin boyutuna göre otomatik olarak boyutlandırılabilir. WordWrap: Tek satıra sığmayan bilgiyi satırlara bölme özelliğini verir. True/False değerlerinden birini alabilir. 3.4. TextBox Kontrolü ToolBox penceresindeki sembolü soldaki gibidir. Pascaldaki Read komutu gibi klavye aracılığıyla dışarıdan bilgisayar ortamına değer (veri) girmeyi sağlayan bir kontroldür. 3.4.1. TextBox Kontrolünün Özellikleri Text: TextBox içine yazılan verinin saklandığı özelliktir. MaxLength: TextBox kontrolüne girilecek bilginin karakter sayısını sınırlar. MultiLine: TextBox’a girilen bilgileri satırlara böler. True/False değerlerini alabilir. PasswordChar: Şifre karakteridir buraya girilen karakter TextBox’a bilgi girerken klavyeden her karaktere basıldığında basılan karakter değil passwordChar içindeki karakter TextBox’ta görünür. ScrollBars: Kaydırma çubuğu ekler. Yatay, dikey, ve hem yatay hem dikey çubuk eklenebilir. Fazla satır kullanımında veya uzayıp giden satırlarda kullanılabilir. DataSource: Data kontrolü ile TextBox arasındaki bağlantıyı sağlar. Veri tabanı dosyalarında kullanılır. DataField: DataSource ile bağlantı kurulan veri tabanı dosyasındaki Field ile eşleştirilir. Daha ayrıntılı olarak veri tabanı dosyaları kullanımında göreceğiz. 3.5. Command Buton Kontrolü ToolBox penceresindeki sembolü soldaki gibidir. Düğmelere bütün Windows uyumlu programlarda rastlamak mümkündür. Seçimlik işlemler olduğunda seçilen işlemi belirlemede kullanılır. Örneğin kayıt yapılacaksa bir düğme eklenir ve bunda gerekli kodlar yazıldığında bu düğmede tıklama yapıldığında gerekli işlemler yapılır. 3.5.1. Command Kontrolünün Özellikleri Caption: Command buton üzerinde yazılacak mesajı içerir. Alt tuşuyla bir harfe basıldığında bu butonun gerekli kodların çalışması için Caption’da harfin önüne & karakteri konulmalıdır. Ayrıca o harfin altı VB tarafından çizilir. Örneğin Alt+k için &kayıt yazılmalıdır. Cancel: İptal, Çık, Vazgeç gibi düğmelerin ESC tuşu ile de kontrol edilmesi istenir. Bunun için o butonun Cancel özelliği True yapılmalıdır. ESC tuşuna basılmasıyla butona basmak aynı işi yapar. Picture: Buton üzerine resim yerleştirilmesinde kullanılır. Resim yerleştirebilmek için Style özelliği Graphical olarak atanması gerekir. DownPicture: Butona basıldığı zaman başka bir resmin görüntülenmek isteniyorsa resim dosyası bu özellikte saklanır. 3.6. ComboBox Kontrolü ToolBox penceresindeki sembolü soldaki gibidir. Girilecek verinin (bilgi) bilindiği durumlarda yeniden yazmak yerine alabileceği değerlerden birini seçmek için kullanılır. Daha önceden bu verilerin girilmiş olması gereklidir. İl isimleri, Giriş/çıkış gibi seçimlerde kullanılabilir. 3.6.1. ComboBox Kontrolünün Özellikleri Text: Seçilmiş olan bilginin içeriğini tutar. Bütün verileri değil sadece seçili olan veriyi tutar. Dosyalama işlemlerinde kayıt yapılırken text özelliği kayıt edilir. ListIndex: Text ile seçilen bilgi öğrenilebilir. ListIndex ile seçilen bilginin listedeki numarası öğrenilir veya istenen numaradaki bigi aktif edilir. List: Seçimlik olan bütün veriler burada tutulur. Örneğin il seçimi yapılacak ise bütün il isimleri burada yazılı olmalıdır. AddItem: Code yazılarak listeye yeni seçenek eklemede kullanılır. Örneğin ile yeni bir il eklenecekse bu komut kullanılmalıdır. Yalnız bu profesyonel programlar için doğru bir yol değildir. İl isimlerini bir dosyadan okumak daha ergonomik bir program ortaya çıkarır. Combo1.AddItem “Sakarya” Yukarıdaki komut satırıyla combo1 kontrolüne Sakarya seçeneği eklenmiştir. Style: ComboBox’un tipini belirleyen özelliktir. Kullanıcı başlangıçta seçimler dışında da bir bilgi girebilir. Style özelliği değiştirilerek kullanıcının dışarıdan bilgi girmesini engelleyen özelliktir. 3.7. DBCombo Kontrolü ComboBox kontrolüne benzer amaçta kullanılır. Girilecek verinin (bilgi) bilindiği durumlarda bunlardan birini seçmek için kullanılır. ComboBox’ta bilgilerin girilmesi gerekirdi bundada benzer mantıkla veri tabanı dosyasındaki verilerin dosyadan direkt alınım seçim yapılması için kullanılır. Çok kullanışlı bir kontroldür. Veri tabanı dosyasında kayıtlı veriler dışında seçim yapılması istenmeyen durumlarda kullanılır. Örneğin il isimlerinin kayıtlı olduğu bir veri tabanı dosyasından alınacak il isimleri DbCombo ile seçebiliriz. Bu kontrolün kullanılabilmesi için forma bir data kontrolü eklenmesi gerekmektedir.
3.7.1. DBCombo Kontrolünün Özellikleri RowSource: Data kontrolü ile DbCombo kontrolü arasında bağlantı yapılmış olur. Dolayısıyla veri tabanındaki table ile bağlantı yapılmış olur. ListField: RowSource ile seçilen tablonun hangi alanından veri alınacağı belirlenir. Yani Field seçimi yapılır. BoundColumn: RowSource ile seçilen tablonun hangi alanından veri alınacağı belirlenir. Yani Field seçimi yapılır. Text: Listeden seçilen veri DbCombo’nun text özelliğinde tutulur. DataSource,DataField: RowSource ve ListField ile aynı işlemleri yaparlar. Ancak yinede RowSource ve ListField iki özelliğinde seçilmesi gereklidir. 3.8. MSFlexGrid Kontrolü Hücrelerden meydana gelen Excel’deki sayfalara benzer bir kontroldür. ToolBox penceresindeki sembolü soldaki gibidir. Ancak ToolBox penceresinde ilk başlangıçta görünmez. Projeye bu kontrolü eklemek için project- components menüsündeki verilerek “Microsoft FlexGrid Control seçmeniz” gerekmektedir. Eğer bu seçenek yoksa MSFLXGRD.OCX dosyasının eklenmesi gerekir. Birde Grid kontrolü vardır. Grid’de olan bütün özellikler MsFlexGrid’de bulunur artı özellikleri de vardır. Bu projede sadece veritabanı dosyasındaki verileri süzdükten sonra görüntüleyeceğiz. Burada gerekli olan özellikleri vereceğiz. 3.8.1. MSFlexGrid Kontrolünün Özellikleri Cols: Bir hücrede bulunması gereken sütun(kolon) sayısının değeri tutulur. Rows: Bir hücrede bulunması gereken satır sayısının değeri tutulur. FixedCols: Tablo üzerinde kullanıcının erişemeyeceği sütunların başlığı olarak kullanılan sütun sayısını belirler. FixedRows: Tablo üzerinde kullanıcının erişemeyeceği satırların başlığı olarak kullanılan satır sayısını belirler. Col, Row: Bir ızgarada,üzerinde işlem yapılacak hücre adreslerini belirler. İlk satır için Row=0, İlk sütun için Col=0’dır. Hücrelere bilgi yazılırken önce verinin yazılacağı hücrenin adresinin verilmesi gerekir. Text: Aktif hücrenin içindeki metini tutulduğu özelliktir. Bir hücreye veri yazılırken Col ve Row ile adres aktif hücre yapılır text özelliği ile yazılır.
Örneğin Form yüklendiğinde ilk hücreye “Demirbaş Takibi” yazan kodu yazalım. Private sub Form_Load MsFlexGrid1.Row=0 MsFlexGrid1.Col=0 MsFlexGrid1.Text= “Demirbaş Takibi” End sub ColWidth: Hücrenin genişlik bilgisinin ayarlanmasını sağlar. RowHeight: Hücrenin yükseklik bilgisinin ayarlanmasını sağlar. ColAlignment: Hücre içindeki bilginin görüntülenmesinde hizalanmasının yapılmasını sağlar. DataSource: Data kontrolü ile bağlantıyı sağlar. Kod yazımıyla süzülmediği taktirde bağlı olduğu datanın içindeki tüm verileri görüntüler. Sınırlama için SQL kodu yazılmalıdır. 3.8.2. MSFlexGrid Kontrolü Metodları AddItem: Gride yeni bir satır eklemek için kullanılır. Eklenen satır grid’in sonuna eklenir. Araya eklenmek istenir ise parametre olarak eklenecek yerin satır numarası verilir. RemoveItem: Grid’te aradan bir satır silinmek istendiğinde kullanılır. Index numarası verilen satırı siler ve diğer satırları yukarıya doğru çeker. Clear: Gridin içindeki bütün bilgileri siler ancak satır ve sütunlar yerinde kalır. RemoveItem’de bilgilerle birlikte satırlarda silinir clear’da ise sadece içeriği temizlenir hücreler ekranda kalır. 3.9. Data Kontrolü ToolBox penceresindeki sembolü soldaki gibidir. Veri tabanı dosyalarıyla bağlantı kurmak için kullanılır. Data kontrolü aracılığıyla veri tabanı üzerinde rahatça hareket esilebilir. Data kontrolü üzerindeki ok tuşları yardımıyla dosya başı/sonu, ileri/geri doğru kayıt üzerinde gezinebilirsiniz. Kayıt üzerinde değişiklik, silme gibi işlemlerde birkaç satırlık kod yazımıyla kolayca oluşturulabilir. Pascal, c gibi dillerdeki dosya açma komutu yerince kullanılabilir. Bu kontrol forma eklendiği an veri tabanı dosyası kendiliğinden açılır.
3.9.1. Data Kontrolünün Özellikleri DatabaseName: Veri tabanı dosyasıyla bağlantının kurulması için veri tabanı dosyasının isminin ve konumunun bilinmesi gerekir. Dosyanın ismi ve konumu bu özellikte saklanır. RecordSource: DatabaseName ile dosya ismi bağlandıktan sonra dosyanın içindeki table’ın bağlanması gereklidir. Bunun içinde RecordSouce kullanılır. DatabaseName seçildiği zaman içindeki bütün table’lar RecordSource içinde atanır ve bir ComboBox içinde listelenir istenen table seçilebilir. Caption: Data nesnesi üzerindeki yazılı olan yazıyı içerir. İlk olarak data nesnesinin adı verilir. İlk eklenene Data1 ikinci eklenene Data2...vb Exclusive: Dosyayı başka kullanıcılara kapatır. Sadece bir kullanıcı programı kullanabilir. True/ False değerlerini alabilir. BOFAction: Dosya başına geldiğinde ne yapması gerektiği bilgisini içerir. İki değer alabilir. Move First ilka kayıta geldiğinde bir şey yapmaz. BOF verildiğinde dosyanın başında bulunan BOF alanına geçer ekrana içi boş bir alan gelir. EOFAction: Dosya sonu geldiğinde ne yapması gerektiği bilgisini içerir. Üç değer alabilir. Move Last değeri verilirse son kayıtta kalır, EOF verilirse dosyanın EOF bölümüne geçilir ve bir boş alan ekrana gelir.AddNew verildiğinde ise dosya sonuna boş alan ekler ve yeni kayıt yapmamıza olanak tanır. ReadOnly: Kullanıcıya sadece dosya üzerinde okuma izni verir değişiklik veya silme işleminin kısıtlanmasını sağlar. True/False değerlerini alabilir. 3.9.2. Data Kontrolünde Meydana Gelen Olaylar Reposition: MDB dosyası Data kontrolü ile açıldığında okuma/yazma kafası ilk kayıtın üzerine konumlanır. Bu olaya Data kontrolünün Reposition olayıdır. Burada o kayıtın özelliklerini ekrana aktarma kodları yazılabilir. Validate: Data kontrolü ile ilgili olarak yapılan MoveNext, MoveLast, AddNew, Delete vb. işlemlerden önce validate olayı meydana gelmekte veya bu olayın yordamında yazılmış olan program satırları işletilir. Örneğin dosya üzerinde dolaşırken o an aktif kayıt üzerinde değişiklik yapılıp yapılmadığı burada kontrol edilebilir.
3.9.3. Data Kontrolü Metodları MoveNext: Tablodaki bir sonraki kayıtın aktif kayıt yapmak üzere kullanılır. MovePrevious: Tablodaki bir önceki kayıtın aktif kayıt yapmak üzere kullanılır. MoveLast: Tablodaki son kayıtın aktif kayıt yapmak üzere kullanılır. MovFirst: Tablodaki ilk kayıtın aktif kayıt yapmak üzere kullanılır. AbsolutePosition: Okuma/yazma kafasının üzerinde bulunduğu tablodaki kayıt numarasını verir. RecordCount: Tablodaki kayıt sayısını öğrenmek için kullanılır. AddNew: Üzerinde çalışılan veri tabanı dosyasının Data nesnesi ile erişim sağlanan tablosuna yeni bir kayıt eklemek için kullanılır. CancelUpdate: AddNew ile tablo sonuna eklenen alanı iptal eder. Edit: Kayıt üzerinde değişiklik yapılıp kayıt edilmek istendiği zaman edit moduna geçmek gereklidir. Kısacası bir kayıt alanı değiştirmeden önce düzenleme moduna alır. UpDate: AddNew ve Edit metotlarıyla belirlenen değişiklikleri Recordset nesnesine kaydeder. Delete: Aktif kayıdı tablodan siler. FindFirst: Tablo içerisinden belirlenen şarta uyan ilk kayıdı bulur. BÖLÜM 4 : VERİ TABANI (DATABASE) VB’ den önceki dillerdeki (basic,c,pascal) dosyalama işlemleri random-sıralı- text dosyalarla yapılırdı. VB’ de bu dosyalama yapıları bulunmaktadır. Ancak bu dosyalama yöntemleri pratikte pek kullanılmıyor. Veri tabanı dosyası kullanılarak projeler daha kolay geliştirip güncelleşebilir bir yapıya bürünmektedir. Bir veri tabanı dosyası oluşturmak için Add-ins menüsündeki Visual Data Manager seçeneği seçildiğinde veri tabanı oluşturabileceğimiz VisData programı çalışır. VisData programı yardımıyla birçok tabanda dosya oluşturabiliriz. Veri tabanı dosyalarını VB’de kullanılabilmek için VisData programında File-New menüsü altında açılan menü yardımıyla hangi tabanda oluşturulacağı seçilir. Microsoft Access, Dbase, FoxPro, Paradox, ODBC, Text tabanında veri tabanı dosyası oluşturabiliriz. Bu projede Microsoft Access tabanlı veri tabanı dosyasını kullanacağız. Bazı avantaj ve dezavantajları bulunmaktadır. 4.1. Avantaj Ve Dezavantajları Microsoft ürünleri arasında bağlantı kurulabilir. Örneğin Microsoft Word/Excel ile erişim sağlanıp programda bulunmayan raporlar alınabilir. Microsoft Access ile dosyaya ulaşılıp verilere ulaşılabilir. Bu aynı zamanda dezavantaj olarak da karşımıza çıkar. Projeye şifre konsa bile Access kullanılarak verilere ulaşılıp üzerinde işlem yapılabilir bu da istenmeyen bir özelliktir. Ulaşımı engellemek için veri tabanı dosyasına pasword koyabilirsiniz . 4.2. Veritabanı Dosyasının Bölümleri Şimdi bir Microsoft Access tabanına ait veri tabanı dosyası tasarımı yapmaya başlamadan önce veri tabanının yapısını inceleyelim. Klasik dosyalamalardaki dosya yapılarından çok farklı bir yapıya sahiptir. Klasik dosyalarda bir dosya ve onun içinde veri alanları bulunurdu. Microsoft Access tabanlı veri tabanında ise bir MDB dosyası ve onun içinde Table ve Query dosyaları, tableların içinde Field yapılarından oluşur.
Şekil 8: Veri tabanı dosya yapısı DataBase (VeriTabanı): Bir yada daha fazla tablodan oluşan ve aynı zamanda birbiriyle ilişkili olan tablo grubuna denir. Table (Tablo): Bir grup veri alanını içeren yapıya tablo denir. Tüm personel kimlik bilgilerinin tutulduğu yapıdır. Pascal’da oluşturulan DAT dosya yapısına denktir. Record (Kayıt): Bir tabloda yer alan ve bir personele ait bilgilerin tümüne verilen addır. Örneğin personel tablosunda yer alan bir personele ait kod, ad, soyadı, telefon numarası ve adresinden oluşan bilgiler bir kayıt oluşturur. Field (Veri Alanı): Bir tablodaki her bir kaydı oluşturan en temel yapıya veri alanı denir. Örneğin personel tablosundaki kod, ad ,soyadı gibi kayıt yapısından her birine denir. Index (Anahtar Kayıt): Her bir kaydı temsil eden ve kayıtların sıralanmasında önemli bir rol oynayan anahtar kayıt alanına denir. Query (Sorgu): Bir yada birden fazla tablodan belli şartlara bağlı olarak istenilen kayıtları listeleyen temel komutlara denir. BÖLÜM 5: DEMİRBAŞ TAKİBİ PROGRAMINA GİRİŞ VB projesine başlamadan önce bir araştırma yapılıp veri tabanı dosyasında olması gereken veri alanları, tipleri ve uzunluğu belirlenmelidir. Bu alanlar belirlendikten sonra projeye veri tabanı dosyasını oluşturmakla başlamakta yarar vardır. Çünkü formları tasarlanırken ve dosyalarla bağlantısını sağlanırken hangi tabloda hangi veri alanı (Field) olduğu bilinir ve bu esasa göre form dizaynı yapılır. 5.1. Veri Tabanı Yapısı Aşağıdaki şemada görüleceği gibi VB Demirbaş Takibi projesinin kurulum düzeni yer almaktadır. Burada Demirbaş.MDB veritabanı dosyasını stokkartı, personelkartı ve hareket ise tabloları gösterir. Stokkartı altında yer alan kod,adı,birim,miktar ise stokkartına ait Fieldları KodIndexde koda göre indexsi gösterir. Benzer şekilde personelkartı ve hareket altında da fieldlar ve ındexler bulunmaktadır. Şekil 9: Demirbaş projesi veri tabanı dosya yapısı Veritabanı dosyasının yukarıdaki yapısına bakılarak aşağıda görülen tablo içinde yer alacak fieldlar hazırlanır. Aşağıdaki şekilde de görüleceği üzere tablolar arasındaki bağlantıları sağlanacak değişkenler vardır. VisData programı kullanılarak aşağıdaki tabloları ve fieldları oluşturduktan sonra veri tabanı dosyası hazırlanmıştır. Artık projenin ekranda görülen kısmını oluşturan formları hazırlamaya başlayabiliriz.
Şekil 10: Demirbaş veri tabanı tabloları ve bağlantı şeması 5.2. Projenin Formlarının Hazırlanması Projeye öncelikle bir MDIForm ekledim. Çünkü projede birden fazla standart form olacağından bunların bir pencere altında toplanması gerekmektedir. MDIFormların standart formları tek bir pencere altında toplama özelliği olduğunu biliyoruz. Tıpkı Micosoft Word’de olduğu gibi. Diğer formları aktif edebilmek için, projeden çıkmak için MDIForm’a menü eklenmelidir. Projedeki formları incelemeye başlamadan önce project penceresinden projeye eklenmiş olan module ve formları görelim. Şekil 11: Demirbaş takibi projesi module ve formları Yukarıdaki şekilde projeye eklenmiş olan bütün module ve formlar görülmektedir. Forms’un altında bulunan sembollerin yanındaki form isimlerine dikkat edilirse yazı ve parantez içinde bir yazı daha var. Sembolün yanındaki yazı formun projenin içinde kullanılan form NAME özelliğinde tutulan ismidir. Parantez içindeki ise Formun bellekte tutulan ismidir. Formlar bellekte FRM uzantısı ile saklanırlar. Formun proje içindeki ismi ile bellekteki ismi aynı olmak zorunda değildir. Ancak bu iki isimin kullanılırken karıştırılmaması gerekmektedir. Projeye dahil edilen bu formları kullanılma amaçlarını ve form görünümlerini inceleyelim. Bir çok Microsoft ürününde görebileceğiniz proje belleğe yüklenene kadar karşınızda boş bir ekran yerine karşınıza bir pencere getirilir. Bu işlemi yapabilmek için; hazırlayacağınız formun tasarımı yapıldıktan sonra properties penceresinden Form1 olan Name özelliğini başla olarak değiştirmeniz ve projenin Module1 kısmına bazı code yazmanız gereklidir. Ayrıca project-project properties menüsü kullanılarak karşınıza gelen pencerede Startup object ComboBox’ından Sub Main’i seçmeniz gerekmektedir. Şekil 12: AnaMenü (AnaForm) görünümü Şekil 12’de görüldüğü gibi projenin AnaFormuna menü yerleştirilmiş durumdadır. Şimdi sırasıyla bu menüleri ve içinde bulunan seçeneklerin ne yaptığını inceleyelim. BÖLÜM 6: PROJE BULUNAN MENÜLERİ 6.1. Dosya Menüsü Dosya menüsü altında; yeni stok kartı, eski stok kartı, yeni personel kartı, eski personel kartı ve çıkış seçenekleri bulunmaktadır. Bu seçeneklere geçmeden önce formlar üzerinde bulunan düğmelerin görevlerini öğrenelim. Tabloda aktif kayıtın bir önceki kayıt olmasını sağlar. Tablodaki aktif kayıtın bir sonraki kayıt olmasını sağlar. Yani bir sonraki kayıt ekranda görüntülenir. Yeni kayıt veya değişen kayıtı yapar. Tablo üzerindeki kayıtlardan istenen bilgiyi arayıp bulur. Tabloda aktif kayıtı siler. Yazıcıdan çıktı almayı sağlar. O anda bulunula alt formu kapatır. Şekil 13: Yeni stok kartı ekleme formu
6.1.1. Yeni Stok Kartı Bu seçenekle veri tabanı dosyasına yeni bir stok kartı ekleyebilirsiniz. İstenen verilerin girilmesi sırasında dikkat edilmesi gereken bazı durumlar vardır. Stok kodu girilirken daha önceden kullanılan bir kodun bir daha kullanılmaması gereklidir. Aynı kodu girme durumunda program bunu kabul etmeyip yeni kod isteyecektir benzer durumla miktar girişinde karşılaşılır. Miktar girişinde rakam yerine harf veya operatör girişinde program uyarı verip rakam girmenizi isteyecektir. Bu formun name özelliğini stkartıyeni olarak düzenledim. Şekil 14: Eski stok kartı formu 6.1.2. Eski Stok Kartı Daha önceden kayıt edilmiş olan veriler üzerinde hareket edebilir, değiştirebilir, silebilir veya yazıcıdan çıktı alabileceğimiz bir formdan oluşur. Form iki kısımdan oluşur. İlk kısım stok kartı bilgileri, ikinci kısım ise stokun verildiği personelin ve hareket bilgilerinin görüntülendiği kısımdır. Silme işleminde dikkatli olunmalıdır. Daha önceden Giriş veya Çıkış işlemi yapılmış ise bu silme işleminden hareketlerde etkilenir.Bu formun name özelliğini stkartıeski olarak düzenledim.
Şekil 15: Yeni personel kartı formu 6.1.3. Yeni Personel Kartı Yeni bir personel kayıtı yapmak için hazırlanan formdur. Yeni stok kartı formu ile aynı mantıkta tasarlanmıştır. Formda istenen bilgiler doldurulup kayıt edilir. Bu formun name özelliğini perkartıyeni olarak düzenledim. Şekil 16: Eski personel kartı formu 6.1.4. Eski Personel Kartı Daha önceden kayıtı yapılmış olan personel bilgileri üzerinde dolaşmak, değişiklik yapmak, silmek ve yazılı doküman almak için tasarlanmıştır. Silme işleminde dikkat etmek gerekir. Silinen personel kartından giriş ve çıkış hareketleri etkilenir. Bu formun name özelliği perkartıeski olarak düzenledim. 6.1.5. Çıkış Demirbaş Takibi programını ve tüm açık olan formları da birlikte kapatır. Programdan çıkmak için aynı zamanda CTRL+X kısayol tuşunu kullanabilirsiniz. Bütün Windows uyumlu programlarda olduğu gibi kapat düğmesiyle veya kontrol menüsündeki kapat seçeneği ile programı kapatabilirsiniz. 6.2. Hareketler Menüsü İki seçenekli bir menüden oluşur. Seçenekler Giriş/Çıkış hareketleri ve Eski hareket şeklindedir. Şekil 17: Hareket işlemi formu 6.2.1. Giriş/Çıkış işlemleri Yeni bir Giriş veya çıkış işlemi için tasarlanmış formdur. Bu form ile bir personele bir stok çıkış işlemi veya stok envanterine giriş işlemi yapılabilir. Giriş/Çıkış işleminin yapılabilmesi için Personel kartının ve Stok kartının daha önceden tasarlanmış olması gereklidir. Bu formun name özelliği hareket olarak düzenledim. Şekil 18: Eski hareket formu 6.2.2. Eski Hareket Daha önceden yapılmış olan Giriş veya Çıkış işlemleri üzerinde dolaşabilir veya o işlemi silebileceğimiz bir formdan oluşur. Silme işleminde dikkatli olunmalıdır yanlış silinen işlemden dolayı stok envanteri etkilenecektir. 6.3. Rapor Menüsü İki seçenekli bir menüden oluşur. Seçenekler Stok envanter, ve Personel listesinden oluşur. 6.3.1. Stok Envanter Firmanın stok envanter listesinin alınabileceği ve istendiği taktirde yazılı dokümanın da alınabileceği bir pencere açılır. 6.3.2. Kritik Envanter Listesi Firmanın stoklarının kritik durumda olanların listesini verir. Firmada bulunan stokların sayısı 5 (beş)’in altında olanların listesinin alınacağı bir rapordan oluşur. İstendiği zaman yazılı doküman alınabilir. 6.3.3. Personel Listesi Firmada çalışan personeli listesini ve kimlik bilgilerinin de bulunduğu bir pencere açılır istendiğinde yazılı doküman alınabilir. 6.4. Pencere Menüsü AnaForm (MDIForm) içinde birden fazla form açıldığı taktirde bu formlar arasında dolaşmak için kullanmak amacıyla tasarlanmıştır. VB’in menüler için özel tasarlamış olduğu bir özelliktir. MDChild özelliği verilmiş olan formların açılması durumunda isimleri kendiliğinden bu menüye eklenir. 6.5. Yardım Menüsü Yardım menüsü de iki seçenekli bir menüdür. İlk seçenek Demirbaş Takibi Yardım ve ikinci seçenek Hakkında’dır. 6.5.1. Demirbaş Takibi Yardım Demirbaş Takibi programının (menülerin ve formların) kullanımda kullanıcıya yardımcı olmak için hazırlanmış olan bir yardım penceresini ekrana getirir. 6.5.2. Hakkında Demirbaş Takibi programının versiyonu, programcı bilgileri, uyarı gibi bilgilerin bulunduğu bir pencereden oluşur. BÖLÜM 7: PROJE CODE’LARI 7.1. AnaMenü (AnaMenü.frm) Private Sub dty_Click() Shell ("c:\Windows\Winhelp.exe c:\Demirbaş\Yardım.hlp") End Sub
Private Sub eskiperkrt_Click() perkartıeski.Show End Sub
Private Sub MDIForm_Load() Unload başla End Sub
Private Sub Son_Click() secim = MsgBox("Programdan çıkmak istiyormusunuz?", 36) If secim = 6 Then End End If End Sub
Private Sub yenistkartı_Click() stkartıyeni.Show End Sub
Private Sub eskistkrt_Click() stkartıeski.Show End Sub
Private Sub Yeniperkrt_Click() perkartıyeni.Show End Sub Private Sub eh_Click() hareketeski.Show End Sub Private Sub gç_Click() Hareket.Show End Sub
Private Sub SL_Click() CRstok.RetrieveDataFiles CRstok.Action = 1 End Sub Private Sub KSEL_Click() CRKritikStok.RetrieveDataFiles CRKritikStok.Action = 1 End Sub
Private Sub ML_Click() CRMemur.RetrieveDataFiles CRMemur.Action = 1 End Sub
Private Sub About_Click() hakkında.Show End Sub 7.2. StKartıYeni (StKartıYeni.frm) Private Sub stkod_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stad.SetFocus End If End Sub
Private Sub stad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stbirim.SetFocus End If End Sub
Private Sub stbirim_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stmiktar.SetFocus End If End Sub
Private Sub stmiktar_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stkod.SetFocus End If End Sub
Private Sub kayıt_Click() With Data1.Recordset ölçüt = "stkod ='" & stkod.Text & "'" .FindFirst ölçüt If stkod.Text = "" Then MsgBox ("Kodu boşluk giremezsiniz!") stkod.SetFocus GoTo Atla End If If .NoMatch = False Then MsgBox ("Bu kodda kayıt var yeni kod yazın") stkod.Text = "" stkod.SetFocus GoTo Atla End If If IsNumeric(stmiktar) Then secim = MsgBox("Kayıt yapılmak üzere eminmisiniz?", 68) If secim = 6 Then .AddNew .Fields("stkod") = stkod.Text .Fields("stad") = stad.Text .Fields("stbirim") = stbirim.Text If stmiktar.Text = "" Then stmiktar.Text = 0 End If .Fields("stmiktar") = Val(stmiktar.Text) Data1.UpdateRecord Data1.Refresh ek_boşalt stkod.SetFocus End If Else MsgBox ("stok miktarını rakam girmelisiniz") stmiktar = "" stmiktar.SetFocus End If End With Atla: End Sub
Private Sub iptal_Click() ek_boşalt End Sub
Private Sub Son_Click() Unload Me End Sub
Public Sub ek_boşalt() stkod.Text = "" stad.Text = "" stbirim.Text = "ADET" stmiktar.Text = "" End Sub 7.3. StKartıEski (StKartıEski.frm) Dim kayıtno As Integer Dim kayıtsay As Integer Dim x As Integer Dim y As Integer Dim ölçüt As String Dim stkodyaz As String Dim stadyaz As String Dim stsoyyaz As String Dim tarihyaz As Date Dim işlemyaz As String Dim miktaryaz As Integer Dim açiklamayaz As String Private Sub Data1_Reposition() stkod.Text = "" stad.Text = "" stbirim.Text = "" stmiktar.Text = "" With Data1.Recordset If .EOF Then .MovePrevious MsgBox ("Dosya sonuna gelindi") End If If .BOF Then .MoveNext End If stkod.Text = .Fields("stkod") stad.Text = .Fields("stad") stbirim.Text = .Fields("stbirim") stmiktar.Text = .Fields("stmiktar") GrideYaz End With End Sub Private Sub Form_Activate() GrideYaz End Sub
Private Sub stad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stbirim.SetFocus End If End Sub
Private Sub stbirim_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then stad.SetFocus stbirim.Text = UCase(stbirim) End If End Sub
Private Sub Geri_Click() Data1.Recordset.MovePrevious End Sub
Private Sub ileri_Click() Data1.Recordset.MoveNext End Sub
Private Sub kayıt_Click() secim = MsgBox("kayıt yapmak üzeresiniz eminmisiniz?", 4 + 64) If secim = 6 Then kayıtet End If End Sub
Private Sub ara_Click() On Error GoTo hata: kod$ = InputBox("Aranacak kodu giriniz :") ölçüt = "stkod ='" & kod$ & "'" Data1.Recordset.FindFirst ölçüt If Not kod$ = Data1.Recordset.Fields("stkod") Then MsgBox ("Aradığınız kodda kayıt yok") End If hata: End Sub
Private Sub sil_Click() If Data1.Recordset.BOF And Data1.Recordset.EOF Then MsgBox ("Kayıtlı başka kayıt yok!") Else secim = MsgBox("Bu kartı silmek üzeresiniz eminmisiniz?", 68) If secim = 6 Then Data1.Recordset.Delete Data1.Refresh End If End If End Sub
Public Sub BaşlıkYaz() Printer.FontUnderline = True Printer.FontBold = True Printer.CurrentY = 1200 Printer.CurrentX = 200 Printer.Print "PersonelKodu" Printer.CurrentY = 1200 Printer.CurrentX = x + 1700 Printer.Print "Personel Adı"; " "; "Soyadı" Printer.CurrentY = 1200 Printer.CurrentX = x + 4400 Printer.Print "Tarih" Printer.CurrentY = 1200 Printer.CurrentX = x + 5900 Printer.Print "İşlem" Printer.CurrentY = 1200 Printer.CurrentX = x + 6800 Printer.Print "Miktar" Printer.CurrentY = 1200 Printer.CurrentX = x + 7900 Printer.Print "Açıklama " Printer.FontUnderline = False Printer.FontBold = False End Sub Private Sub Yazdır_Click() x = 200 y = 1200 With Data1.Recordset Printer.FontSize = 10 Printer.FontName = "Times New Romans" Printer.CurrentX = 200 Printer.CurrentY = 200 Printer.Print "Stok Kod", ": "; .Fields("stkod") Printer.CurrentX = 200 Printer.CurrentY = 400 Printer.Print "Stok Adı", ": "; .Fields("Stad") Printer.CurrentX = 200 Printer.CurrentY = 600 Printer.Print "Birim", ": "; .Fields("stbirim") Printer.CurrentX = 200 Printer.CurrentY = 800 Printer.Print "Miktar", ": "; .Fields("stmiktar") End With BaşlıkYaz Data2.RecordSource = "select * from hareket where stkod= '" & Data1.Recordset![stkod] & "'" Data2.Refresh kaysay = Data2.Recordset.RecordCount For dön = 1 To (kaysay) mkodyaz = Data2.Recordset.Fields("mkod") ölçüt = "mkod ='" & Data2.Recordset.Fields("mkod") & "'" Data3.Recordset.FindFirst ölçüt madyaz = Data3.Recordset.Fields("mad") msoyyaz = Data3.Recordset.Fields("msoy") tarihyaz = Data2.Recordset.Fields("tarih") işlemyaz = Data2.Recordset.Fields("islem") miktaryaz = Data2.Recordset.Fields("miktar") açiklamayaz = Data2.Recordset.Fields("açiklama") y = y + 250 satırsay = satırsay + 1 Printer.CurrentY = y Printer.CurrentX = x Printer.Print mkodyaz Printer.CurrentX = x + 1700 Printer.CurrentY = y Printer.Print madyaz; " "; msoyyaz Printer.CurrentX = x + 4400 Printer.CurrentY = y Printer.Print tarihyaz Printer.CurrentX = x + 5900 Printer.CurrentY = y Printer.Print işlemyaz Printer.CurrentX = x + 6800 Printer.CurrentY = y Printer.Print miktaryaz Printer.CurrentX = x + 7900 Printer.CurrentY = y Printer.Print açiklamayaz Data2.Recordset.MoveNext If satır = 40 Then y = 250 satırsay = 1 BaşlıkYaz End If Next Printer.EndDoc GrideYaz End Sub
Private Sub Son_Click() Unload Me End Sub
Public Sub kayıtet() Data1.Recordset.Edit With Data1.Recordset .Fields("stkod") = stkod.Text .Fields("stad") = stad.Text .Fields("stbirim") = stbirim.Text If stmiktar.Text = "" Then stmiktar.Text = 0 End If .Fields("stmiktar") = Val(stmiktar.Text) End With Data1.UpdateRecord Data1.Refresh End Sub
Public Sub GrideYaz() stmiktar.Text = Data1.Recordset.Fields("stmiktar") Data2.RecordSource = "select * from hareket where stkod= '" & Data1.Recordset![stkod] & "'" Data2.Refresh kaysay = Data2.Recordset.RecordCount With MSFlexGrid1 'Tablodaki satır sayısı belirleniyor .Rows = kaysay + 1 .RowHeight(0) = (300) 'kolonların genişliği ayarlanıyor .ColWidth(0) = (1000) .ColWidth(1) = (3000) .ColWidth(3) = (600) .ColWidth(4) = (600) .ColWidth(5) = (4500) 'Tablonun başlıkları yazılıyor .Row = 0 .Col = 0 .Text = "MemurKodu" .Col = 1 .Text = "Memur Adı Soyadı" .Col = 2 .Text = "Tarih" .Col = 3 .Text = "İşlem" .Col = 4 .Text = "Miktar" .Col = 5 .Text = "Açıklama" 'Tabloya dosya içerii yazılıyor For i = 1 To (kaysay) .Row = i .Col = 0 .Text = Data2.Recordset.Fields("mkod") .Col = 1 ölçüt = "mkod ='" & Data2.Recordset.Fields("mkod") & "'" Data3.Recordset.FindFirst ölçüt .Text = Data3.Recordset.Fields("mad") & " " & Data3.Recordset.Fields("msoy") .Col = 2 .Text = Data2.Recordset.Fields("tarih") .Col = 3 .Text = Data2.Recordset.Fields("islem") .Col = 4 .Text = Data2.Recordset.Fields("miktar") .Col = 5 .Text = Data2.Recordset.Fields("açiklama") Data2.Recordset.MoveNext Next End With End Sub 7.4. PerKartıYeni (PerKartıYeni.frm) Dim ölçüt As String Dim secim As String
Private Sub mkod_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then mad.SetFocus End If End Sub
Private Sub mad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then msoy.SetFocus End If End Sub Private Sub msoy_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then msoy.Text = UCase(msoy) mtel.SetFocus End If End Sub
Private Sub mtel_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then madres1.SetFocus End If End Sub
Private Sub madres1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then madres2.SetFocus End If End Sub Private Sub madres2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then msehir.SetFocus End If End Sub
Private Sub msehir_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then msehir.Text = UCase(msehir) mkod.SetFocus End If End Sub
Private Sub kayıt_Click() With Data1.Recordset ölçüt = "mkod ='" & mkod.Text & "'" .FindFirst ölçüt If mkod.Text = "" Then MsgBox ("Kodu boşluk giremezsiniz") mkod.SetFocus GoTo Atla End If If .NoMatch = False Then MsgBox ("Bu kodda kayıt var yeni kod yazmalısınız!") mkod.Text = "" mkod.SetFocus GoTo Atla End If secim = MsgBox("Kayıt yapılmak üzere eminmisiniz?", 68) If secim = 6 Then .AddNew .Fields("mkod") = mkod.Text .Fields("mad") = mad.Text .Fields("msoy") = msoy.Text .Fields("mtel") = mtel.Text .Fields("madres") = madres1.Text & " " & madres2.Text .Fields("msehir") = msehir.Text Data1.UpdateRecord Data1.Refresh ek_boşalt mkod.SetFocus End If End With Atla: End Sub
Private Sub iptal_Click() ek_boşalt End Sub Private Sub Son_Click() Unload Me End Sub Public Sub ek_boşalt() mkod.Text = "" mad.Text = "" msoy.Text = "" mtel.Text = "" madres1.Text = "" madres2.Text = "" msehir.Text = "" End Sub 7.5. PerKartıEski (PerKartıEski.frm) Dim dön As Integer Dim i As Integer Dim kaysay As Integer Dim satırsay As Integer Dim x As Integer Dim y As Integer Dim kod As String Dim stkodyaz As String Dim stadyaz As String Dim tarihyaz As Date Dim işlemyaz As String Dim miktaryaz As Integer Dim açiklamayaz As String
Private Sub Data1_Reposition() mkod.Text = "" mad.Text = "" msoy.Text = "" mtel.Text = "" madres.Text = "" msehir.Text = "" With Data1.Recordset If .EOF Then .MovePrevious MsgBox ("Dosya sonuna gelindi") End If If .BOF Then .MoveNext End If mkod.Text = .Fields("mkod") mad.Text = .Fields("mad") msoy.Text = .Fields("msoy") mtel.Text = .Fields("mtel") madres.Text = .Fields("madres") msehir.Text = .Fields("msehir") GrideYaz End With End
|