Professional Documents
Culture Documents
VISUAL BASIC 1-VISUAL BASICIN ZELLIKLERI NESNEYE DAYALI PROGRAMLAMA OLAY -TEMELLI PROGRAMLAMA TMLESIK PROGRAM GELISTIRME ORTAMI BIR VISUAL BASIC PROGRAMININ KISIMLARI BILGISAYAR VE PROGRAMLAMA NEDIR? PROGRAM NEDIR? PROGRAMLAMA DILI NEDIR? PROGRAMLAMANIN TARIHI PROGRAM GELISRIRME SRECI IYI BIR PROGRAMIN NITELIKLERI PROGRAM GELISTIRME ADIMLARI 2-VB 60 KURULUMU Konfigrasyonlari SRMLER NET nedir? Visual Basic NET Common Language Runtime Destegi Nesne Ynelimli Tasarim Bos Dgm Diger Yeni zellikler Microsoft NET'in Avantajlari Gelecek Kusak Is Entegrasyonu Isletmelere Ynelik Kazanlar Microsoft Net ile Ilgili Standartlar Microsoft Net Fram ework XML Web Servisleri Hailstorm Akilli Cihazlar Istemci Yazilimlari Visual Basic 60 Uygulamalarini Visual Basic NETe Gncelleme Visual Basic NET Upgrade Tool Gnmzn Uygulamalarini Gncellemek iin Mimar Rehber Visual Basic 60in Sistemden Kaldirilmasi 3-VISUAL BASICTE ALISMA BASLATMA NEW SEKMESI EXISTING SEKMESI RECENT SEKMESI ALISMA ORTAMI FORMLAR
Sayfa 1 3 3 3 4 4 4 5 5 6 6 7 7 9 15 16 16 16 16 16 17 17 17 17 18 18 18 18 18 19 19 19 20 21 22 25 25 25 26 27 27 27
Iindekiler
KOD EDITR ARA KUTUSU BIR ARA KUTUSU DENETIMININ IKARTILMASI PROJECT PENCERESI ZELLIKLER (PROPERTIES) PENCERESI FORM LAYOUT PENCERESI OBJECT BROWSER ORTAMIN DZENLENMESI FILE MENS EDIT MENS VIEW MENS PROJECT MENS FORMAT MENS DEBUG MENS TOOLS MENS ADD-INS MENS WINDOW MENS HELP MENS 4-VISUAL BASIC TEMELLERI Bir Visual Basic Programinin Yapisi Proje Kavrami Projeye Baslama Project Explorer Formlar ve Modller Form Modlleri Standart Modller Class Modller Bir Procedure un Yazilmasi Bir Procedure un Yapisi Genel Yordamlar Olay Yordamlari Fonksiyonlar Bir fonksiyon yordaminin yapisi Yeni Bir Yordam Yaratma Yordamlarin agirilmasi Parametre Kullanimi Diger Formlardaki Yordamlari agirmak Class Modllerindeki Yordamlari agirmak Standart Modllerdeki Yordamlari agirmak Standart Modllerdeki Yordamlari agirmak Kod Yazma Kurallari Otomatik Kod Tamamlama KOD EDITR DZENLEME SEENEKLERI Pencere Dzenleme lerl Kod Penceresi Kisayollari
28 29 30 30 30 32 33 34 34 35 36 37 39 40 41 43 44 44 45 45 45 45 46 46 47 48 49 49 51 52 53 54 54 55 56 57 58 58 58 58 59 59 60 61 61
Iindekiler II
Men Kisayollari Koda Aiklamalar Eklemek Uzun Bir Satiri Birok Satira Blmek Birok Deyimin Bir Satir Olarak Bilestirilmesi Visual Basic'te Adlandirma Deyimler Aritmetik Islemler Islelerin (Operatrlerin) ncelikleri Metotlar zellikler With Deyimi Olaylar Veri Elemanlarinin Tanimlamalari Degiskenler Degiskenlerin Tanimlanmasi Degisken Tanimlamada Hatalar A ik Tanimlama A ik Tanimlamaya Zorlama Kapali Tanimlamalar Degiskenler Nerede Tanimlanacak? Kapsama Alani Yerel Degiskenler Static Degisken Tanimlama Sabitler Option Deyimleri Veri Tipleri Veri Tiplerinin Dnstrlmesi Veri Tiplerinin Degisken Adlariyla Kullanimi Diziler (Arrays) Dinamik bir dizi tanimlamak Dizilerin Alt ve st Sinirlariyla Tanimlanmasi Diger Dizileri Ieren Diziler Dizilerde Option Base Deyimi Kullanimi Kullanici Tanimli Veriler I Ie Olan Veri Yapilar Program Denetimi Dngler DoLoop Deyimi While ve Until Sistemi ForNext Deyimi Dizileri Islemek Iin Dnglerin Kullanilmasi Karar Yapilari IfThenElse Deyimi Select Case Deyimi GoTo Deyimi
62 64 65 65 65 66 67 69 69 70 71 72 73 73 73 75 75 76 76 77 78 78 83 84 85 87 91 97 97 100 101 102 103 104 105 107 108 109 114 115 118 119 120 124 129
Iindekiler
III
Exit Deyimi End Deyimi Operatrler 5-FONKSIYONLAR A STRING FONKSIYONLAR Asc() Fonksiyonu Chr() Fonksiyonu IsArray() Fonksiyonu Instr() Fonksiyonu Len () Fonksiyonu Left(), Left$() Fonksiyonu Lcase(), Lcase$() Fonksiyonu Ltrim,Trim, Rtrim Fonksiyonu Mid, Mid$ () Fonksiyonu Right(), Right$() Fonksiyonu Space, Space$ () Fonksiyonu String, String$ () Fonksiyonu StrComp() Fonksiyonu Tab,Spc () Fonksiyonu Ucase(), Ucase$() Fonksiyonu B MATEMATIKSEL FONKSIYONLAR Abs() Fonksiyonu Atn() Fonksiyonu Cos() Fonksiyonu Exp() Fonksiyonu Fix() Fonksiyonu Hex() Fonksiyonu Int() Fonksiyonu Log() Fonksiyonu Oct() Fonksiyonu Rnd() Fonksiyonu Sgn() Fonksiyonu Sin () Fonksiyonu Sqr() Fonksiyonu Tan() Fonksiyonu Val() Fonksiyonu CDEGISKEN KONTROL FONKSIYONLARI IsDate() Fonksiyonu IsNull() Fonksiyonu Lbound() Fonksiyonu TypeName() Fonksiyonu VarType() Fonksiyonu D DISK ISLEM FONKSIYONLARI ChDir() Fonksiyonu ChDrive Fonksiyonu
130 131 132 135 135 135 136 136 136 137 137 138 138 139 139 140 140 141 141 142 142 142 143 143 144 144 144 145 145 146 146 147 147 148 148 149 149 149 150 150 151 151 152 152 153
Iindekiler IV
CurDir Fonksiyonu Dir Fonksiyonu Environ Fonksiyonu FileDateTime Fonksiyonu FileLen Fonksiyonu FileCopy Fonksiyonu Get Attr Fonksiyonu Kill Fonksiyonu MkDir() Fonksiyonu Name Fonksiyonu RmDir Fonksiyonu EDOSYALAMA FONKSIYONLARI Open Fonksiyonu Write ve Print Fonksiyonu Input Fonksiyonu Close Fonksiyonu FileAttr Fonksiyonu FreeFile Fonksiyonu Loc Fonksiyonu Lof Fonksiyonu Seek Fonksiyonu EOF Fonksiyonu F Format Dnsm Fonksiyonlari Array () Fonksiyonu Ccur () Fonksiyonu CDbl () Fonksiyonu CInt () Fonksiyonu CLng () Fonksiyonu CSng () Fonksiyonu CStr () Fonksiyonu Cvar () Fonksiyonu DataValue () Fonksiyonu Format,Format$ () Fonksiyonu Str,Str$ () Fonksiyonu TimeSerial () Fonksiyonu G Ykleme Fonksiyonlari End Fonksiyonu Exit Sub Fonksiyonu Inputbox Fonksiyonu Load Fonksiyonu LoadPicture Fonksiyonu Msgbox Fonksiyonu Show Fonksiyonu Unload Fonksiyonu 6-FORM KULLANIMI
153 153 154 154 155 155 155 156 157 157 157 158 158 158 159 159 159 160 161 161 162 162 163 163 163 164 164 164 165 165 166 166 167 167 167 168 168 169 169 169 169 170 171 171 173
Iindekiler
SDI FORMLAR FORMA AIT BAZI NEMLI OLAYLAR FORMUN METHODLARI MDI FORMLAR Bir MDI Uygulama Yaratmak alisma Zamaninda MDI Formun zellikleri Alt Formlarin Kullanimi MDI FORMDA MENLER WINDOW(PENCERE) MENS YARATMAK MDIFORMUN BAZI OLAYLARI MODULLER 7-VISUAL BASIC KONTROLLERI A-DEFAULT COMPENENT LIST 1-Label(Etiket) Label Nesnesinin zellikleri Label Nesnesinin Bazi nemli Olaylari Label Nesnesinin Methodlari 2-Textbox(Metin Kutusu) Textbox Nesnesinin zellikleri Textbox Nesnesinin Bazi nemli Olaylari Textbox Nesnesinin Methotlari 3-Command Button(Komut Dgmesi) Command Button Nesnesinin Bazi nemli Olaylari Commant Button Nesnesinin Metodlari 4-Check Box(Isaret Kutusu) Check Box Nesnesinin zellikleri Checkbox Nesnesinin Bazi nemli Olaylari Checkbox Nesnesinin Methotlari 5-Option Button(Seenek Dgmesi) Optionbutton Nesnesinin zellikleri Option Button Nesnesinin Bazi nemli Olaylar Option Button Nesnesinin Methotlari 6-Frame Control(ereve) Frame Nesnesini zellikleri Frame Nesnesinin nemli Olaylari Frame Nesnesinin Metodlari 7-Picturebox(Resim Kutusu): Picturebox Nesnesinin zellikleri Picturebox Nesnesini Bazi nemli Olaylari Picturebox Nesnesinin Methodlari 8-Combobox Combobox Nesnesini zellikleri Comboboxin Metotlari Comboboxin Olaylari 9-Listbox
175 177 179 184 184 184 187 189 190 191 193 195 195 195 195 196 197 202 203 204 205 208 209 210 211 211 212 213 214 215 216 217 218 219 219 220 221 222 223 225 226 227 228 232 236
Iindekiler VI
Listbox Nesnesini zellikleri Listboxin Metotlari Listboxin Olaylari 10-HScrollbar HScrollbar Nesnesini zellikleri HScrollin Metotlari HScrollin Olaylari 11-VScrollbar VScrollbar Nesnesini zellikleri VScrollin Metotlari VScrollin Olaylari 12-Timer Timer Nesnesini zellikleri Timerin Metotlari Timerin Olaylari 13-Drivelistbox Drivelistbox Nesnesini zellikleri Drivelistboxin Metotlari Drivelistboxin Olaylari 14-Filelistbox Filelistbox Nesnesini zellikleri Filelistboxin Metotlari Filelistboxin Olaylari 15-Dirlistbox Dirlistbiox Nesnesini zellikleri Dirlistboxin Metotlari Dirlistboxin Olaylari 16-Shape Shape Nesnesini zellikleri Shapein Metotlari 17-Line Line Nesnesini zellikleri Linein Metotlari 18-Image Kontrol Image Properties (zellikler) Image Methods (Metodlar) Image Events (Olaylar) 19-Ole Kontrol Ole Properties (zellikler) Ole Methodlari Ole Events (Olaylar) 20-Data Kontrol Data Properties Data Methods Data Events (Olaylar)
237 238 238 243 244 244 245 246 246 247 247 248 248 249 249 249 250 251 251 251 252 252 253 253 254 254 254 255 255 255 257 257 258 258 259 260 263 264 266 267 274 275 275 276 280
Iindekiler
VII
B-Microsoft Common Dialog Kontrol CommonDialog Properties (zellikleri) C-Microsoft MSFlexGrid (Izgara Kontrol) MSFlexGrid Properties (MSFlexGrid zellikleri) MSFlexGrid Metodlari (Methods) MSFlexGrid Events (Olaylar) D-Microsoft Forms 20 object Library MultiPage Multipage Fonksiyonlari ToogleButton Toggle Button Fonksiyonlari Tabstrip TabStrip Fonksiyonlari SpinButton SpinButton Fonksiyonlari E-Microsoft Hrerarchikal FilexGrid Control MshflexGrid MSHFlexGrid Fonksiyonlari F-Microsoft Internet Transfer Control Inet Inet Fonksiyonlari G-Microsoft MAPI Controls Mapi Session Mapi Fonksiyonlari Mapi Messages Mapimessages Fonksiyonlari H-Microsoft Masked Edit Control MasketBox MaskedBox Fonksiyonlari I-Microsoft Windows Common Controls 60 TOOLBAR Toolbar Fonksiyonlari STATUS BAR StatusBar Fonksiyonlari PROGRESS BAR ProgressBar Fonksiyonlari TREEVIEW TreeView Fonksiyonlari LISTVIEW ListView Fonksiyonlari IMAGELIST ImageList Fonksiyonlari SLIDER Slider Fonksiyonlari IMAGECOMBO
281 282 296 297 300 304 306 306 307 308 310 311 312 313 315 316 316 319 321 321 322 323 323 323 324 325 326 326 328 329 329 331 332 333 334 335 336 338 339 341 342 343 344 345 346
Iindekiler VIII
ImageCombo Fonksiyonlari I-MICROSOFT MULTIMEDIA DTCs Page Transitions Page Transitions Fonksiyonlari Time Lines Time Lines Fonksiyonlari J-MICROSOFT REMOTEDATA CONTROL MSRDC MSRDC Fonksiyonlari K-MICROSOFT RICHA TEXTBOX CONTROLS RichTextBox RichTextBox Fonksiyonlari L-MICROSOFT SYSINFO CONTROLS SysInfo SysInfo Fonksiyonlari M-MICROSOFT TABBED DIALOG CONTROL SSTab SSTab Fonksiyonlari N-MICROSOFT WINSOCK CONTROLS Winsock Winsock Fonksiyonlari 8-DOSYA ISLEMLERI Rasgele Erisimli Dosyalarda Okuma ve Yazma Islemi Sirali Erisimli Dosyalarda Okuma ve Yazma Islemi Arama Modl Dzeltme Modl Silme Modl Listeleme Modl 9-PROGRAM KODU YAZARAK VERI TABANI DOSYASI HAZIRLAMAK MDB Dosyasina Yeni Kayit Yazmak Veri Tabani Dosyasindaki Kayitlarin Arasinda Dolasmak Veri Tabani Dosyasinda Kayit Aramak Kayitlarda Degisiklik Yapmak Veri Tabani Dosyasindan Kayit Silmek 10-VERI ERISIM YNTEMLERI Vbasicde veritabanlari seenekleri DAO DAO ve Jet Dao nesnelerinin sematik gsterimi DBEngine Properties Metodlari Workspace Metodlari
348 349 349 350 351 352 353 353 355 357 357 359 362 362 362 364 364 366 367 367 367 369 370 371 377 379 382 384 389 404 407 410 415 418 432 437 437 438 439 440 440 441 442 442
Iindekiler
IX
Database Metodlari TableDef Properties Metodlari Recordset Degiskeni Olusturmak Properties Methods Field Properties DAOnun Forma Eklenmesi Dao ayarlari Textlerin zellikleri Tablodaki kayitlar arasinda dolasma k Tabloya Yeni Kayit Girmek ve Kayit Silmek Kayit arama silme dzeltme ieren bir prog Stok yneticicsi programi RDO RDO 20in Yenilikleri Bir Baglantiyi Amak Veritabani Degistirme Remote Data Controlun Kullanimi RDO DAO karsilastirilmasi RDOnun zayif Ynleri ODBC ODBC Mimarisi ODBC Verisine Erisim Adim Adim Windows 9x te DSN Tanimi ADO Veri Erisim Teknigi ADO Data Controlun Proje alisirken Dzenlenmesi DSN kullanilmadan Baglantinin Yapilmasi DataGrid ,DataList,DataCombo Bilesenleri ADO (ActiveX Data Objects) Temelleri OLEDB Hakkinda Connection Nesnesi Cursor Location zelligi DATA Environment rnek Programlar Ve Aiklamalari 11-CYRISTAL REPORTS KULLANIMI Crystal Reports Menleri FILE EDIT INSERT FORMAT DATABASE
443 443 444 444 445 446 447 450 453 453 455 456 458 463 466 472 479 508 508 509 509 510 513 514 514 515 517 519 521 533 534 537 542 543 545 546 560 576 598 598 598 599 599 600 601
Iindekiler X
REPORT WINDOW HELP CRYSTAL REPORTS ILE RNEK RAPOR HAZIRLAMA DOSYA ISLEMLERI Dosyaya kayit yazma Dosyadan kayit okuma Kayit dzeltme Dosyadan kayit silme Men hazirlama 12-VBde GRAFIK KULLANIMI ChartType ColumnCount RowCount Row,Column Data ChartData ColumnLabel, RowLabel ShowLegend AllowDynamicRotation AutoIncrement TitleText,FootnoteText Title,Footnote VtFont Location LocationVisible LocationLocationType TextLayout TextLayoutOrientation TextLayoutHorzAligment TextLayoutVtVerticalAligment Chart Metodlari (Methods) EditCopy EditPaste 13-MICROSOFT OFFICE'E BAGLANMAK Bir Isletme Bilgi Sistemi Olusturmak Isletme Bilgi Sistemlerinin Kullanim Alanlari Siparis girme sistemi Insan kaynaklari ynetimi Mali analiz araci Envanter ynetim bilgi sistemi Ynetim bilgi sistemi Proje ynetim sistemi OLE (Nesne Baglama ve Gmme Elemani) OLE Teknolojisinin Gelisimi
603 604 604 605 606 606 611 612 612 613 620 622 627 627 627 627 627 628 628 628 629 630 630 630 630 630 630 630 630 630 631 631 631 631 632 632 632 632 632 632 632 632 633 633 634
Iindekiler
XI
DDE Teknolojisi (Dynamic Data Exchange) OLE 10 Bir Word dokmani iine gml Excel dokmani OLE 20 COM Teknolojisi (component object model) UUID Yapisi (universally uniqe identifier) Yapilandirilmis Dokman Saklama Yntemi (OLE Structured Storage) OLE zdevinim Yapisi (OLE Automation) OLE Denetimini Kullanmak Automation'i Kullanarak Uygulama Nesnelerini Programlamak Visual Basic'te Automation'i Kullanmak COM Teknolojisi Nesne Teknolojisi Visual Basic ile Bir Client Yaratmak REFERANSLARINDZENLENMESI NESNELERIN TANIMLANMASI NESNELERIN YARATILMASI Application Nesnesi ile alismak Microsoft Word Nesne Modeli Document Nesnesi ile alismak Visual Basic Object Browser Word Nesnelerini Grmek iin Object Browser Kullanimi Visual Basicten Word Kullanmak Yazim Denetim programini alistirin Visual Basicten Exceli Kullanmak Ipotek programini alistirin Visual Basicten Outlooku Otomatiklestirmek Visual Basicten PowerPointi Kullanmak 14-WEB IIN DINAMIK HTML SAYFALARI TASARLAMAK Dinamik HTML Yeni Bir Programlama Teknolojisi Adim Adim DHTML Program Gelistirmek DHTML Page Designer Ile alismaya Baslamak Yeni Bir DHTML Uygulamasi Amak DHTML Page zellikleri Bir HTML Sayfasina Metin Ekleme Page Designerdaki Metni Biimlendirme Karakterleri Ayirmak Iin SPAN Imlerini Kullanmak Properties Penceresiyle ID znitelikleri Atama Baska bir HTML sayfasina kpr yaratmak WebSansim Projesini Kaydetme DHTML Uygulamasini alistirma Microsoft Wordde HTML Belgeleri Yaratmak Sanslihtm Yardim Dosyasini Yaratmak Iin Word Kullanma
634 634 635 635 635 636 636 636 637 643 644 644 644 645 645 646 646 648 648 649 651 651 655 659 660 662 663 666 670 670 670 671 672 672 674 675 676 677 678 679 680 680 681 682
Iindekiler XII
DHTML Sayfalarina geler ve ActiveX Denetimleri Eklemek Ara kutusu geleriyle alismaya Baslamak DHTML Ara Kutusunu Belgelendirmek Button SubmitButton ResetButton TextField TextArea PasswordField Option Checkbox Select Image Hyperlink HorizontalRule FileUpload HiddenFile InputImage List geleri Yaratmak ve zellestirmek Websansim Uygulamasina geler Eklemek DHTML Uygulamanizdaki Dosyalari Yeniden Adlandirma Sayfadaki Bir Metin gesini Silme Sayfaya Bir Image gesi Ekleme Sayfaya Bir Button gesi Eklemek DHTML Sayfasina ActiveX Denetimleri Eklemek Ara Kutusuna Bir ActiveX Denetimi Ekleme Sayfada Bir Multimedia MCI Denetimi Yaratma DHTML geleri Iin Olay Yordamlari Yaratmak DHTMLPage_Load Olay Yordamini Yaratma DHTMLPage_Load Kodunu Inceleme Button1_OnClick Olay Yordamini Yaratma Button1_OnClick Kodunu Incelemek BenimDHTML7 Uygulamasini alistirma 15-VISUAL BASIC ERRORLER Hata Denetimi Daha Az Hatayla Karsilasmak Otomatik Tamamlamalar Editr Sekmesi seenekleri Kod dzenlemeleri Pencere Dzenlemeleri Kod dzenlemeleri alisma Zamani Hatalari Tuzaklanabilir Hatalar Hata Dzeltme Aralari
683 683 684 684 684 685 685 685 686 686 686 686 686 687 687 687 687 687 688 688 688 689 689 690 690 691 691 691 692 692 693 694 694 695 699 699 701 702 702 702 703 703 706 706 706
Iindekiler
XIII
Locals Window, Immediate Window ve Watch Window Locals Window Immediate Window Watch Window Programi Kaldigi Yerden Isletme Kesme Noktasi (Toggle Breakpoint) Kodun Yenibastan alistirilmasi agirmalar Diyalog Kutusu On Error Deyimi Hata Denetimi Iin Yntemler Resume Deyimi Err Nesnesi End ve Stop Deyimi Ek Hata Mesajlari, Sebepleri ve zmleri alisma Zamani Hata Mesajlari Program kodu yazarken karsilasilan hata mesajlari Locals Wndow Immediate Window Watch Window 16-API Nedir ? VB'de API Tanimi API Tanim Dosyasi Windows ve Sistem hakkinda Bilgi Veren API ler Bos bellek miktarini grenmek Mikroislemci tipini ve sayisini grenmek dwProcessorType dwNumberOfProcessors Windows versiyonunu ve ortamini grenmek Klavye kod sayfasini grenmek Klavye tipini grenmek Modern Inkey$ Windows dizinini grenmek LpBuffer nSize System dizinini grenmek Windows Ayarlari Hakkinda Bilgi GetSystemMetrics Disk Srcler Hakkinda Bilgi Veren Apiler Systemdeki disk srclerini grenmek Volume Bilgisini grenme GetVolumelnformation nVolumeNameSize IpVolumeSerialNumber IpMaximumComponentLength IpFileSystemFlags
709 709 710 710 711 712 712 712 712 714 715 716 717 717 717 718 731 731 731 732 733 735 737 738 739 739 740 740 741 742 742 743 743 743 744 744 745 749 749 751 751 751 751 751 751
Iindekiler XIV
lpFile System Name Buffer Src Boyutu IpTotalNumberOfBytes Windows Altinda alisan Btn Formlara Hkmetmek alisan formlarin handle numaralarini bulmak alisan formlarin basliklarini degistirmek alisan formlarin durumunu degistirmek Form simge durumunda mi? Form ekrani kaplamis mi? Form gizli mi? Masa stnn handle numarasi Formu en stte tutmak ve gizlemek Form Basliginin rengini degistirmek Windowsu Kapatmak Formlara Sekil Vermek CreatePolygonRgn Formu Taskbarda Gizleme Menlerle ilgili API'ler Kontrol-System Mens System Menusunun Handle Numarasini gr e n m e k System Mensne Yeni Seenekler Eklemek Mesaj Kuyrugundaki Mesaji Almak Menu ubugunun handle numarasini grenmek AltMenlerin handle numarasini grenmek Menlerin alt men sayisini grenmek Menlere resim eklemek Kapat Dgmesini Pasif Yapma Sikistirilmis Dosyalarla Ilgili APIler Sikistirilmis Dosyayi Amak ve Hedef Dosya y i O l u s t u r m a k Sikistirilmis Dosyayi Hedef Dosyaya Amak Dosyalari Kapatmak Ses kartinin API'lerle kullanilmasi Wav dosyalarini almak Wav dosyalarini alacak donanim var mi? Wav dosyalarini alacak donanimin kapasitesi nedir? Ses ayari yapmak Ses Girisi Ile Ilgili APIler Ses kaydi yapacak donanim var mi? Ses kaydi yapacak donanimin kapasitesi nedir? MIDI ikisi Ile Ilgili APIler MIDI formatindaki dosyalari alacak donanim var mi? MIDI ikis kapasitesi nedir? MIDI ikis ses seviyesini grenmek ve ayarlamak MIDI giris donanimi var mi? Ses kartinin sundugu diger sundugu fonksiyonlarla ilgili APIler
752 753 754 756 756 757 760 760 760 761 762 762 763 764 765 766 769 769 770 770 771 772 777 777 779 780 783 784 784 786 787 788 789 789 790 792 795 796 796 797 797 797 798 799 799
Iindekiler
XV
Yardimci Fonksiyonlarin Sayisi? Desteklenen Yardimci Fonksiyonlarin sitesi nedir? Yardimci birimlerin ses seviyesini grenmek ve ayarlamak Resim Isleme StretchBlt Ekran Yakalama Nesnelerin hDC numarasini grenmek Mouse ile semek Program Dosyalarindan ICON alma DIGER APILER Listelere Yatay Kaydirma ubugu Listede Arama Kendiliginden Ailan ComboBox Fare Kapani Fareyi Oynatma Yazici Hakkinda Daha ok Bilgi INI Dosyasindan okuma Registry islemleri Programinizi Task Listesinden Gizleme Egik Yazma Bekletme Duvar Kagidini Degistirme Windowsun alisma sresi Belgeler Mensne Dokman Ekleme Dizin Seme Penceresi Bilgisayar Adini grenme System Tray Uygulamalari 17- NEDEN IIS? KURULUM Common Files Documentation File Transfer Protocol (FTP) Server Frontpage 2000 Server Extensions Internet Information Services Snap-In Internet Services Manager (HTML) NNTP Service SMTP Service Visual InterDev RAD Remote Deployment Support World Wide Web Server IIS'E ERISIM IIS'DE GENEL AYARLAR Master Properties Enable Banwidth Throttling Computer MIME Map Server Extensions
799 799 800 801 805 808 808 810 812 814 814 815 816 816 817 817 820 820 824 824 826 827 827 828 828 830 831 840 841 842 842 842 842 842 842 842 842 843 843 843 846 847 847 847 848
Iindekiler XVI
General Options Permissions IIS'TE YERALAN SERVISLER WEB SITESI OLUSTURMA WEB SITESININ AYARLARI WEB SITESININ AYARLARI II KAPSAMLI RNEK VISUAL BASIC PROGRAMLARI
Iindekiler XVII
VISUAL BASIC
Visual Basic 10 yillik bir gemisi olan grsel bir dildir. Fakat grsel dil olmadan nce sadece BASICin oldugu dnemler 1950li yillara kadar dayanir. BASIC kelimesinin ailimi Beginners All-purpose Symbolic Instruction Code (Yeni baslayanlar iin ok amali sembolik talimat kodu) kelimeleridir. Basic kodu yazmak iin GWBASIC ve QBASIC editrleri kullanilarak yazilirdi ve Dos tabanli idi ve grsel dillerdeki kadar program yazmak kolay degildi. Gnmzde Basic ile program yazmak artik rafa kaldirildi diyebiliriz. Yil 1991de Basic dili gzel bir hamle yaparak Visual BASICin 1.0 srm ikarildi. Basic dili diger programlama dillerine oranla pek nemsenmedigi iin VB 1.0 srcde pek nemsenmedi. Bundan iki yil sonra 1993 yilinda Visual Basic 3.0 srm bir ok gelisme gstererek piyasaya ikti. Tekrar bundan iki yil sonra gelisimini srdrerek 4.0 srm 32bit uygulama destegi ile piyasaya sunuldu. 1996 yilinda Visual Basic 5.0 srm ile karsimiza ikti. Ve en son olarak Visual BASICin en gncel srm bir ok srm ile karsimizda. (Visual BASICe kisaca VB denmektedir.) VB artik Windows tabanli uygulamalar iin nde gelen gelistirme aralarindan biri olarak piyasadadir. Visualin kelime manasi grsel anlamindadir. VB Grsel olusu, programcinin bu dili grenme srecini kisaltmakta ve dilin kullanimi kolaylastirmaktadir. Ayni zamanda Windows tabanli olmasi kullanicida bir gz asinaligini saglar. VBnin grsel olmasi kadar nemli olan Olay gdml olmasidir. rnegin; kullanici penceredeki bir komut dgmesi zerinde farenin dgmesine tiklandiginda bir olay meydana gelir. Bu olay VB de Click( ) olay yordamiyla islenir. Visual Basic ortaminin nemli bilesenleri sunlardir;
PROGRAM NEDIR?
Program, gnlk hayatta bir sorunu bilgisayar ile zmek, rutin islemleri kolaylastirmak iin yazilan yazilimlardir. Bir program bilgisayar zerinde alisir ve insanlarin gnlk hayatlarini kolaylastirir. Kisinin program yazmasi iin ncelikle Genel Programlama Bilgisine sahip olmasi gerekir. Pesinden bir Programlama Dili bilmek gereklidir. Burada nemli olan programlama bilgisidir. Bu konuda kendinizi iyi hissedebiliyorsaniz herhangi bir programlama dili ile programlarinizi yazabilirsiniz. Dil tercihi yazilacak programa, soruna ve platforma uygun olarak yapilabilir.
2.Sistem Tasarimi: Asamasinda sistemin bilgi akisi, girdiler, iktilar sematik olarak ortaya koyar. 3.Algoritmalar: Bu isi yaparken atacagimiz adimlari aiklamaktir.Program tasariminda; yapilacak islemleri aiklamak ve programciya yol gstermek iin kullanilan bir diger yntem de akis semalari hazirlamaktir. 4.Karar Tablolari: Karmasik islemlerin aiklanmasi iin bir kilavuz olacak biimde hazirkanirlar.Karar tablolarinda durumlar ve islemler yer alir. 5.Veri Akis Semalari: Veri islemlerinde yaygin olarak kullanilir.Veri akis semalari verinin akisini ve dnsmn girdiden-iktiya dogru gsterir.Diger bir deyisle bilgi hareketini gsteren bir izelgedir. 6:Kodlama: Program; programlama dili komutlariyla yazilir.Kodlama belli kurallar erevesinde yapilan bir islemdir.
Nexti tiklayarak bir sonraki asamaya geelim. Burada bize her Microsoft rnnde oldugu gibi bir anlasma metni sunulacak bunu I accept the agreement seenegini isaretleyerek Next dgmesine basarak ilerliyoruz.
Daha sonra bizden kurulumun devam etmesi iin gerekli olan kurulum sifresini istiyor.
10
Sonraki ekranda bize programin yklenecegi yolu belirtmemizi istiyor. Uygun olan bir yol belirtip Nexti tiklayalim.
11
Nihayet kuruluma baslayabildik. Karsimiza ikan ekrandan Continue dgmesini tiklayarak ilerliyoruz.
12
Ardindan bize Microdofttan destek alabilmemiz iin gerekli olan bir numara (Product ID) verecek bunu bir tarafa kaydedebilirsiniz. Tamam dgmesine basip ilerleyelim. Daha sonra gelecek ekranda ise bize yklenecek bilesenleri sememizi saglayacak bir ekran gelecek .Custom dgmesini tiklayarak seimimizi yapalim.
Karsimiza ikacak ekrandan gerekli bilesenleri seelim.Bu ekranda Microsft un diger yazilim gelistirme aralarini da grebilirsiniz..
13
Tabii ki biz su anda Visual Basic ile ilgilendigimiz iin sadece Visual Basic ile alakali olan seyleri seecegiz.
14
Bu asama da bittikten sonra program bizden Windowsu restart etmemizi isteyecek. Programin bir sonraki ailisinda dzgn alismasi iin Windowsu yeniden baslatalim.
Konfigrasyonlari
Visual Basic 6.0 in kurulacagi bir makinada olmasi gereken minimun konfigrasyona gelince;
Isletim sistemi: Win 95, Win 98, Win NT 4.0, Win 2000 Islemci: 80486 veya daha st bir microislemci Harddisk Alani: Minimun 50 MB Ekran karti: VGA yada daha yksek znrlg destekleyen bir ekran
karti
RAM: 16 MB RAM
SRMLER
Visual Basic 1.0 Runtime Files Srm:
Windows 95/98/NT/2000; 156 KB; Freeware
Visual Basic 3.0 Runtime Files Srm: Visual Basic 4 (16 bit) Runtime Module Srm:
Windows 95/98/NT/2000; 1.41 MB; Freeware
Visual Basic 6.0 Runtime Files Srm: Windows 95/98/NT; 1 MB; Freeware
.NET nedir?
.NET, Microsoft'un pazarladigi gelecek kusak uygulama gelistirme aralari srmnn tesinde bir anlama sahiptir. Internet'i isletim sistemi haline getiren .NET, hem isletim sistemi, hem de Internet dsncesinin kapsamini genisletmektedir. Uygulamalarinizi gncelleyerek ve .NET zerinde yazilim gelistirme alismasi yaparak, yepyeni performans olanaklarindan ve gelismis zelliklerden yararlanabilecek, bu sayede uygulama gelistirme sresinden tasarrufu saglayabilecek, XML Web Servisleri gibi yeni uygulama siniflari olusturabilecek, Web zerinde dosya saklama ve kullanici tercihi ynetimi gibi yeni yapitasi servislerinden istifade edebileceksiniz. Visual Studio .NET, Microsoft'un ve dnyanin her yerindeki uygulama gelistiricilerin bu yeni hizmet siniflarini olusturabilmesini saglayan yeni kusak aralardan olusur.
16
Bos Dgm
Serbest dgmleme sayesinde, uygulama gelistiriciler zamanuyumsuz yrtme zelligini kullanarak, daha leklenebilir ve daha gvenli uygulamalar gelistirecek. Yrtlmesi uzun sren veya harici kaynaklara gerek duyan islev agrilari, artik islem iin ikincil dgm olusturarak, uygulamanin geri kalan kisminin zamanuyumsuz olarak alismaya devam etmesini saglayacaktir.
17
18
Akilli Cihazlar
Akilli cihazlar, PC'leri, dizst bilgisayarlarini, is istasyonlarini, telefonlari, el bilgisayarlarini, Tablet PC'leri, oyun konsollarini ve .NET evreninde alisabilmeleri iin olusturulan yazilimi kullanan diger cihazlari kapsamaktadir. Bu yazilimin kullanimiyla akilli cihazlar, kullanicilara bir yandan gl ve yogun bir kullanim deneyimi sunarken diger yandan bilgileri zerinde daha fazla denetim kurmalarini saglayarak Internet ve yerel bilgi islem gcnn stn zelliklerini etkin hale getirirler.
Istemci Yazilimlari
Son kullanicilar bilgisayarlari istemci yazilimlari araciligi ile kullanmaktadirlar. Microsoft, son kullanicilara zengin ierikli bir kullanim saglayan istemci yazilimlarini olusturmak konusunda engin deneyimlere sahip. Istemci yazilimi Microsoft .NET'in basarisinda olduka ynlendirici bir rol oynuyor; genis yelpazedeki istemcileri desteklemek zere altyapi olusturmasinin yani sira Microsoft ayni zamanda da PC'leri ve akilli cihazlari glendirmek iin yeni kusak yazilim istemcileri gelistiriyor.
19
20
Visual Basic .NET Upgrade Tool, Visual Basic 6.0 formlarini Windows Forms olarak gncellestiriyor. Windows Forms, Visual Studio .NET iinde paylasilan yeni bir form paketidir. Yerel dzeyde erisilebilirlik desteginin yani sira, yerinde men dzenleyicisi iermektedir.
21
Windows ta control panelden program ekle/kaldir seenegini tiklayarak ykl olan Microsoft Visual Basic 6.0 seenegini sein ve kaldir seenegini tiklayin.
22
Bize geiyoruz.
bu
islem
iin
emin
olup
olmadigimizi
soruyor.Yes
diyerek
23
Kaldirma islemi bittikten sonra bilgisayarinizi yeniden baslatmaniz gerekiyor.Hemen yeniden baslatmak iin Restart Windows seenegini, daha sonra baslatmak iin Exit Setup seenegini seiyoruz.
24
New sekmesinden bir proje sablonu seerek Visual Basicin uygulamanizin temellerini olusturmasini saglayabilirsiniz. Bu islem zellikle Visual Basicte yeniyseniz bir uygulamayi tasarlamaya ayiracaginiz sreden nemli bir tasarruf saglayabilir. New sekmesi size esitli proje sablonlari sunar;
25
EXISTING SEKMESI:
Existing sekmesi mevcut bir projeyi sememizi saglar. Bu, Visual Basic ile gelen rnek bir proje yada gemiste zerinde alismis oldugunuz bir proje olabilir. Visual basic ile daha ok alistika bu sekmeyi de daha sik isaretleyeceksiniz.
26
ALISMA ORTAMI
FORMLAR
Yukaridaki sekilde ekranin ortasinda form tasarimcisini greceksiniz. Bu, formun ve zerinde duran denetimlerin grsel dzenlerini gerekten tasarladiginiz alisma alaninizdir. Visual Basic IDE iinde bu alanda bir seferde
27
KOD EDITR
Bu aslinda iinde ok sayida retkenlik araci bulunan, turbo sarjli bir metin editrdr. Ona ne isim verirseniz verin, isinizin byk kismini yapacaginiz pencere budur. Kod Penceresini form Layout Penceresinde bir form veya denetimi ift tiklayarak aabilirsiniz. Bir formu ift tiklarsaniz bu formun bir yordamina gtrlrsnz. Formu Project Explorer Penceresinde ift tiklayarak ain yada Project Explorer iinde View Code dgmesini tiklayin. Bir denetimi tiklarsaniz bu denetimin bir yordamina
28
ARA KUTUSU
Ara Kutusu adindan da anlasilacagi gibi uygulama arabirimini olusturmak iin gereksiniminiz olan paralari ierir.Yandaki sekilde gsterilen aralarin hepsi, sol stteki imle hari uygulamanizda ki bir forma yerlestirmek isteyebileceginiz nesne veya gelere karsilik gelmektedir. Bu ara veya nesnelere denetim adi verilir. Bunlarin ogu Visual Basicin birer parasidir ve bunlara yerlesik yada standart denetimler adi verilir. Bunlara rnek olarak komut dgmesi ve metin kutusu denetimleri verilebilir. Blm 3 bu denetimleri daha ayrintili olarak ele alacak. Visual Basic kur ayarlariniza bagli olarak ara kutusunda daha az veya ok sayida denetim olabilir. ARA KUTUSUNUN DZENLENMESI: Denetimlerinizi dzenlemek iin kullanabileceginiz sekmeler tanimlamaniza izin verir. zgn denetimlerinizi kategorilere gre dzenlemek isteyebilirsiniz. rnegin btn Internet zgn denetimlerini ayri bir sekmede tutalim. Ara kutunuza yeni bir Internet sekmesi eklemek iin asagidaki adimlari izleyin: 1. Ara kutusunun bos bir yerini sag tiklayin. 2. Ailan menden Add Tab komutunu verin. 3. Visual Basic sizden yeni bir sekme girmenizi istediginde Internet yazin. 4. OK dgmesini tiklayin. 5. Artik yeni bir ara kutusu sekmesi olusturabileceginize gre istediginiz btn denetimleri de bu sekmeye srkleyebilirsiniz; rnegin grnt denetimini az nce olusturdugunuz Internet sekmesine srkleyiniz. Bu anda ara ubugunuzda Internet ile ilgili herhangi bir denetiminiz olmayacak. 6. Microsoft ve diger nc parti sirketler tarafindan olusturulan zgn denetimleri eklemek iin ara kutusunu sag tiklayarak ailan menden Components yada ana menden Project => Components komutunu verin. 7. Kullanilabilir denetimler listesindeki bu rnekte Microsoft Internet Controls olan eklemek istediginiz denetimin yanindaki kutuyu isaretleyin. 8. Bu denetimler ara kutusuna eklemek iin OK dgmesini tiklayin. Tanimlayacaginiz sekme ve kategorilerin isimleri tamamen kisisel tercihlerinize baglidir. Dilediginiz gibi sekmeler olusturun ve denetimlerinizi istediginiz gibi dzenleyin.
29
PROJECT PENCERESI
Visual Basicde ekranin sag tarafinda, ara ubugunun hemen altinda Project Explorer penceresi yer alir. Yandaki Project Explorer, projenizdeki esitli elementlere (formlar, siniflar ve modller) hizla erismenizi saglar. Project Explorer penceresi, alt klasrleri aip kapatmaniza olanak vermesi aisindan byk oranda Windows Explorera benzer. Uygulamanizi olusturan nesnelerin hepsi bir projede paketlenir. Bunu daha sonra kullanmak, test etmek, hata gidermek veya gelistirmek iin kaydederseniz Visual Basic bu projeye varsayilan dosya uzantisi olan .VBPyi (Visual Basic Project) verir. Basit bir proje genellikle uygulamaniz tarafindan kullanilan pencere olan bir form ierir. Project Explorer penceresi formlara ek olarak ayrica sinif modllerini ve siniflari da listeler.
NOT: Byk uygulamalarin genellikle birka form, modl, ve sinif olur. Bunlarda Project Explorer penceresinde listelenir.
grmek iin onu Project Explorer iinde sein ve View Object tiklayin. Bu formla iliskili bir kod varsa View Code dgmesi kendine ait bir pencerede grlebilir. Project Exploreri sag size bu pencereye zg ok sayida seenek ieren bir men
30
31
Form Layout Penceresi uygulamaniz alistiginda formun ekranda ne kadar yer kaplayacagini belirleme aisindan da faydalidir. Form Layout Penceresini kullanmak iin asagidakileri yapin. 1. Form Layout Penceresinde formu tiklayin ve onu bu pencerenin ortasindaki monitr grafiginin merkezine tasiyin. 2. Run => Start komutunu vererek programi alistirin.
32
Object Browser sizin kullaniminiza ailan yada gsterilen esitli zellik, olay ve yntemler arasinda dolasmanizi saglar. Ona View mensnden Object Browser komutunu vererek yada F2 tusuna basarak erisebilirsiniz. Bu nesneler nereden gelir ve herhangi bir yerde hangi nesnelerin kullanilabilecegini ve bunlarin hangi zellik ve yntemleri sunduklarini nasil bilebilirsiniz? Btn nesneler, ister Visual Basicte yerlesik olsun, ister siz olusturmus olun bir tip ktphanesine sahiptir. Bir tip ktphanesi, nesnenin zellik, yntem ve olaylarinin istediginiz herhangi bir anda basvurabileceginiz bir katalogdur. Aralarinda sizin zgn ActiveX denetim ve (EXE ve DLL formatindaki) ActiveX bilesenlerinizin de yer aldigi btn nesnelerin Object Browser iinde grntlenebilen bir tip ktphanesi vardir. Neyse ki bilesenlerinizin yelerini grntlemek iin zel bir eylem yapmaniz gerekmez. Object Browser bunlarin tanimlarini alistirabilir dosyadan toplar (ancak tanimlarini sunmaniz gerekir). Kullanilabilir nesnelerin tip Browser iinde grntlenir. ktphaneleri yukarida grlen Object
Object Browser yardim dosyalari veya referans malzemesinin bir alternatifi degildir. Ancak deneyimli program cilar bile muhtemelen Datebase nesnesi gibi karmasik nesnelerin yapilarini hatirlayamaz. Object Browser, Datebase nesnesi ile Veri tabani uygulamalari programlama isini basitlestirir. Yani kisacasi Visual Basic veya nesneleri kullanima sunan diger uygulamalar iinde bulunan btn siniflar Object Browser iinde aiklanir.
33
ORTAMIN DZENLENMESI
FILE MENS
Yanda aik haldeki resmi bulunan FILE mensnn elemanlari ve kullanildigi yerler sunlardir: NEW PROJECT: Yeni bos bir proje aar. ADD PROJECT: Diske kayitli projeyi amak iin kullanilir. olan bir
REMOVE PROJECT: Project penceresinde seili olan form proje, form yada modl siler. SAVE PROJECT: zerinde alisilan projeyi kaydeder. SAVE PROJECT AS: zerinde alisilan projeyi farkli bir isimde veya farkli bir yere kaydeder. SAVE FORM1: Project penceresinde seili olan nesneyi (form, modl, vb..) kaydeder. SAVE FORM1 AS: Project penceresinde seili olan nesneyi (form, modl, vb..) farkli isimde veya farkli yerde kaydeder. PRINT: Bir proje yada form dizaynini yazdirmak iin bu seenegi kullaniriz. PRINT SETUP: Yazici ve yazdirma ayarlarini yapmak iin kullanilir. MAKE PROJECT EXE: zerinde alisilan projeyi EXE uzantili bir programa evirir EXIT: Programdan ikar
34
DELETE: Seili vaziyette bulunan veri silinir. SELECT ALL: Sayet form aktif ise tm elemanlar, Kod penceresi aktif ise tm yazilan kodlar aktif duruma getirilir. FIND: Kod penceresi zerinden bilgiyi buldurmak iin kullanilir. istenilen
FIND NEXT: Arama sonrasinda istenilen kelimenin sonrasinda varsa onu gstermede kullanilir. REPLACE: Istenilen bir ifadeyle diger bir ifadeyi otomatik olarak degistirmek iin kullanilir. INDENT: Kod penceresindeki ifadeleri karakter (1 tablik) ierden baslatir. 8
OUTDENT: Kod penceresindeki ifadeleri 8 karakter (1 tablik) disardan baslatir. INSERT FILE: Kursrn bulundugu noktadan itibaren uzantisi TXT, BAS, veya CLS olan bir dosya eklemek iin kullanilir.
35
PARAMETER INFO: Men seenegi ile yazilan bir fonksiyonun ierdigi parametre tipi grenilebilir.
VIEW MENS
Yanda aik hali bulunan VIEW mens grnm denetimlerini kontrol eden komutlari ierir. CODE: Seili olan forma ait kod penceresini grntler. OBJECT: Seili olan formun tasarim seklini grntler. DEFINITION: Bu komut ile seili olan degisken, sabit veya tipinin tanimlandigi yere odaklanir. LAST POSITION: Kursr entere basilmadan nceki son pozisyona odaklar. OBJECT BROWSER: Bu seenek ile zerinde alisilan projenin ve VB ktphanelerinin bulundugu pencereye gidilir. IMMEDIATE WINDOW: Immediate penceresine gider. Bu pencere debug modunda degiskenler zerinde islem yapmak iin kullanilir. LOCALS WINDOW: Locals penceresi grntlenir. Bu pencere de debug modunda kullanilir. O anda projede bulunan kontrol elemanlarinin zelliklerine ait pencereye local penceresi denilmektedir. WATCH WINDOW: Watch Penceresi grntlenir. Bu pencere de debug modunda kullanilir ve DEBUG_ADD Watch menleri ile eklenen degiskenlerin o anki durumlarini gsterir. F7 ve F8 tuslarina basilarak degiskenlerin program alisimi esnasindaki degisimi adim adim izlenebilir.
36
TOOLBOX: Kontrol elemanlarinin yer aldigi toolbox mensne ulasmakta kullanilan seenektir. COLOR PALETTE: Renk penceresini grntlemek iin kullanilir. TOOLBAR: Bu seenek ile VBde kullanilan ara ubuklari gsterilip gizlenebilir. Bu seenek kullanildiginda karsimiza asagidaki men ikar.
DEBUG: Bu seenek debug ara ubuklarini gsterir yada gizler. EDIT: Bu seenek te edit ara ubuklarini gsterir yada gizler. FORM EDITOR: Bu seenek ise Form editr ara ubugunu gsterip gizlemede kullanilir. STANDART: Standart seenegi standart ara ubuklarini gsterip gizlemekte kullanilir. CUSTOMIZE: Bu seenek ile bir ok islem yapmak mmkn olmaktadir. Bunlari syle siralaya biliriz: 1) Visual Basic menlerinin yerini degistirmek veya Trkelestirmek. 2) Yeni ara ubuklari olusturulabilir, silinebilir, ve yeniden adlandirilabilir. Yapilan degisiklikler iptal edilebilir. 3) Customize mens aikken menlerin yerini degistirmek te mmkndr
PROJECT MENS
ADD FORM: Projeye yeni bir form ekle mek iin kullanilir. ADD MDI FORM: P rojeye yeni bir MDI form eklemek iin kullanilir. ADD MODULE: Projeye yeni bir module eklemek iin kullanilir. ADD CLASS MODULE: Projeye yeni bir class module eklemek iin kullanilir.
37
PROJECT PROPERTIES: Burada proje ile ilgili zelliklerin ayarlari yapilir. Mesela program her derlendiginde versiyonun bir artirilmasi gibi Projede birden fazla form varsa, alismaya hangi formla baslanacagi, programda kullanilacak bazi dosya isimleri de bu pencerede ayarlanir.
38
MAKE SAME SIZE: Form zerinde birden fazla kontrol elemaninin ykseklik ve genisliklerini ayni seviyeye ayarlamayi kolaylastiran bu seenek kendisine ait alt mende;
WIDTH: Seili elemanlari ayni genislikte yapmaya yarar. HEIGHT: Seili elemanlarin yksekliklerini ayni seviyeye ayarlar. BOTH: Seili elemanlarin hem yksekligini hem de genisligini ayni seviyeye ayarlamaya yarar.
SIZE TO GRID: Seili elemanlari form zerindeki noktalara odaklar. HORIZONTAL SPACING: Form zerindeki birden fazla kontroln arasindaki yatay bosluklari ayarlamak iin kullanilir. Ilgili kontrolleri setikten sonra bu seenege ait alt mendeki;
MAKE EQUAL: Elemanlarin aralarindaki yatay bosluklari esitler. INCREASE: Elemanlarin aralarindaki yatay bosluklari artirir. DECRASE: Elemanlarin aralarindaki yatay bosluklari azaltir. REMOVE: Elemanlarin aralarindaki yatay bosluklari tamamen kaldirir.
VERTICAL SPACING: Form zerindeki birden fazla kontroln arasindaki dikey bosluklari ayarlamak iin kullanilir. Ilgili kontrolleri setikten sonra bu seenege ait alt menleri kullanilir.
MAKE EQUAL: Elemanlarin aralarindaki dikey bosluklari esitler. INCREASE: Elemanlarin aralarindaki dikey bosluklari artirir. DECRASE: Elemanlarin aralarindaki dikey bosluklari azaltir. REMOVE: Elemanlarin aralarindaki dikey bosluklari tamamen kaldirir.
CENTER IN FORM: Bu seenegin alt mensndeki seenekler ile form zerindeki seili olan elemanlari formun orta noktasina ayarlar.
39
ORDER: Form zerindeki kontrollerden alt alta olanlar varsa bunlari ste veya alta almak iin bu seenegin alt mensndeki seenekler kullanilir.
BRING TO FRONT: Alttaki elani ste alir. SEND TO BACK: stteki elemani alta alir.
LOCK KONTROLS: Seili olan elemanlari kilitleyerek bunlarin yerlerinin degistirilmesini saglar.
DEBUG MENS:
STEP INFO: Programi adim alistirmaya yarayan seenektir. adim
STEP OVER: Bu seenekte programi adim adim alistirirken procedure agrilari bir satirmis gibi tek satirda islenir, procedurelere girilmez. ADD WATCH: Asagida sekli grnen ADD WATCH penceresi ile program akisi esnasinda izlenecek degiskenleri semeye yarar.
Solda BREAK WHEN VALUE IS TRUE seenegi seili durumda iken program alistiginda alakali degiskene sifirdan farkli bir deger yklenirse program kirilir. BREAK WHEN VALUE CHANGES seenegi seili durumda iken program alistiginda alakali degiskene bir
40
RUN MENS:
START: Tasarimi tamamlanmis yada alismasi durdurulmus bir programi alistirir. BREAK alismakta olan bir programi geici olarak durdurur.
END: alisan bir programin alismasi sona erdirilir. RESTART: Geici olarak durdurulmus bir programi kaldigi yerden alismasina devam ettirir.
TOOLS MENS:
ADD PROCEDURE: Kod penceresine (Function), alt program (Sub), Olay (Event) ve zellik (Property) eklemek iin kullanilir. MENU EDITOR: Bu seenek ile men tasarim penceresine ulasilir. Bu pencere araciligi ile istenilen men tasarimi yapilabilir. OPTIONS: Bu seenek seildiginde karsimiza gelecek pencere vasitasi ile programin kontroln etkileyecek bir ok degisiklik yapilabilmektedir.
41
42
OPTION penceresindeki bir diger i pencere de sol tarafta grldg gibi DOCKING tir. VBde kullanilan pencerelerin gurup olarak gsterilip gsterilemeyec egi belirlenir. Sol tarafindaki checkbox kutucugu isaretli olan seenekler programda gsterilir.
ADD-INS MENS:
ADD IN MANAGER: Bu kontrol ile user kontrolde kullanilacak sihirbazlar aktif yada pasif hale getirilir.
43
HELP MENS:
Bu mende konularina ulasmak ve istenilen bilgiyi elde etmek mmkn. Ayrica VBnin zellikleri ve etiketi de burada bulunmaktadir. Web sayfasi araciligi ile MICROSOFTa ulasmak iin kisa yollar da burada mevcuttur.
44
Microsoft Visual Basic 6.0 4-VISUAL BASIC TEMELLERI Bir Visual Basic Programinin Yapisi
Bir Visual Basic programi bir proje olarak gelistirilir. Proje vbp uzantili bir dosyadir. Proje iindeform ve modl gibi diger bilesenler yer alir.
Proje Kavrami
Bir uygulama gelistirme srecinde gerekli birimleri olusturmak iin btnlesik bir ortamda alisilir. Iste programin bu birimlerinin toplandigi bu alismaya proje (project) denir. Yeni bir Visual Basic programina basladiginizda yeni bir proje yaratirsiniz. Bunun geici adi Project1 olur. Ardindan proje iinde formlar, modller ve diger bilesenleri yaratirsiniz. Bir proje su birimlerden olusur: Bir proje dosyasi. Btn elemanlari takip etmeyi saglayan bu dosyanin uzantisi vbp'dir. Her form iin bir frm dosyasi. Her formun zellikleri iin binary (ikili) bir dosya. Her class modl iin bir cls dosyasi (seenek). Her standart modl iin bir bur. dosyasi (seenek). ActiveX kontrollerini ieren bir veya daha fazla dosya. Bu dosyalarin uzantisi ocx'tir. (seenek) Bir kaynak dosyasi res uzanitili (seenek).
Bir proje dosyasi proje ile ilgili nesneleri ieren bir dosyadir. Proje dosyasi ayni zamanda projeye zel ortamin da kayit edilmesini saglar. Proje dosyasi istenirse exe dosya haline evrilerek dogrudan alismasi saglanir.
Projeye Baslama
Visual Basic'in baslatilmasiyla beraber ya da bir proje iinde yeni bir uygulamaya baslamak iin File mensnden New Project komutu kullanilir. Ardindan gelistirilecek programin Standard EXE ya da diger isletilebilir birim sekli seilir. Ardindan bos bir form ile Visual Basic tmlesik program gelistirme ortami programcinin karsisina ikar. Uygulamanin arabirimi ve kodlari yazildiktan sonra btn kodlar bir proje olarak kayit edilir. Projenin kayit edilmesinden nce formlarin da kayitlari yapilir. Formlar frm olarak, projeler de vbp dosyasi olarak kayit edilir.
45
Formlar ve Modller
Diger programlama dillerinde oldugu gibi Visual Basic'in de belli bir kod kurallari ve yntemleri vardir. Visual Basic kodu modl iinde saklanir. tr modl ya da diger bir deyisle kodun saklandigi yer vardir: Form modl Standart modl Class modl
Basit uygulamalarda genellikle bir form bulunur. Btn kodlar bu formun modlnde (kod alani) yer alir. Uygulama bydke ek formlar projeye
46
Her modlde ayri ayri kodlar yazmanin yani sira bir de btn formlarda ortak olarak kullanilabilecek kodlara gereksinim duyuldugunda o zaman standart modller kullanilir. Class modlleri ise zel metot ve zellikleriyle yeni bir nesne yaratmak iin kullanilir. Btn modller su bilesenleri ierir: Declarations (tanimlamalar) Procedures (yordamlar)
Tanimlamalar; verilerin tanimlandiklari alanlardir. Modln en basinda olan bu kisimda sabitler, degiskenler, dinamik baglanti ktphaneleri tanimlanir. Procedure'ler ise Sub, Function ya da Property olmak zere bir blok kodu ifade ederler. Procedure'larin bir diger zelligi de bir seferde isletilmeleridir. rnegin bir dgmeye tiklayinca bir procedure in alismasi gibi.
Form Modlleri
Form modlleri (FRM dosya uzantili) bir Visual Basic uygulamasinin temelini olusturur. Form mo dlleri olay yordamlarini, genel yordamlari, ayrica form dzeyinde veri tanimlamalarini ierir.
Sekil 4.2 Form Modl Form modlleri iinde yapilan tanimlamalar ve yordamlar formun ait oldugu uygulamaya aittir.
47
Standart Modller
Standart modller (KAS dosya uzantili) uygulama ierisindeki diger modllerden de ulasilabilen yordam ve tanimlamalari ierirler. Bu modller uygulamanin her yerinden erisilebilen (global) ya da modl dzeyinde tanimlamalari ierirler. Burada yazilan kodlar belli bir uygulamaya ait olmak zorunda degildir. Standart modller birok uygulama tarafindan kullanilabilir.
48
49
Sekil 4.5 Kod Editr Kod editr iinde nesnelere gre ayri kod kesimleri vardir. Nesne listesinden bu blmlere ge mek mmkndr.Bir form modlnde nesne listesi form iinde yer alan kontrolleri ve onlarin esitli olaylara gre sahip olduklari olaylara gre kodlari ierir. Kod editr olarak kullanilan modl penceresi iinde ok sayida yordam yer alir. Bu yordamlara Procedure listesinden ya da Object listesinden erisilebilir. rnegin Command 1 kontrol Click olayi ile ilgili olarak bir kod kesimine sahiptir.
Sekil 4.6 Olaylar Class modlnde ise genel kesim ve class kesimi bulunur. Standart modllerde ise sadece genel kesim yer alir.Class modlleri sadece kendisinin baslatip sonlandirabilecegi olay yordamlarini ierirler.Standart modller ise olay yordamlari iermezler bu nedenle sadece General blmnde tanimlamalara ve genel amali yordamlara sahiptirler.
50
51
Visual Basic de degisik trde yordamlar (procedure) kullanilir: Sub, Function, Property. Bir Sub yordami herhangi bir deger dndrmez. agrilarak ya da bir olaya tepki olarak alisir. Function yordamlar ise bir deger dndrrler. rnegin bir faiz hesabinin sonucunu dndrrler. Property yordamlar ise bir deger dndrrler, atama yaparlar ve nesnelerin referanslarini dzenlerler.
Genel Yordamlar
Bir genel procedure bell i bir islemi stlenen program parasidir. rnegin bir dosyanin ailmasi ya da raporun bastirilmasi iin kullanilabilir. Genel yordamlar diger yordamlardan agrilirlar. Bylece belli bir islevi olan bu birim programin her yerinden istenildigi kadar agrilarak kullanilir. Buna karsin olay yordamlari ise kullanicinin yarattigi bir olay nedeniyle alisir. Olay yordamlari kullanicilarin hareketlerine tepki olarak agrilirlar. rnegin bir dgmeye tiklayarak bir islemin baslatilmasi.Iyi bir programlama stratejisi iinde bir takim ortak grevler genel yordamlar olarak planlanmalidir. Bylece kod tekrarina gerek kalmaz.
52
Olay Yordamlari
Olay yordamlari bir olayin (event) olusmasina tepki olarak alisirlar. Visual Basic nesneleri (formlar, metin kutulari, dgmeler, vb) belli olaylari tanirlar. Bylece olay olustugunda; o olay iin hazirlanmis olay yordami alisir. Bir komut dgmesinin olaylari: Click GotFocus KeyDown MouseDown Tiklama Odaklanma zerine gelme. Bir tusa basmak. Farenin bir tusuna basmak.
53
Olay yordamlari Visual Basic nesnelerinin olaylarina bagli olarak gelistirilirler: rnegin Form1_load olay yordami bir formun ailmasi sirasinda alisacak bir yordami, Command1_Click olay yordami da bir komut dgmesine tiklandiginda alisacak bir kod birimini gsterir. Sub KontrolAdi_OlayAdi(argmanlar) -deyimlerEnd Sub Olay yordamlarinin adini kod editr iinde dogrudan yazabileceginiz gibi Visual Basic tarafindan otomatik olarak koda eklenen yordam ve olay adlarini da kolayca kullanabilirsiniz. Bu islem iin kod editr penceresinde nesne ve olay seilir. 1. 2. 3. Kod editr penceresinde Object kutusundan istediginiz nesneyi sein. Procedure kutusundan istediginiz prosedr sein. Sub prosedrnz hazir.
Fonksiyonlar
Visual Basic procedure'lari sadece Sub olarak dzenlenmez. Bir diger procedure yapisi da Function olarak bilinen fonksiyonlardir. Bir procedure olarak dzenlenen fonksiyonlar belli bir islemi kod olarak ieren ve bir degeri geri dndren program paralaridir. Bir yordam olarak yaratilan, fonksiyonlarin Sqr, Val gibi Visual Basic'te hazir olarak bulunan fonksiyonlarla iliskisi yoktur. Fonksiyonlar kullanim bakimindan bir islemi yapan ve istenildigi yerde kullanilabilen bir kod birimidir.rnegin bir faiz fonksiyonu istenildigi program iinde istenilen yerde agirilarak kullanilir.
54
Fonksiyon yordamlar bir degeri elde etmemizi saglarlar. Fonksiyonlar degisken gibi veri tipine sahiptirler. Bu veri tipi, dnecek veri tipini belirler. Fonksiyonlar bir hesaplamanin parasi da olabilirler. Toplam= Ikramiye+UcretHes(gun,baz,katsayi)/360 rnegin api verilen bir dairenin alanini hesaplayan bir fonksiyon ya da verilen dereceyi Fahrenheit' e eviren bir fonksiyon gibi. rnek:Dereceyi Fahrenheite eviren fonksiyon. Function Fahrenheit(x) Fahrenheit = x*9/5+32 End Function
Fonksiyonun kullanimi:
Private Sub Command1_Click ( ) Dim Deger As Integer Deger=InputBox( ) MsgBox Fahrenheit(Deger) End Sub
55
Yordamlarin agirilmasi
Olay temelli yordamlar bir olayla iliskilidir. rnegin form ailir ve Load olayi olusur. Bu nedenle Form1_Load adli yordam alismaya baslar ya da bir dgmeye tiklanir ve Command1_Click yordami alisir. Olay yordamlarinin alistirilmasinin yani sira diger yordamlarin alistirilmasi iin de agrilma (call) islemi kullanilir.agirma islemi; program kodu iinde yordamin adinin yazilmasidir. agirma islemi iin istenirse Call deyimi de kullanilir. Ancak Call deyimi kullanilmadan da sadece yordamin adini yazmak yeterlidir. Yapisi: Call yordam adi (parametreler) ya da Yordam adi parametreler
rnegin bir yordamin iinde, yapilacak bir islem iin baska bir yordam agirilir. Private Sub ZeminRengi (ColarCode As Integer, MyForm As Form) MyForm. BackColor = QBColor (ColorCode) End Sub Private Sub Command1_Click() Dim Renk As Integer Renk = InputBox("hangi rengi istiyorsun ? (1-15 arasi)") sub agir ZeminRengi Renk, Form1 End Sub Private Sub Sonraki_ Click() 'Bir sonraki kayida git 'eger EOF ise uyar ve sonuncu kayida git.
56
Parametre Kullanimi
Bir procedure'dan diger bir procedure 'e deger geirmenin iki yolu vardir. Referans ve deger olarak. Genellikle referans biimi kullanilir. nk bu durumda agirilan procedure gnderilen degeri kullanir. Kendisi bir deger ve ona bir bellek alani ayirmaz. Private Sub Command1_ Click() Dim A As Inteqer A = 10 Ekle A End Sub Sub Ekle(x As Integer) 'referans ile geirme x = x+1 End Sub Deger ile geirmede ise ByVal ifadesi kullanilir. Geirilen bu degere yerel bir bellek ayrilir ve karsilik gelen argmani bu degere kopyalar. Sub Ekle(ByVal 'deger ile x = x+1 End Sub x As Integer) geirme
57
Kendi-Kendini agirma
Procedure'lar degiskenleri iin sinirli bir bellek alanina sahiptirler. Bir procedure kendini agirdiginda daha fazla bellek alanina gereksinim duyulur.Iste procedure'larin kendilerini agirma islemi ne z-yineleme (recursive) procedure denir. Eger bir procedure kendisini srekli agirmaya devam derse; eger herhangi bir kontrol konulmamissa o zaman hata verir. Hata verecek olan yineleme: Function RunOut(Maximum) RunOut= RunOut(Maximum) End Function
58
59
60
Bu dzenleme Auto List Members zelliginin seilmemesiyle bu zellik ortadan kaldirilir. Ancak bu zellige yine kavusmak iin CTRL +J tuslarina basilir. Auto Quick zelligi ise deyimlerin ve fonksiyonlarin szdizimini gsterir. Bir Visual Basic deyiminin (rnegin Msgbox) adi yazildiginda szdizimi ayni satirda hemen grlr. Deyimin ya da fonksiyonlarin argmanlari girildike bir sonraki kalin olarak grlr. Bu dzenleme Auto Ouick Info zelliginin seilmemesiyle bu zellik ortadan kaldirilir. Ancak bu zellige yine ka vusmak iin CTRL +I tuslarina basilir.
61
Men Kisayollari
Print Undo Paste Delete Find Find Next CTRL+P CTRL+Z CTRL+V DEL ya da DELETE CTRL+F F3
62
63
64
Bir Visual Basic deyimi rnegin MsgBox, bir ad olarak programin bir yerinde kullanilamaz.nk bu deyimler Visual Basic'e zel szcklerdir.Bu szcklere kisitli szckler (restricted keywords) denir. rnegin Len, Abs gibi szckler bir fonksiyon adi oldugu iin bir degiskenin adlandirilmasinda kullanilamazlar. Aslinda kisitli szcklerin programin adlandirilmasinda kullanilmasi iyi bir davranis degildir. ogunlukla bir hataya neden olur.
65
Ancak yine de istenirse kisitli szckler zel bir belirtimle kod iinde ad olarak kullanilabilir. Bir form ya da ko ntrole kisitli bir szcgn ad olarak verilebilmesi iin kseli parantez ya da hiyerarsik grnmde gsterilmesi gerekir. [Msgbox] . Visible = True ' hata vermez. Ya da; Musteri . Formu . Msgbox . Visible = True ' hata vermez.
Bunun disinda kseli parantezler diger tip ktphanelerden degiskenlerin kullanilmasinda kisitli szcklerle karistirilmamasini saglarlar. NOT: Visual Basic'te kodlama kk harfle yapilir. Eger degiskenlerin bir kismi b yk harfle yazilirsa o zaman eslesen degiskenlerde byk harfe evrilir.
Deyimler
Deyimler (statements) programlama dilinin komutlaridir.Bir islemin yapilmasini saglarlar. Deyimler nesnelerden bagimsiz olarak yalniz baslarina yazilarak kullanilirlar. rnegin Dim, Sub, Msgbox, Select Case, With, If .. Then birer Visual Basic deyimidir. Programda veri tanimlamalarinin yani sira belli islemlerin yapilmasi iin deyimler kullanilir. Deyimleri belli islemleri yerine getirmesi bakimindan su sekilde siniflandirabiliriz: Tanimlama deyimleri. Atama deyimleri. Aritmetik islem deyimleri. Program denetimi deyimleri. Kullanici ile iletisim deyimleri.
Tanimlama deyimleri verilerin tanimlanmasini saglar. Bunlarin basinda Dim deyimi gelir. Atama deyimleri ise degiskenlere deger verilmesini saglar. Bir degisken tanimlandiktan sonra ona deger vermek gerektiginde atama deyimi kullanilir. Atama deyimi bildigimiz esittir isaretidir. Toplam = 2 Bakiye = 1 Ogrenci_sayisi = 100 Buyuk_Sayi = 9
66
Aritmetik Islemler
Programlarda yaygin bir biimde sayisal islemler yapariz. Bu islemler iin aritmetik isleler (arithmetic operators) kullanilir.Bir ortalama, bir ara toplam bir bakiyenin hesaplanmasi aritmetik islemler gerektirir. Toplama (Additon) ikarma (Subtraction) arpma (Multiplication) Blme (Division) Tamsayi blme (Integer division) Mod (Modulus) s alma (Exponentiation) + * / \ mod ^
Toplama ve ikarma islemi iki basit matematik islemidir. Visual Basic programinda ok sayida sayiyi, ifadeyi birbiri ile toplayabilir ve ikarabilirsiniz. Toplam = Sayi1 + Sayi2 Fark = 5 Eldekalan Sonuc = Sayi1 - Sayi2 Toplama isleminde sayilarin toplanma sirasi nemli degildir. Ancak ikarma isleminde bu sira su sekildedir. nce ikinci sayi birinci sayidan ikarilir. Ardindan kalandan nc sayi ikartilir. Bylece islemler soldan saga dogru gider. Sonuc = 20 - 12 5
67
3 s islemi kuvvet olarak da bilinir. rnegin 2 ikinin nc kuvvetini yani 2x2x2 ya da 8 degerini verir. s islemleri genellikle bilimsel ve mhendislik islemlerinde kullanilir. s alma isleci ^ dir.
Sonu = Sayi1 ^ 3 Degisik s kullanimlari: 3^2=9 9 ^ 0.5 = 3 2 ^ -2 = 0.25 Karesi Karekk Negatif s ile fraction elde edilir.
68
Bir ifade iinde bilesenler soldan saga dogru islenirler.Btn alt gruplar hesaplandiktan sonra ka lan soldan saga dogru degerlendirilir. rnegin iki test sonucunun ortalamasini almak iin asagidaki deyimi yazmak mmkndr: Ortalama = Not1 + Not2 / 2 Ancak yukaridaki kullanilmalidir: islemin sonucu yanlistir. Bunun yerine su ifade
Metotlar
Deyimlerin yani sira Visual Basic'te programa hayat yermek iin metotlar (methods) kullanilir. Metotlar nesnelere belli islemleri yaptirmayi saglarlar. rnegin araba bir nesnedir. Onun hareketleri metotlarini olusturur. Ileri/geri hareket etmek arabanin metodudur. Bir arabanin davranislari ise sunlardir: Araba . Ileri Araba . Geri Araba . Dur Dikkat edersek arabanin eylemleri sadece bir komut gibi alisir. Ileri deyimi arabanin ileri hareketini gsterir. Bu deyime metot (method) denir.
69
zellikler
zellikler (properties), nesnelerin byklg, rengi, adi, yazi tipi vb niteliklerini ieren bilgilerdir. rnegin bir arabanin zellikleri, onun rengi vb sahip oldugu degerlerdir. Araba Araba Araba Araba . . . . Renk = Red Fiyati = 10000000 Yeni = True Durumu = Temiz
Araba nesnesinin renk zelliginin degeri Red'mis. isterseniz baska renkleri de verebilirsiniz. Arabanin bir gnlk gezisi: Sub Araba_Basla() Araba.Ileri Araba.Korna = "Daat" Araba.Durumu = "Kirli" Araba.vites = "2" Araba.Dur End Sub Yukaridaki rnekte araba hareket eder, birtakim zellikler kazanir ve sonra durur. Iste arabaya ne yaptirilacaksa bir metot ya da bir zelikle yaptirilir. Set Picture1.Picture = LoadPicture ( C : \WINDOWS\CLOUDS.BMP ) Yukaridaki deyim ile bir resim kutusuna (Picture Box), CLOUDS.BMP dosyasi yklenir (gsterilir). Asagidaki deyimle ise bu resim dosyasi bosaltilir.
70
With Deyimi
Visual Basic'te zellikle zelliklerin (properties) dzenlenmesinde kullanilan bir deyim vardir. With deyimi bir nesnenin ya da bir kullanici tanimli degiskenin bir dizi deyim iin bir kez belirtilmesini saglar.With deyimi sayesinde prosedrler daha hizli alisirlar ve kod yazma zamani azaltilir ve etkinlestirilir. zellikle bir nesneye ok sayida zellikler vereceksek With deyimi idealdir. Asagidaki rnek ile normal bir zellik atama deyimleri yerine daha kisa bir sekilde With deyimi kullanilmaktadir: Uzun sekli: Private Sub Command1_Click() Combo1.AddItem "orbalar" Combo1.AddItem "Tatlilar" Combo1.AddItem "Yemekler" Combo1.AddItem "Ikiler" Combo1.FontBold = True Combo1.Fontname = "Aria" End Sub Wlth deyimi ile olani: Private Sub Command1_Click() With Combo1 .AddItem "orbalar" .AddItem "Tatlilar" .AddItem "Yemekler" .AddItem "ikiler" .FontBold = True .Fontname = "Aria" End With End Sub Diger bir rnek ile bir metin kutusunun zellikleri verilmektedir: Sub Bicimle() With Text1 .Text = 30 .Font.Bold = True .Interior.CoIor = RGB(255, 255, 0) End With
71
Olaylar
Visual Basic programlarinin alismasinda olaylar (events) ok nemlidir. Olaylar genellikle bir isle min baslatilmasi (tetiklenmesi) iin kullanilirlar. Y aygin olarak kullanilan olay bir kontrole (rnegin bir komut dgmesine) tiklamaktir (click). Burada olay "click" tir. Olay yordamlari bir olayin (event) olusmasina tepki olarak alisirlar. Visual Basic nesneleri (formlar, metin kutulari, dgmeler, vb) belli olaylari tanirlar. Bylece olay olustugunda; o olay iin hazirlanmis olay yordami alisir. Bir komut dgmesinin olaylari: Click GotFocus KeyDown MouseDown Tiklama Odaklanma,zerine gelme. Bir tusa basmak. Farenin bir tusuna basmak.
Olay yordamlari, bir nesnenin alt tire ile olaylara bagli olarak gelistirilir.Bu adlar Visual Basic kod editr tarafindan otomatik olarak ya da manuel olarak olusturulur. Nesne_Olay Command1_CIick Visual Basic olaylarini ikiye ayirmak mmkndr: Kullanici temelli olaylar, Nesne temelli olaylar.Komut dgmesine tiklamak (click) kullanici temelli bir olaydir. Ancak bir form_load olayi formun yklenmesiyle otomatik olarak olusur. Bu olay nesne temellidir. Asagidaki rnekte Text1 kontrolne
72
Sub Tex1.GotFocus () Text1.BackColor = RGB(255,0,0) End Sub Sub Tex1.LostFocus () Text1.BackColor = RGB(0,0,0) End Sub
Degiskenlerin yani sira program iinde bir takim sabit degerlerinde temsili de gerekir. rnegin, Pi sayisi 3. 14, KDV orani 1.18 gibi.
Degiskenler
Degiskenler program iinde yer alan geici veri alanlarini (diger bir deyisle bellekteki yerlerin adlarini) temsil ederler. rnegin, programin alismasi sirasinda iki degerin arpimina gereksinim duydunuz. Daha sonra bu ara toplami diger bir deger ile karsilastiracaksiniz ve veritabanina yazacaksiniz diyelim.Iste bu sre iinde birok degiskene gereksinim duyulur. Degiskenlerin kullaniminda; degiskenler tanimlanirlar, degerler alirlar (deger atamasi). Ardindan procedure'in ya da formun kapanmasiyla bellekten silinirler. Bu nedenle degiskenler iin geici (temporary) sifati kullanilir.
Degiskenlerin Tanimlanmasi
Bir degisken kullanilmadan nce tanimlanir. Bu tanimlama genellikle Dim deyimi ile yordamin basinda yapilir:
73
3.Yerel bir degiskenin Static szcg ile tanimlanmasi onun degerinin (ieriginin) procedure'in sonlanmasina ragmen srmesine neden olur. Genel olarak bir Visual Basic programi iinde kullanilacak olan degiskenlerin tanimlanmasi gerekir. Ancak eger degisken (daha nce) tanimlanmadan kullanilirsa Visual Basic ona varsayim olarak Variant veri tipini yaratir. Variant bir degisken herhangi bir tip veriyi ierebilir. Pratikte ok yararli gibi grnen varsayim tanimlamalarin grnmeyen yan etkileri olabilir.Bir Vis ual Basic programinda Variant tanimlanmis varsayim tipli degiskenleri kullanmanin kt taraflari vardir.Bunlar: Daha fazla bellek kullanimina neden olur. Variant veri tipi bazi veri islem fonksiyonlari iin geersiz olabilir. Deger atamalarda karisikliklar olabilir.
74
Sekil 4.11 Bir degiskenin adi program i indeki bir nesne ile ayni oldugunda bu mesaj ekrana gelir.
Aik Tanimlama
Aik tanimlama (explicit declaration) program iinde (procedure'lar) kullanilan btn degiskenlerin ad ve tip olarak tanimlanmasidir. Tanimlama genellikle procedure basinda ya da modl basinda yapilir.
75
Kapali Tanimlamalar
Bir degiskenin kullanilmadan nce procedure ya da modl basinda tanimlanmasi genel olarak yapilmasi gereken seydir.Ancak Visual Basic kapali tanimlama olarak adlandirabilecegimiz bir yntemle; tanimlanmadan kullanilan degiskenlere varsayim olarak Variant tipinde bir degiskenmis gibi kullanilmasini saglar. rnegin procedure'in bir yerinde su ifadeyi kullanmak daha nce bu degiskenlerin tanimlanmasini gerektirmez: AraToplam = BirinciToplam + IkinciToplam Kk programlama islemleri iin degisken tanimlama zorunlulugunu ortadan kaldiran kapali tanimlama (implicit declaration) byk programlama islerinde degisken adlarinin yanlis yazilmasindan tr problemlerin yasanmasina neden olur. Bu nedenle aik tanimlama ve aik tanimlamaya zorlama islemlerinin kesinlikle yapilmasi gerekir. NOT: zellikle ok sayida degiskeni kullandiginiz bir programda kapali tanimlama lara gitmeyin.Iki degiskenin birisi "KkDeger" diger "KucukDeger" olarak yazilmamissa ve sizde bu degiskeni farkli sekillerde yazarak kullaniyorsaniz, programda hibir hata verilmeyecektir. nk siz bir degisken
76
Bir degiskenin kullanilmadan nce tanimlanmasi gerektigini birok kez belirttik, ancak kapali bir tanimlama ile de degiskenlere belli tipler verilebilir. Bu islem iin degisken tipleri belli karakterler kullanilir: Saklanan degiskenlerin tipini belirten zel karakterler Degisken tipi Integer long Single Double Currencv String Byte Boolean Date Object Variant Karakter % & ! # @ $ Yok Yok Yok Yok Yok
Sayi1% = 0 OrtalamaDeger% = 1 HesaplananOrt! = 10.1 Mesaj$ = "L tfen disketi A srcsne takin"
77
Kapsama Alani
Nasil telefonlariniz bir vericinin etki alaninin disina iktiginizda hata sinyalleri veriyor, iste bir Visual Basic degiskeni de tanimlandiktan sonra kullanilirken belli br kapsama alani ile sinirlidir. Sinir asildiginda degiskenin etkisi kalmaz. Bir procedure iinde tanimlanan degiskene local (yerel) degisken denir. Bu degisken bu procedure aktif oldugu zaman aktif olur. Buradan degiskenin procedure'in baslamasi ve bitmesi arasinda yasadigini syleyebiliriz. Bylece ortaya "kapsama alani" konusu ikar. Kapsama alani procedure degiskenin tanimlandigi yere bagli olarak, procedure, form ve uygulama olmak zere ayri genislikte gereklesir. Bildiginiz gibi bir Visual Basic kodu mutlaka procedure olarak yaziliyordu. Ancak procedure'lar da bir modln iindeydi; modller de form, class ya da standart olabiliyordu.Iste bir degiskeni bir modln tanimlamalar kisminda tanimlamak o degiske nin o modl iinde yer alan btn procedure'larda kullanilmasini (geerli olmasini) saglarken, bir procedure iinde tanimlanan degisken (yerel degisken olarak adlandirilir) sadece o procedure iinden kullanilabilir. Yani o procedure iinde geerlidir. Baska bir procedure iinde diger bir procedure iinde tanimlanan degiskene bir atama ya da onun degerine ulasmak mmkn olmaz.
Yerel Degiskenler
Yerel degiskenler procedure-dzeyi degiskenlerdir. Bir procedure iinde tanimlanirlar, kullanilirlar. Procedure'in baslamasiyla bu degiskenler tanimlanir. Yerel degiskenler zellikle hesaplanan bir takim geici degerlerin
78
Modl dzeyinde Private ile Dim arasinda bir fark yoktur. Ancak Private deyimi zellikle modl dzeyini vurgular.
80
Ayni degisken adinin birden ok modlde kullanilmasi iin iki standart modl kullanalim. Bunun yani sira bir form yaratip zerinde tane komut dgmesi koyalim. Birinci modlde bir degisken tanimlayalim. Public Deger As Integer Ardindan bir Test procedure'i ile Deg1 degiskenine bir deger verelim: Sub Test() Deger = 1 End Sub Ikinci degisken de yine Deger adinda olacak ancak ikinci modlde duracak: Publi Deger As Integer Sub Test() Deger = 2 End Sub ' Module2'deki dege r
nc Deger degiskenini de Form modl iinde tanimlayalim ve bir Test procedure'i ile deger atayalim: Public Deger As Integer Sub Tedt () Deger = 3 End Sub Ardindan komut dgmesine farkli modllerde bulunan degiskenlerin degerlerini gsteren deyimleri yazalim: Private Sub Command1_Click () Module1.Test Modl1 iindeki Test procedure'ini alistirir. MsgBox Module1.Deger
81
Private Sub Command2_Click() Module2.Test MsgBox Module2.Deger End Sub Private Sub Command3_Click() Test ' Form1 iindeki Test procedure. MsgBox Deger End Sub NOT: nc durumda Test ve Deger degerlerinin modl ile birlikte gsterilmedigine dikkat edin. Eger birok degisken ayni adi paylasiyorsa Visual Basic onun en yerel olanini kullanir. Buna digerlerini "glgeleme" denir.
Sub Test() Dim Aratoplam As Integer Aratoplam = 2 ' Aratoplam degiskenine 2 degeri verilir. MsgBox Form1.Aratoplam ' Form1.Aratoplam degeri 1. End Sub
82
Yasam Sresi
Kapsama alanina benzer ama farkli bir kavram da yasam sresidir (lifetime). Yasam sresi bir degiskenin degerini srdrdg (geerli oldugu) sreyi belirtir. Public ye modl dzeyindeki degiskenlerin degeri uygulama boyunca korunur. Yerel degiskenlerin degeri ise procedurein alismasi ile baslar ve procedurein sona ermesiyle sona erer. Ancak yerel degiskenler Static deyimi ile tanimlanarak uygulama boyunca korunurlar. Static UzunYasayanDegisken As Integer
83
Sabitler ayni zamanda degerleri bilgisayarin ana belleginde saklamanin diger bir yoludur. Bir sabit tanimlandiktan sonra degeri degistirilemez. Eger program yolu ile degistirilirse o zaman Visual Basic hata verir.
84
Option Deyimleri
Options deyimleri form ve modllerin basinda kullanilir.Options deyimleri degiskenlerin ve dizile rin tanimlamalarini (kullanimini) etkiler. Bir form, class ya da standart modln Declarations kesiminde, modl iinde kullanilacak degiskenlerin daha nceden tanimlanmasi zorunlulugunu getirmek iin su deyimlere yer verilir: Options Expliat Ya da; Tools mensnden Options komutu seilir. Ardindan Editr sekmesinden Require Variable Declaratian seenegi isaretlenir. Bu dzenlemenin ardindan Option Explicit deyimi proje iindeki btn modllere yerlestirilir. Option Explicit deyimini dzenledikten sonra bir degiskeni tanimlamadan kullanmaya kalkarsaniz Variable not defined hata mesaji alirsiniz.
85
86
Veri Tipleri
Bir degisken tanimlanirken degiskenin adi ve tipi (type) belirtilir. Genellikle varsayim tip olan Variant bir veri kullanilmayacagi zaman nce degisken tanimlanir ve tipi belirtilir. Degiskenin tipi onun ierecegi bilgi trn ifade eder. Veri Adi Adi Soyadi creti Evlilik Durumu Tipi Alfabetik Sayisal Evet/Hayir
Bir degiskenin tipi o degiskenin degeri ierecegi veriyi ve bellekte nasil tutulacagini gsterir. Bir degisken tanimlandiginda ona bir veri tipi verilir. Btn degiskenler bir veri tipi ile ne tr bir veriyi ierdigini belirtirler. Bylece bir degiskenin tipini belirtmek onun daha etkin kullanimini saglar. rnegin bir msteri adi String tipinde tanimlanirken, msterinin numarasi Integer tanimlanabilir. Degisken tipini tanimlamak iin Dim, Private, Public, Static gibi deyimler kullanilir. Ardindan tip belirtilir. Tipler Currency, Double, String gibi deyimlerle tanimlanir. Private I As Integer Dim Toplam As Double
87
88
Sabit uzunluklu bir string tanimlama: String * uzunluk Sabit uzunluklu string tanimlamak iin string taniminda asterisk karakteri ile uzunluk (ka karakter) belirtilir. rnegin 30 karakter uzunlugunda bir veri tanimlamak istersek su sekilde tanimlariz: Dim Adi As String * 30 Eger 30 karakterden daha az deger atanirsa Adi degiskenine bosluk eklenerek 30 karaktere tamamlanir. Eger 30 karakterden daha uzun bir veri atanirsa o zaman Visual Basic fazlaliklari keser. Sabit uzunluklu bir string boslukla tamamlandigi iin Trim ve Rtrim fonksiyonlari ile bosluklardan kurtulunabilir. NOT:Standart modllerde yer alan sabit uzunluklu string degiskenler Public ya da Private olarak tanimlanmalidir. Form ve Class modllerinde ise Private olarak tanimlanmalidirlar. String verilere sayisal degerler atanabilir. Ancak bu degiskenlerle sayisal islem yapilmaz. Ancak sayisal bir degeri olan string degisken sayisal bir degiskene atanabilir ya da dnstrlebilir: Private Sub Command1_Click Dim TamsayiA As Integer Dim StrB As String StrB = "500" TamsayiA = StrB ' String deger tamsayi degiskene atanir. End Sub
89
Birlestirme islemi:
YeniString = String1 & String2 & String3 ... Birlestirme isleminin ardindan uzun string, YeniString'e atanir. AdiveAdresi = "Ali " & "Uzun"
Asagidaki rnekte iki string bilgi birlestirilmistir: Adi$ ="Ayse" Soyadi$="Yilmaz" Adresi$="1234 Sakak No 1" Toplam$ = Adi$ & " " & Soyadi$ &
"
"
& Adresi4$
90
rnek: Nesne tanimlama Dim xl Set xl As Object = GetObject ("c: \my documents\butce.xls")
NOT: Bir veri tipindeki deger bir baska tipe evrilecegi zaman karsi tarafin tipine uygun olmalidir. rnegin Long bir deger Integer bir degiskene atanacaksa Long deger Integer deger sinirlarinda olmalidir. Ucret = Ccur(Text1.Text)
91
VarType Fonksiyonu
Bir degiskenin tipini belirten bir tamsayi deger dndrr. Yapisi: VarType(degisken) Degisken bilgisi variant bir degerdir.
Dnen deger: Sabit vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbDecimal vbBvte vbUserDefinedType vbArray Deger 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 36 8192 Aiklama Empty (bos), deger verilmemis Null (geerli veri yok) Integer (tamsayi) Long integer Single-precision floating-point sayi Double-precision floating-point sayi Currency (para birimi) Date (tarih) String Object Hata degeri Boolean (ikili) deger Variant Veri erisim nesnesi Decimal deger Byte deger user-defined tip ieren veri tipi Array (dizi)
Asagidaki rnekte degiskenlerin tipi belirlenmektedir: Dim TamsayiDegisken, StringDegisken, TarihDe gisken, Kontrol
92
93
X & Y X & Y
94
95
Empty Degeri
Bazen bir degiskene bir deger atanip atanmadigini bilmek isteyebilirsiniz. Bir variant degiskene bir deger atanmadan nce Empty (bos) degerine sahiptir. Empty degerinin anlami sifir degildir. Empty degeri Null ya da bos string " " anlamindadir.Bir degiskenin Empty degeri IsEmpty fonksiyonu ile belirlenir. If IsEmpty (Toplam) Then Toplam = 0
Bir variant Empty degerine sahip oldugu zaman; degisken ifadeler iinde kullanilabilir. Ve degeri ifadeye gre 0 ya da sifir uzunluklu string olarak algilanir. D egiskene bir deger (sifir, null ya da sifir uzunluklu string} atandigi zaman Empty degerini yitirir.
Null Degeri
Bir variant verinin ierebilecegi bir diger zel veri de Null'dir. Null degeri zellikle veritabani uygulamalarinda bilinmeyen ya da olmayan veriyi ifade eder. Null verisinin zellikleri sunlardir: Ifadelerin bir kismi Null ise tamami Null olarak degerlendirilir. Bir Null degeri geirmek, bir Null degeri iermek genellikle fonksiyonun Null degerini dndrmesini saglar.
Null degerler "Null" deyim ile atanirlar: Toplam1 = Null Bir variant degiskenin Null degere sahip olup olmadigini test etmek iin IsNull fonksiyonu kullanilir. Ayrica degiskenlere Null degeri vermek iin aik olarak Null degerini atamak gerekir. If IsNull (Toplam1) And IsNull(Toplam2) Then K = Null Else K=0 End If
96
Diziler (Arrays)
Her zaman degiskenlerin tmn tek bir adla ve tek bir ierikle kullanmak kisitlayici olabilir. Bu nedenle diziler (arrays) gelistirilmistir. Bir dizi ayni tipte ve ayni adi paylasan bir grup degisken demektir. Diziler birok degiskene ayni adla ulasmayi saglayan bir grup veri yapisidir. Bir indeks numarasi ile dizi iindeki elemanlara ulasilir. Dizi iindeki elemanlar ayni tipteki verilerdir; rnegin haftanin gnleri ya da iller gibi. Ocak Subat Mart Nisan Aralik Aylar Dizisi grencilerin notlarini toplamak ve ortalamasini almak istiyorsunuz?Yzlerce grencinin notlarini tek tek toplamak ve zerinde islem yapmak yerine onlari bir grup olarak tanimlamak dizinlerin kullanimini ortaya koyar. Dizilerin en nemli yani zellikle dngler ile birlikte kullanilmasidir. Bylece ok sayida islem kisa zamanda ve bir blok kod iinde yapilabilir.
97
Eleman sayisi dizinin eleman sayisini gsterir. Dizilerin eleman sayilan sifirdan baslar. Bes elemanli bir dizi: sifirdan basladigi iin eleman sayisi 4 olarak belirtilir. yedi elemanli gnler dizisi Dizi_Gnler (6) As String Dizinin indeksi 0'dan 6' ya kadar degisir Dizi_Gnler( 0) = "Pazartesi" 'dizinin birinci elemani Dizi_Gnler(1) = "Sali" 'dizinin ikinci elemani Dizi_Gnler(2) = "a rsamba" 'dizinin nc elemani Dizi_Gnler(3) = "Persembe" 'dizinin drdnc elemani Dizi_Gnler(4) = "Cuma" 'dizinin besinci elemani Dizi_Gnler(5) = "Cumartesi" 'dizinin altinci elemani Dizi_Gnler(6) = "Pazar" 'dizinin yedinci elemani Bunun disinda diziler birden ok boyutu ile matematikten bildigimiz matrislere de karsilik gelen veri yapilaridir. Dim YillarSatislar(10, 5) As String
Dizilerin kullaniminda bir diger konu dizilerin boyutlarinin (eleman sayilarinin) degistirilmesi ile ilgilidir. Dinamik dizilerin byklkleri degistirilebilirken, sabit byklkteki dizilerin byklkleri sonradan degistirilemezler.
Dim aylar(11) As
Diziler tanimlandiktan sonra belli islemler yapilir. Bunlar: Veri doldurma Verilere erisme
98
Visual Basic'te iki tr dizi vardir: Sabit-eleman sayili dizi Dinamik dizi
Sabit Eleman Sayili Dizi Sabit eleman sayili (sabit byklkteki) dizilerin eleman sayilari sabittir. Daha sonra eleman sayilari degistirilemez. Dim Gnler (6) As String Dim Aylar (11) As String Dim Notlar (3) As Integer Dinamik Diziler Bazen bir diziyi yaratirken eleman sayisini tam olarak kestiremeyiz. 20 ya da 30 olabilir. Iste bir dizinin eleman sayisini sonradan degistirebilme zelligine dinamik diziler denir. Dinamik bir dizinin boyutlari istenildigi zaman degistirilebilir. Dinamik dizilerin eleman sayilarinin degistirilebilmesi ayni zamanda bellegin de etkin olarak kullanilmasini saglar. Bylece dizi nce daha kk olarak tanimlanir. Ardindan bytlr.
99
Ardindan procedure iinde dizinin yeniden boyutlandirilmasi saglanir: Sub YenidenHesapla() ReDim Matris1 (9, 9) End Sub ReDim deyiminin her kullanilisinda dizideki btn degerler nce yok olur.Ardindan Visual Basic btn elemanlari sifirlar. Bu islemde variant degerlere Empty, sayisal degerler sifir, string degerler sifir uzunluklu verilerle doldurulur. Bu nedenle dizinin veri kaybi olmadan eleman sayisini artirmak
100
101
102
Bir dizinin indeksinin alt siniri varsayim olarak 0 dir. Eger bu deger degistirilecekse o zaman 1 degeri kullanilir. Option Base deyimi iinde sadece bulundugu modlde dizilerin alt sinirlarini etkiler. Asagidaki rnekte dizilerin indeks degeri degistirilmektedir: Option base 1 ' Dizi indeksleri 1 degerini alir.. Dim Alt Dim Dizi (1 To 10, 5 To 15, 20 To 30) ' dizi degiskenleri tanimlanir. Dim Dizi2(10) Alt= Lbound (Dizi, 1) ' 1 dndrr. Alt= Lbound (Dizi, 3) ' 20 dndrr. Alt= Lbound (Dizi2) ' Option Base deyiminde gre 0 ya da 1 degeri dndrr. LBound fonksiyonu UBound fonksiyonu ile birlikte de kullandir. UBound ise dizinin byklgn ve boyutlarinin ve st limitini belirler.UBound fonksiyonunu LBound fonksiyonu ile birlikte kullanilir. Lbound fonksiyonu dizinin bir boyutunun alt limitini gsterir. Dim A ( 1 To 100, 0 Ta 3, -3 To 4)
Yukaridaki deyime gre Ubound fonksiyonu asagidaki degerleri dndrr: UBound(A, 1) UBound(A, 2) UBound(A, 3) Asagidaki rnekte hesaplanmaktadir: 100 3 4 dizinin belirtilen boyutunun en byk degeri
Dim st Dim Dizi (1 To 10, 5 To 15, 20 To ' dizi degiskenleri tanimlanmaktadir. Dim Dizi2(10) st= UBound(Dizi, 1) ' 10 dndrr. st= UBound(Dizi, 3) ' 30 dndrr.
30)
103
rnegin bir grenci kaydi ya da bir msteri kaydi bilgisi kullanici tanimli degisken olarak tanimla nabilir: ' Tanimlamalar Private Type grenci AdiSoyadi As String Blm As String Vize1 As Integer Vize1 As Integer Final As Integer Durumu As String End Type Kullanici tanimli degiskenlere deger atamak iin zelliklerin kullanimina benzer biimde bir yntem kullanilir: grenci.Adisoyadi = "ahmet uzun" Bunun disinda eger yapilari birbirlerinde de atanabilirler. grenci = Yedekgrenci ayniysa kullanici tanimli degiskenler
104
105
Numaralandirma
Grup verileri islerken basvurulacak bir diger kullanim ise numaralandirma (enumerations) dir. Numaralandirma sabitlerin belli adlarla temsil edilmesini saglar. rnegin aylarin sayilar yerine adlariyla kullanilmasi gibi. Numaralandirma Enum deyimi ile modln Declarations kesiminde yapilir. Numaralandirma tipi Private ya da Public olabilir. Private Enum Numaralandirma Yada; Public Enum Numaralandirma
106
Dim IsAylar As Aylar IsAylar = Mart If Is Aylar < Nisan Then ' burada nisan ayinin degeri 3 tr. Yukaridaki rnekte grdgnz gibi numaralandirma sabitlere bir sira degen vermis ve onlarin bu degere gre karsilastirilmasini saglamistir.
Program Denetimi
Program iinde tanimlama deyimleri, atama deyimleri yer alir. Ancak programin isleyisinde "eger byleyse syle yap" gibi sapmalar ya da kararlar vermek gerekebilir.Iste bu durumda programin isleyisini, akisini denetleyen "denetleme deyimleri" kullanilir. Denetleme deyimleri standart yapilar sayesinde istenilen bir seimi, sapmayi ya da kararin alinmasini saglar.
107
Karar yapilari:
If...Then..Else Select Case
Karar yapilarinin yani sira yaygin olarak kullanilan bir diger yapi da dng (loop) tur. Dngler zellikle programin etkinligi bakimindan nemli bir programlama teknigidir.
Dng Yapilari:
Do...Loop For...Next
Dngler
Program denetiminde yaygin olarak kullanilan mekanizmalardan birisi de dnglerdir. Dngler islemlerin yinelenmesi anlamina gelir. rnegin dosyanin sonuna kadar kayitlarin birer birer okunmasi ve her okunan kayit zerinde belli islemlerin yapilmasi gibi. nk burada yapilacak is lem aynidir ama dosyada yer alan btn kayitlar iin uygulanir. Visual Basic'te iki ana tip dng vardir: Kosullu dngler Sayali dngler
Kosullu dngler belli bir kosul yerine gelinceye kadar ya da belli bir kosul oldugu sre boyunca yineleme islemini srdrrler. Sayati dngler ise islemleri belirtildigi kadar yinelerler.
Dng yapilari:
Do...Loop: Bir kosula gre dng. For...Next: Belli bir sayida dng (sayali). Bir sayali dng For...Next dngs olarak bilinir. For deyimi ile dngnn sayaci tanimlanir. Next deyimi ile yinelecek blok sona erer.
108
Do...Loop Deyimi
Bir blok deyimi verilen kosul dogru (True) oldugu srece isletir. Yapisi: Do [( While | Until) [ ifade blogu] [Exit Do] [ ifade blogu] Loop kosul1]
Bir blok, deyimi verilen kosul saglanincaya kadar isletir. Yapisi-2: Do [ifade blogu] [Exit Do] [ ifade blogu] Loop [(While | Until) kosul1] Do...Loop deyiminde kullnilan elemanlarin islevleri sunlardir: Eleman Do While Islevi
Do..Loop kontrol yapisinin ilk deyimi. Iken: Belirtilen kosul dogru oldugu srece dngnn isleyecegini belirtir. Until 'e kadar: Kosul dogru oluncaya kadar dng isletilir. kosul Sayisal ya da karakter bir ifade; dogru (0 hari) ya da yanlis (0 ya da Null) degeri degerlendirir. ifade blogu Do ile Loop arasinda; kosul saglanincaya kadar isletilecek olan program satirlari. Exlt Do Dngden ikisi saglar.Bir If-Then deyimi ya da diger kosullarda dngden ayrilmayi saglar.Istenildigi kadar kullanilabilir. Loop Do..Loop dngsn bitirir. Do dnglerinin temelinde kosul (condition) yatar. Bir kosul True ya da False olabilen bir ifadedir. Bu bir fonksiyon (rnegin EOF), zellik ya da bir iki degerin bir iliski operatr ile karsilastirilmasi yapilabilir.
109
rnek: Bir dng kurma Do While cret < 10000 ' cret Toplam = Toplam + cret Loop 10000 den kk oldugunda
Iki temel Do dngs vardir: Do While Dngs, Do Until Dngs. Do...While dngsnde While deyiminde belirtilen kosul dogru oldugu sre boyunca dng yinelenir. Kosulun saglanmadigi anda program dngy atlayarak Loop deyiminden sonraki deyimlere geer.
rnek: Bir Veritabanini Isle me Do While Not Tablo.EOF Tablo.Edit If Bakiye > 100000 Then Durumu = "deme mektubu gnder" Else Durumu = "ekstre gnder" End If Tablo.Update Tablo .MoveNext Loop While deyiminde kosul dogru oldugu srece dng srdrlr. Until deyiminde ise kosul dogru olmadigi (yanlis oldugu sre) sre boyunca dng yinelenir. Do...Until dnglerde ise Until deyiminde belirtilen kosul dogru
110
111
Sekil4.16 While ve Until deyimlerinin dngnn basinda ve sonunda kullanilmasi Kosullarin DO dngsnn basinda yer almasi denetimin dngnn basinda yapilmasi anlamina gelir. Dng basinda kullanilan Until deyimi kosul False oldugu sre boyunca dngnn islemesini ve kosul testinin dngnn basinda her seferinde yapilmasini saglar. While deyimi ise yine dng basinda kosulun True olmasi durumunda geise izin verir. NOT: Do... Until yerine While..Wend deyimleri ile de ddng yaratilabilir.Ancak daha esnek olduklari iin While Wend dngleri yerine Do... Until dngleri nerilir. rnek: Giris Kontrol .Asagidaki rnekte tipik olarak bir giris kontrol yapilmaktadir. Kullanici belirtilen sayilari girmedigi takdirde program kontrol bu alani gememektedir: Dim Yanit As String Do ' dng bas i Yanit = InputBox ("1,2,3 sayilarindan birisini girin . " ) Loop Until Yanit >= 1 And Yanit =< 3 'dng sonu rnek: Dosya sonuna kadar okuma Dim SAYAC, OGR1SAYAC, OGR2SAYAC As tnteger Dim Vt As Database Dim Tablo as Recordset
112
113
Asagidaki rnekte bir If ...Then ...Else deyimi iinde kosul test edilerek dngden ikilmakta bylece sonsuz dng engellenmektedir:
Sub ikisrnegi() Saya = 0 Sayi = 9 Do Until Sayi = 10 Sayi = Sayi - 1 Saya = Saya + 1 If Sayi < 10 Then Exit Do Loop MsgBox "Dng " & Saya & " kere dnd." End Sub
114
For...Next Deyimi
Bir grup deyimi belli sayida alistirarak (tekrar ederek) bir dng olusturur. rnegin birden ona ka dar (on kere) su islemi yap seklinde. zellikle bir dng denetim degiskenin kullanildigi (saya) bu dng yapisi i ie dnglerin de yapilmasini saglar. For...Next dngleri zellikle dizilerin islenmesinde de yaygin olarak kullanilir. Yapisi: For saya = baslangi To bitis [ Step artirim ] [ifade blogu] [Exit For] [ifade blogu] Next [saya] For...Next deyiminde kullanilan parametreler sunlardir: Parametre For saya baslangi To bitis Step Exit For Next Aiklama For..Next dngsne baslar. Dngnn ka kere tekrar edecegini belirten sayisal deger. Sayacin ilk degen. Baslangi ve bitis degerlerini artirmak iin kullanilan szck. Sayacin son degeri. Artirim sayisi. Belirtilmezse 1 sayilir. For..Next dngsn sona erdirir. Artirim degerini sayaca ekler. For..Next dngsn sona erdirir. Artirim degerini sayaca ekler.
Artirim degeri dngnn isleyisini asagidaki biimde kontrol eder: Artirim degeri Pozitif ya da 0 Negatif Dngnn isletilmesi kosulu saya <= bitis saya >= bitis
Dng birkez isledikten sonra artirim degeri saya degerine eklenir. Eger herhangi bir artirim degeri kullanilmadiysa o zarnan saya bir artirilir.
115
I-ie Dng:
For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ... Next K Next J Next I rnek: Birden ona kadar sayilarin toplamini alir: Sub Button31_Click() Dim Toplam As Double Toplam = 0 For I = 1 To 10 Toplam = Toplam + I Next I MsgBox " 1'den 10'a kadar sayilarin toplami: " & Toplam
116
"
Asagidaki dng 10 kez alisacak ve bilgisayardan 10 kez ses ikartacaktir: Sub Beeps() For x = 1 To 10 Beep Next x End Sub Asagidaki kod ise kullanilabilir ekran yazi tiplerini listeler: Private Sub Form_Click() Dim I As Integer For i = 0 To Screen. FontCount Print Screen. Fonts(i) Next End Sub
117
As
Double
rnek: Bir ListBox iindeki ift elemanlari silme For i = 0 To List1.ListCount For j = i +1 to List1.ListCount If List1.List(i) = List1.List(j) Then List1.RemoveItem i Next j Next i For...Next Dnglerinden ikis Bir For...Next deyiminden ikmak iin Exit For devimi kullanilir. Yapisi: Exit For
118
Karar Yapilari
Program denetimi yapilarindan birisi de karar vermektir. Kararlar zellikle belli kosullara gre yapilacak islemlerin seilmesini saglarlar.rnegin degisik cret dzeylerindeki insanlarin degisik vergi oranlariyla vergilendirilmesi. Visual Basic'te karar yapilari olarak If...Then...Else ve Select...Case deyimleri kullanilir. If...Then...Else deyimi belli bir deyimi ya da bir blok deyimi bir kosula bagli olarak isletmeyi saglar. Kosulun dogru olmasi True, yanlis olmasi False anlamina gelir. Select Case deyiminde ise zellikle bir karar degiskeninin aldigi degerlere gre degisik islemlerin yapilmasi saglanir. Karar yapilarinin temelinde degerler arasindaki iliskiler yatar. Iliskiler degerler arasindaki operatrlerle kurulur.
Iliski operatrleri
Operatr < <= > >= <> = Anlami Kktr Kk esittir Byktr Byk esittir Esit degildir Esittir
119
If...Then...Else Deyimi
Klasik olarak kullanilan karar mekanizmasidir. Eger kosul saglaniyorsa (if) bunu yap; yoksa sunu yap (else) gibi. Asagidaki akis semasinda; cret degiskenine bagli olarak gelir hesabinin iki ayri yolla yapilmasi yer almaktadir:
Hayi r
cret >X
Evet
Vergi= X*0.10
Vergi= X*0.15
Sekil 4.17 If deyimi ile ka rar verme If deyimi belli bir ifadenin degerine gre (kosul) bir deyimin isletilmesini saglar. If deyiminin basitten karmasiga dogru degisik kaliplari vardir: Yapi: (1) If kosul1 Then islem
120
If blogunun isleyisinde; nce kosul test edilir. Eger kosul saglaniyorsa (True) o zaman Thenden sonra belirtilen deyimler isletilir.Eger kosul saglanmiyorsa (False) o zaman Else kisminda bulunan;islemler yerine getirilir Else Ifli olan If yapisinda ;If blogun isleyisinde nce kosul test edilir.Eger kosul saglaniyorsa (True) o zaman Thenden sonra belirtilen deyimler isletilir.Eger kosul saglanmiyorsa ya da saglanirsa o zaman Else If de bulunan kosul ele alinir.Eger bu kosul dogru ise onun Then kismi isletilir.Else If kosullarinda herhangi biri saglanmiyorsa o zaman;izleyen Else deyimi isletilir.
121
122
Birinci Kosulun False Olmasinin Ardindan Ikinci Bir Kosulu Test Etme
If...Then...Else yapisinin ok sayida kullanimindan birisi de birinci kosulun False olmasinin ardindan ikinci bir kosulu test etmektir. Asagidaki rnekte ise gre cret belirlenmektedir: Function Ikramiye(Performans, cret) If Performans = 1 Then Ikramiye = cret * 0.1 ElseIf Performans = 2 Then Ikramiye = cret = 0.09 ElseIf Performans = 3 Then Ikramiye = cret*0.07 Else Ikramiye= 0 End If End Function rnek: Su parasi hesabi Su parasi hesabi ya da KDV kesintisi hesabi ya da benzer fiyatlandirmalar belli bir tarifeye gre bir hesaplamanin yapilarak bir islemin yapilmasini ve sonucun h esaplanmasini gerektirirler. rnekte asagidaki tablo kullanilarak ekrandan girilen mektrekp degerlerine gre ne kadar TL'lik su harcandigini hesaplayan bir program yazilacaktir.
123
Private Sub Command0_Click() Dim Tketim As Double Dim Para As Double 'Deger alma Tketim = InputBox("T ketim Degerini girin") If T ketim > 0 And Tketim < 31# Then Para = Tketim * 20000 ElseIf Tketim > 30# And Tketim < 101# Then Para = (30# * 20000#) + ((Tketim 30#) * 40000#) ElseIf Tketim > 101# Then Para = (30# * 20000#) + (70# * 40000#) + ((Tketim 100#) * 100000#) End If MsgBox Str(Para) End Sub
124
Case
End Select To Is
Select Case yapisi iindeki ilk deyim Select Case'dir. Ardindan bir degeri olan test degiskeni yer alir. Bu deger bir sayi, string ya da fonksiyon olabilir. Ardindan kosullarin belirtildigi Case deyimleri yer alir.Case deyimi test degeri ile karsilastirilacak degeri belirtir. Eger Case ile belirtilen deger test degerine esitse o zaman belirtilen deyim ya da deyim blogu isletilir. End Case deyimi ile Selecl Case yapisi sona erdirilir. rnek: cret hesabi cret = Val(Text1.Text) Select Case cret Case 1000 to 1100
125
zellikle cret bordrosu gibi degisik fiyatlandirma islemlerinde Select Case kullanimi idealdir. IstenenMiktar = Val (Text1 .Text) Select Case IstenenMiktar Case Is < 0 MsgBox "Siparis sifir olamaz", vbExclamation Exit Sub Case 1, 2, 3 Indirim = 0 Case 4 To 9 Indirim = 0.05 Case 10 To 49 Indirim = 0.1 Case Is > 50 Indirim = 0.15 End Select Yukaridaki rnekte siparis miktarinin belli degerlerine gre belli islemler yapilmaktadir. Ancak bu degerlerin disindaki bir deger olustugunda ne olacak? Bu durumda Else Case durumu kullanilir. Else Case durumu Case kosullarinin disindaki kosulu belirtir. IstenenMiktar = Val (Text1 .Text) Select Case IstenenMiktar Case Is < 0 MsgBox "Siparis sifir olamaz", vbExclamation Exit Sub Case 1, 2, 3 Indirim = 0 Case 4 To 9 Indirim = 0.05 Case 10 To 49 Indirim = 0.1 Case Is > 50 Indirim = 0.15 Case Else Indirim = 0.20 End Select Case deyiminde ok sayida deger ve belli bir deger araliklari da kullanilabilir:
126
Function Ikramiye (Performanse, cret) Select Case Performans Case 1 Ikramiye = cret * 0.1 Case 2, 3 Ikramiye = cret * 0.09 Case 4 To 6 Ikramiye = cret * 0.07 Case Is > 8 Ikramiye = 100 Case Else
127
Private Sub Command1_Click() Dim Tketim As Double Dim Para As Double 'Deger alma Tketim = InputBox("T ketim Degerini girin") Select Case Tketim Case 0 To 30# Para = Tketim * 20000 Case 31 To 101# Para = (30# * 20000#) + ((Tketim 30#) * 40000#) Case Else Para = (30# * 20000#) + (70# * 40000#) + ((Tketim 100#) * 100000#) End Select MsgBox Str(Para) End Sub NOT: Select Case yapisinda; i-ie Select Case deyimi de kullanilabilir. Bu durumda herbir Select Case deyiminin kendine ait bir End deyimi olmalidir. Asagidaki rnekte ise ekrandan alinan bir degerin tipi belirlenir: Private Sub command1_Click() Dim Deger, Kontrol Deger = InputBox("bir deger girin") Kontrol = VarType (Deger) Select Case Kontrol Case 0: MsgBox "Bos" Case 1: MsgBox "Null" Case 2: MsgBox "Tamsayi" Case 3: MsgBox "Long Tamsayi"
128
GoTo Deyimi
Bir procedure iinde belirtilen bir satira (kosulsuz olarak) sapmayi saglar.
Yapisi: GoTo ( etiket | satir numarasi) GoTo deyiminin para metreleri: Parametre GoTo A iklama Belirtilen yere sapmayi saglar.
129
satir numarasi
Goto deyimi ve GoSub deyimleri programda gerekmedike kullanilmamasi gereken komutlardir. Bu komutlar program kontroln (okunmasini, hatalarin bulunmasini vb.) zorlastirirlar. NOT: Programc inin Goto ve Gosub deyimlerinin yerine Do..Loop, For..Next, If..Then ve Select..Case gibi yapilari kullanmasi daha Iyi olur. rnek: Goto Deyimi Sub Button31_Click() Dim Sayi 'Degiskenler tanimlanir Sayi = InputBox ("1-100 arasinda ir sayi giriniz.") GoTo Islem 'diger bir kisima sapma ' bu kisimda yer alan deyimler atilanir. Islem: ' bir program kisimi Sayi = Sayi / 10 MsgBox "Girilen sayinin onda biri :" & Sayi End Sub
Exit Deyimi
DoLoop, ForNext loop, dngleri, bir Function procedure ya da bir Sub procedure'dan ikisi saglar. Yapisi: Exit { Do | Function | Sub } Exit deyiminin kullanim biimleri syledir: Deyim Exit Do Aiklama Loop dngsnden ikar. Exit Do deyimi eger bir i dng (nested) iinde kullanilirsa o zaman bir nceki dzeydeki dngye dner.
130
End Deyimi
Bir Visual Basic procedure'ini ya da blogunu sona erdirir. Yapisi: End [ { Function | If | Select l Sub l Type}]
End deyimi asagidaki biimlerde kullanilabilir: Deyim End Function End If End Select End Sub End Type End Aiklama Function'u sona erdirir. End Function deyimi bir fonksiyon olarak fonksiyonunun sonuna eklenir. If-Then blogunu sona erdirir. Select Case blogunu sona erdirir. Sub procedure'ini sona erdinr. Yeni bir Sub procedure'ina baslanacagi zaman otomatik olarak Sub procedure'in sonuna eklenir. Kullanici tanimli veri tanimini sona erdirir. Bir Visual Basic programini sona erdirir.
131
Operatrler ve ncelikleri
Aritmetik Mantiksal s alma (^) Olumsuz (-) arpma ve blme (* , / ) Tamsayi blme (\) Modlo Aritmetik (Mod) Toplama ve ikarma (+, -) String birlestirme(&) Esitlik (=) Esitsizlik (<>) Kktr (<) Byktr (>) Kk ya da esittir (<=) Byk ya da esittir (>=) Like Karsilastirma
Ifade iindeki operrlerin esit ncelikli olmalari durumunda; ifade soldan saga dogru degerlendirilir.
^ Operatr
Bir degerin ya da ifadenin belirtilen sayi kadar kuvvetini alir. Yapisi: Sonu = Sayi ^s
rnek: Operatrn kullanimi Deger = 3 ^3 ' deger'in degeri 9 olur. Deger = 3 ^3 ^3 ' deger'in deleri 27 olur. Deger = (-3) ^3 ' deger'in degeri -9 olur.
+ Operatr
Iki sayisi toplamak iin kullanilir. Yapisi: Sonu = Ifade1 + Ifade2
132
Birlestirme (Concatenate) Toplama Birlestirme Ikisinin de ierigi String ise Birlestirme is lemi, aksi takdirde toplama isle mi. Ifadelerden birisi sayisal, digeri String ise "Type mismatch" hatasi Null
Ifadelerden birisi Null ise rnek: Operatrn kullanimi Sonu = 2 + 2 'Sonuun degeri 4 olur. Sonu = "2" + 2 'Sonuun degeri 4 olur. Sonu = "2" + "2" 'Sonuun degeri 22 olur.
rnek: Hesap makinasi; hesap rnakinasi programinda rakam tuslarina bastika rakami retmek iin + operatrnden yararlanilir: Private Sub Command10_Click() Sonu.Text = Sonu.Text + "7"
133
Is Operatr
Iki nesne degiskeninin karsilastirilmasini saglar. Yapisi: Sonu = nesne1 Is nesne2
Eger iki nesne de ayni nesneyi isaret ediyorsa o zaman sonu True olur. Eger degilse False sonucu dogar. rnek: Operatrn kullanimi Set Nesne1 = Nesne2 Sonu = Nesne1 Is Nesne2 Sonu degeri 0 olur.
Like Operatr
Iki String degeri karsilastirmak iin kullanilir. Yapisi: Sonu = String Like String ifade Like deyimi iki string ifadeyi karsilastirir. Eger iki ifade birbirine uyuyorsa sonu True olarak, uy muyorsa False olarak ikar. Like deyiminin alismasi Modllerin Declaration kisminda yazilan Option Compare devimine baglidir. Varsayilan karsilastirma karakterlerin ikili (binary) degerinin siralamasina gredir. Buna Option Compare Binary denir. Ikili karsilastirma: A<B<Z<a<b<z
Eger Option Compare Text seilirse o zaman kk ve byk harfe duyarli karsilastirma islemi yapilir. Text karsilastirma: (A=a) < (B=b) < (Z=z)
rnek: Karsilastirma islemi Sonu = "ahmet" Like "a*" ' True dndrr. Sonu = "H" Like " [A-Z] " ' True dndrr. Sonu = "XYZ" Like "X?Z" ' True dndrr. Sonu = "WY" Like "X?Z" ' False dndrr.
134
A. STRING FONKSIYONLAR
Tm programlama dillerinde oldugu gibi, Visual Basic'te de esitli islemleri gereklestirmek iin fonksiyonlar kullanilir. Asagida matematikle ilgili olan fonksiyonlar verilmistir.
Asc() Fonksiyonu
String bir degiskenin ilk karakterinin veya verilen herhangi bir karakterin ASCII kodunu verir. Kullanimi; Sonuc = Asc ( Karakter ) Karakter : ASCII kodu bulunacak karakter veya string degisken Sonuc : Argman olarak verilen karakterin ASCII kodunun karsiligi olan integer sayi rnek; Private Sub Form_Load() Dim A_Kodu A_Kodu = Asc("A") ' A_Kodu = 65. A_Kodu = Asc("a") ' A_Kodu = 97. A_Kodu = Asc("Apple") ' A_Kodu = 65. End Sub
135
IsArray() Fonksiyonu
Argman olarak verilen degiskenin dizi olup olmadigini verir. Eger degisken dizi ise dns degeri True, degilse False olur. Kullanimi; Sonuc = IsArray ( Degisken ) Degisken : Dizi kontrol yapilacak degisken rnek; Private Sub Form_Load() Dim MyArray(1 To 5) As Integer Dim a, MyCheck MyCheck = IsArray(MyArray) ' MyCheck = True. MyCheck = IsArray(a) ' MyCheck = False End Sub
Instr() Fonksiyonu
Verilen string degisken veya bilgi iinden bir baska string veya karakteri arar. Eger aradiginiz karakter veya string aranan string iinde yoksa fonksiyon 0 degerini retir, fakat varsa aranan stringveya karakterin bulunan string iinde kainci karakter oldugunun degerini retir. Fonksiyon ayrica byk/kk harf ayrimi yapmaktadir. Fonksiyonun ilk argmani olan baslangi degeri verilmezse bu deger 1 olarak kabul edilir.
136
Len () Fonksiyonu
Argman olarak verilen string veya Veriant bir degiskenin karakter sayisini yani uzunlugunu verir. Argman olarak verilen degisken veriant veya string degisken yapisindan farkli bir yapiya sahip iseVisual Basic'in 6 numarali ( Overflow ) hatasi ortaya ikar ve program hemen sonlandirilir. Kullanimi; Sonuc = Len ( Degisken ) Degisken : Uzunlugu yani ka karakterden olustugu bulunacak degisken Sonuc : Argman olarak verilen degiskenin uzunlugu rnek; Private Sub Form_Load() Dim vrt_Degis, Str_Degis, i, j vrt_Degis = 653819 Str_Degis = "Veli AKAKAYA" i = Len(vrt_Degis) ' i = 6 j = Len(Str_Degis) ' j = 13 End Sub
137
138
139
140
StrComp() Fonksiyonu
Argman olarak verilen String1 ve String2 degiskenlerini olusturan karakterlerin ASCII kodlarini dikkate alarak soldan saga dogru karakter karakter kiyaslar. Fonksiyonun kiyas degeri 1 olarak verilirse fonksiyon karsilastirma sirasinda byk/kk harf ayrimi yapmaz. Bu deger 0 veya hi verilmezse kk/byk harf ayrimi yapilir. Kiyaslama islemi kiyaslanan, kiyaslanan karsilikli karakterlerin birbirlerinden farkli olmasina kadar veya String1 veya String2 degiskenlerinden birine ait NULL karakterine rastlanincaya kadar devam eder. Farkli bir veya NULL karakterine rastlanildiginda islem sona erer ve kiyaslamanin sonucunu reten bir tamsayi retilir. Sonu degerine gre Stringlerin hangisinin byk oldugu asagida verilmistir. Sonuc = 1 ise String1 > String2 Sonuc = 0 ise String1 = String2 Sonuc = -1 ise String1 < String2 Kullanimi; Sonuc = Strcomp ( String1, String2, Kiyas ) String1 : Karsilastirilacak ilk degisken String2 : Karsilastirilacak ikinci degisken Kiyas : Karsilastirmanin kiyas sarti. rnek; Private Sub Form_Load() Dim MyStr1, MyStr2, MyComp MyStr1 = "ABCD" MyStr2 = "abcd" MyComp = StrComp(MyStr1, MyStr2, 1) ' MyComp = 0 MyComp = StrComp(MyStr1, MyStr2, 0) ' MyComp = -1 MyComp = StrComp(MyStr2, MyStr1) ' MyComp = 1 End Sub
Tab,Spc () Fonksiyonu
Print komutu ile kullanilan bu fonksiyonlar belirtilen sayida bosluk karakteri birakir. Kullanimi; Tab ( Sayi ) veya Spc( Sayi )
141
B. MATEMATIKSEL FONKSIYONLAR
Abs() Fonksiyonu
Verilen sayinin mutlak degerini hesaplar.Sayi Integer veya Double olabilir. Bu fonksiyonunu rettigi deger yine Integer veya Double dir. Komutun kullanim sekli asagida verilmistir. Kullanimi; Sonuc=Abs(Sayi) Sayi : Mutlak degeri bulunacak Integer veya Double degisken tipinde bir sayi Sonuc : Fonksiyonun rettigi Integer veya Double degisken tipinde bir sayi.
142
Atn() Fonksiyonu
Verilen sayinin arktanjantini hesaplar. Eger sayi yerine integer bir degisken tipinde deger verirseniz program 0 degerini retir. Kullanimi; Sonuc=Atn(Sayi) Sayi : Arktanjanti hesaplanacak Integer veya Double degisken tipinde bir sayi. Sonuc : Fonksiyonun rettigi Integer veya Double degisken tipinde bir sayi. rnek; Private Sub Form_Load() Dim pi pi = 4 * Atn(1) End Sub
Cos() Fonksiyonu
Verilen ainin Cosinsn hesaplar. Derece cinsinden olan bir ainin cosinsn hesaplamak istediginizde nce Radyan'a evirmeniz gerekir. Bunuda aiyi Pi sayisi ile arpim 180 blerek yapabilirsiniz. Kullanimi; Sonuc=Cos(Ai) Ai : Cosins alinacak ai. Sonuc : Bu fonksiyonun rettigi Integer veya Double deger. rnek; Private Sub Form_Load() Dim aci, aci1 aci = 360 aci1 = (aci * 3.14) / 180 'radyan cinsine evirdik aci = Cos(aci1) End Sub
143
Fix() Fonksiyonu
Ksratli sayilari kendine en yakin byk tamsayiya tamamlar ve tamsayi kismini alir. Kullanimi; Sonuc=Fix(Sayi) Sayi : Tamsayi kismi alinacak ondalik sayi Sonuc : Fonksiyonun rettigi Integer tipinde bir sayi rnek; Private Sub Form_Load() Dim a a=5,555 Show Print Int(a) End Sub
Hex() Fonksiyonu
Eger Assembly dili ile ugrasmis veya ugrasiyorsaniz Hexedecimal sistemin ne oldugunu ok iyi bilirsiniz. Bu dilde program yazarken verilerinin kendileri degil Hexedecimal karsiliklari yazilir.HexeDecimal sayi sistemi 16 lik
144
Int() Fonksiyonu
Ksratli sayilari kendine en yakin kk tamsayiya tamamlar ve tamsayi kismini alir. Kullanimi; Sonuc=Int(Sayi) Sayi : Tamsayi kismi alinacak ondalik sayi Sonuc : Fonksiyonun rettigi Integer tipinde bir sayi rnek; Private Sub Form_Load() Dim a a=5,555 Show Print Int(a) End Sub
Log() Fonksiyonu
Pozitif sayilarin dogal logaritmasini alir. Sayi Negatif verilirse 5 numarali runtime hatasi olusur ve programdan ikilir. Kullanimi; Sonuc=Log(Sayi)
145
Oct() Fonksiyonu
Sayilari Octal sisteme evirir. Eger sayi yerine string bir ifade verilirse program 0 degerini retir. Kullanimi; Sonuc=Oct(Sayi) Sayi : Octal sisteme evrilecek Integer veya Double sayi Sonuc : Fonksiyonun rettigi Integer tipinde bir sayi rnek; Private Sub Form_Load() Dim a a = 555,898 Show Print Oct(a) End Sub
Rnd() Fonksiyonu
Rasgele sayi retir. Belirtilen aralikta rasgele sayi retir. Programin her defasinda farkli sayi retmesi iin Rnd Komutundan nce Randomize komutunun kullanilmasi gerekmektedir. Eger bu komut kullanilmaz ise program her defasinda ayni sayilari retir. Kullanimi; Sonuc = Int (Aralik * Rnd) Yukarida Int komutu retilen sayiyi kendisine en yakin kk tamsayiya tamamlar. Eger bu komutu kullanilmaz ise sonu double tipinde bir sayi olacaktir. Int yerine Fix komutuda kullanilabilir.
146
Sgn() Fonksiyonu
Ifadenin pozitif, negatif veya 0 olma durumunu inceler. Eger sayi pozitif ise fonksiyon 1, negatif ise -1 ve 0 ise 0 degerini retir. Kullanimi; Sonuc = Sgn(Sayi) Sayi : Durumu bulunacak Integer veya Double sayi Sonuc : Fonksiyonun rettigi Integer tipinde bir sayi rnek; Private Sub Form_Load() durum = Sgn(155) ' retilen deger 1. Show Print durum durum = Sgn(-5333.58) ' retilen deger -1. Print durum durum = Sgn(0) ' retilen deger 0. Print durum End Sub
Sin () Fonksiyonu
Verilen ainin Sinsn hesaplar. Derece cinsinden olan bir ainin sinsn hesaplamak istediginizde nce Radyan'a evirmeniz gerekir. Bunuda aiyi Pi sayisi ile arpim 180 blerek yapabilirsiniz. Kullanimi; Sonuc=Sin(Ai)
147
Sqr() Fonksiyonu
Pozitif sayilarin kaekkn hesaplar. Eger sayi negatif verilir ise program 5 numarali hatayi olusturur ve sonlandirilir. Kullanimi; Sonuc = Sqr(Sayi) Ai :Karekk alinacak sayi. Sonuc : Bu fonksiyonun rettigi Integer veya Double deger. rnek; Private Sub Form_Load() Show Print Sgr(9) Print Sgr(4) Print Sgr(25) End Sub
Tan() Fonksiyonu
Verilen ainin Tanjantini hesaplar. Derece cinsinden olan bir ainin tanjantini hesaplamak istediginizde nce Radyan'a evirmeniz gerekir. Bunuda aiyi Pi sayisi ile arpim 180'e blerek yapabilirsiniz. Kullanimi; Sonuc=Tan(Ai) Ai : Tanjanti alinacak ai. Sonuc : Bu fonksiyonun rettigi Integer veya Double deger. rnek; Private Sub Form_Load() Dim aci, aci1
148
Val() Fonksiyonu
Alfa numerik yani hem sayi hemde string bilgi ieren degiskenlerde soldan baslayara her hangi bir harfe gelinceye kadar olan sayilari sonu degeri olarak retir. Bosluk karakterinin herhangibir etkisi yoktur. Kullanimi; Sonuc = Sqr(Veriant Degisken) Sayi : Alinacak sayinin bulundugu Veriant degisken Sonuc : Bu fonksiyonun rettigi Integer veya Double deger. rnek; Private Sub Form_Load() Show Print Val("2457") ' Deger 2457. Print Val(" 2 45 7") ' Deger 2457. Print Val("24 ve 57") ' Deger 24. End Sub
149
IsNull() Fonksiyonu
Istenilen degiskenin NULL olup olmadigini kontrol eder. Herhangi bir degiskeni fonksiyon ile kontrol ettirdiginizde eger degisken NULL ise program True, degilse False degerini retir. Kullanim; Sonuc = IsNull (Degisken) Sayi : Formati kontrol edilecek herhangi bir degisken. Sonuc : Fonksiyonun rettigi Boolean degisken. rnek; Private Sub Form_Load() Dim D1: Dim D2: Dim D3 D1 = Null: D3 = Null Show Print IsNull(D1) 'True Print IsNull(D2) 'False Print IsNull(D3) 'True End Sub
Lbound() Fonksiyonu
ok boyutlu dizilerde numarasi verilen dizilerin baslangi degerlerini bu fonksiyon ile grenebilirsiniz. Kullanim; Sonuc = LBound (Dizi Adi , Sirasi) Dizi Adi : ok boyutlu dizi. Sirasi : ok boyutlu dizinin hangisinin kontrol ettirileceginin degeri. Eger Sira dizide tanimli degilse program 9 numarali hata ile sonlandirilir. Sonuc : Fonksiyonun rettigi Integer degisken. rnek; Private Sub Form_Load() Dim Dizi(1 To 10, 5 To 15, 10 To 20)'Dizi tanimlaniyor
150
TypeName() Fonksiyonu
Verilen degiskenin trnn adini verir. rnegin degisken Integer olarak tanimlanip bu fonksiyon ile kontrol ettirilirse sonu degeri olarak "Integer" string bilgisini retir. Kullanim; Sonuc = TypeName(Degisken Adi) Degisken Adi : Degisken tipi grenilecek herhangi bir degisken. Sonuc : Fonksiyonun rettigi String degisken. rnek; Private Sub Form_Load() Dim NullVar, MyType, StrVar As String IntVar As Integer CurVar As Currency Dim ArrayVar(1 To 5) As Integer NullVar = Null ' Assign Null value. MyType = TypeName(StrVar) ' Sonu "String". MyType = TypeName(IntVar) ' Sonu "Integer". MyType = TypeName(CurVar) ' Sonu "Currency". MyType = TypeName(NullVar) ' Sonu "Null". MyType = TypeName(ArrayVar) ' Sonu "Integer()". End Sub
VarType() Fonksiyonu
Bu fonksiyonda TypeName fonksiyonu gibi verilen degiskenin trn belirler. Ancak foksiyon yukaridaki fonksiyondan farkli olarak degiskenin adini degil kodunu verir. Kullanim; Sonuc = VarType ( Degisken Adi ) Degisken Adi : Degisken tipi grenilecek herhangi bir degisken. Sonuc : Fonksiyonun rettigi Integer degisken.
151
152
CurDir Fonksiyonu
O anda aktif olan dizini verir. Eger src verilmezse aktif srcdeki aktif dizin, verilirse verilen srcdeki aktif dizini verir. Kullanimi; CurDir veya CurDir "Src Harfi" Src Harfi : Aktif dizini bulacaginiz src rnek; Private Sub Form_Load() Dim MyPath MyPath = CurDir MyPath = CurDir("C") MyPath = CurDir("D") End Sub
Dir Fonksiyonu
Belirtilen dizindeki verilen dosya isimlerini arar. Kullanimi; dosya = Dir("Dosya Adi",zelligi) Dosya : Eger dosya bulunursa dosyanin ierigine dosya adi atanir,eger bulunamazsa dosya'nin ierigi bos " " olur. Dosya Adi : Aranacak dosyanin adi zelligi : Aranacak dosyanin zellikleri
153
Environ Fonksiyonu
Windows'un veya DOS'un bazi Path'lari vardir. Bunlari bu fonksiyon ile anlayabiliriz. rnegin bunlardan biride Prompt'tur. Kullanimi; Sonuc = Environ(Degeri) Degeri : Path'i bulacaginiz zelligin degeri. Bu deger 1-8 arasinda olmalidir. 0 olursa hata olusur. Sonuc : Verilen degere gre fonksiyonun rettigi Path'lar rnek; Private Sub Form_Load() Dim EnvString, a For a = 1 To 8 EnvString = Environ(a) Show Print EnvString Next a End Sub
FileDateTime Fonksiyonu
Belirtilen dosyanin olusturulma tarih ve saatini verir. Kullanimi; Sonuc = FileDateTime ("Dosya Adi") Sonuc : Fonksiyonun rettigi dosyanin olusturulma tarih ve saatinin saklandigi degisken Dosya Adi : Ne zaman olusturuldugunu bulacaginiz dosyanin tam adi
154
FileLen Fonksiyonu
Belirtilen dosyanin bayt trnden disk zerinde kapladigi alani verir. Kullanimi; Sonuc = FileLen ("Dosya Adi") Sonuc : Dosyanin disk zerinde kapladigi alanin atandigi Integer degisken Dosya Adi : Uzunlugu bulunacak dosyanin tam adi rnek; Private Sub Form_Load() Dim uzunluk uzunluk = FileLen("c:\autoexec.bat") MsgBox uzunluk End Sub
FileCopy Fonksiyonu
Dosyalari bir yerden baska bir yere kopyalar Kullanimi; FileCopy "Kaynak Dosya","Hedef Dosya" Kaynak Dosya : Kopyalanacak dosyanin kaynak dizini ile tam adi Hedef Dosya : Kopyalanacak dosyanin hedef dizini ve yeni veya eski adi rnek; Private Sub Form_Load() FileCopy "c:\mesaj10.txt", "c:\belgelerim\mesaj10.txt" End Sub
155
rnek; Private Sub Form_Load() Dim ozelik ozelik = GetAttr("c:\autoexec.bat") MgBox ozelik End Sub
Kill Fonksiyonu
Belirtilen dosyari disk zerinden tamamen siler Kullanimi; Kill ("Dosya Adi") Dosya Adi : Silinecek dosyanin tam adi rnek; Private Sub Form_Load() Kill ("C:\Deneme.Bak") End Sub
156
Name Fonksiyonu
Belirtilen dosya yada dizinlerin isimlerini degistirir ve istersek bu dosyalari bir yerden baska bir yere tasiyabilir. Kullanimi; Name "Eski Dosya Adi","Yeni Dosya Adi" Eski Dosya Adi : Ismi degistirilecek dosyanin tam yolu ile eski adi Yeni Dosya Adi : Ismi degistirilecek dosyanin tam yolu ile yeni adi rnek; Private Sub Form_Load() Name "c:\mp3" As "c:\belgelerim\mp3" End Sub
RmDir Fonksiyonu
Ii bos dizinleri silmek iin kullanilir. Ii dolu dizinleri silemeyiz. Kullanimi; RmDir "Dizin Adi" Dizin Adi : Ii bos silinecek dizin rnek; Private Sub Form_Load() RmDir "c:\deneme" End Sub Yukaridaki rnekte C srcs iinde bulunan ve gizli olmayan tm dizin ve dosyalari listeledik.
157
Open Fonksiyonu
Disk zerinde yeni bir dosya aar. Kullanimi; Open "Dosya adi" For Ailis Modu As #Dosya Numarasi Dosya Adi : Dosyanin disk zerinde hangi ada sahip olacagini buraya yazin Ailis Modu : Dosyanin hangi modda ailacagini belirleyen blmdr D.Numarasi : Dosyanin program iinde hangi numara ile ailacagi burada belirlenir rnek; Private Sub Form_Load() Open "Deneme" For Output As #1 End Sub Yukaridaki rnekte Deneme adinda yeni bir dosya aildi.
158
Close Fonksiyonu
Open deyimi ile ailan dosyalari kapatmak iin kullanilir. Kullanimi; Close #Dosya numarasi D.Numarasi : Kapatilacak dosyanin ailis numarasi rnek; Private Sub Form_Load() Open "Deneme" For Input As #1 Close #1 End Sub Yukaridaki rnekte Deneme dosyasi ailip kapatildi.
FileAttr Fonksiyonu
Open deyimi ile ailmis olan dosyanin hangi modda aildigini gsterir. Fonksiyonun rettigi deger ailis modunun kendisi degil kod numarasidir. Bu kod numaralari asagida verilmistir. Dosyalarin Ailis Modu Kod Tablosu Modu Ailis Kodu
159
FreeFile Fonksiyonu
Dosyanin ailis numarasini en dsk seviyede seer. Yani ailmamis olan dosya numarasinin en kk olanini seer. Asagida bunlar rnek tablo ile aiklanmistir. FreeFile Fonksiyonuna ait rnek tablo; 1.Dosya 'nin ailis numaras 1 olsun 2.Dosya 'nin ailis numaras 2 olsun 3.Dosya 'nin ailis numaras 5 olsun 4.Dosya 'nin ailis numaras 6 olsun 5.Dosya 'nin ailis numaras 9 olsun 6.Dosyanin dosya numarasina FreeFile fonksiyonun sonu degerini atarsak, bu deger 3 olur. Kullanimi; Sonuc = FreeFile Sonuc : Kullanilmamis olan en dsk dosya numarasi. rnek; Private Sub Form_Load() Dim f f = FreeFile
160
Loc Fonksiyonu
Open deyimi ile aimis olan dosyada okunan/yazilan yani islem yapilan pozisyonu verir. Kullanimi; Sonuc = Loc( Dosya Numarasi ) D.Numarasi : Islem gren alanin bulunacagi dosya Sonuc : Dosyanin islem gren pozisyonunu verir rnek; Private Sub Form_Load() Dim f Dim d As Integer Open "License.txt" For Input As #1 Input #1, f d = Loc(1) Show Print f Print d Close (1) End Sub
Lof Fonksiyonu
Open deyimi ile ailan dosyada okunan yazilan pozisyonu verir. Kullanimi; Sonuc = Lof ( Dosya Numarasi ) D.Numarasi : Uzunlugu bulunacak dosya Sonuc : Dosyanin uzunlugunun retildigi integer degerdir rnek; Private Sub Form_Load() Dim d As Integer Open "License.txt" For Input As #1 d = Lof(1) Show Print d Close (1) End Sub
161
EOF Fonksiyonu
Open deyimi ile ailan dosyanin sonuna gelinip gelinmedigini belirtir. Kullanimi; Sonuc = EOF ( Dosya Numarasi ) D.Numarasi : Kontrol yapilacak dosya numarasi Sonuc : Eger dosyanin sonuna gelinmisse True gelinmemisse False degeri retilir rnek; Private Sub Form_Load() Dim InputData Open "c:\mesaj11.txt" For Input As #1 Do While Not EOF(1) Input #1, InputData MsgBox InputData Loop Close #1 End Sub
162
Array () Fonksiyonu
Veriant trndeki degiskeni dizi haline dnstrr. Bu diziler iine atama bu dnsm sirasinda olabilmektedir. Kullanimi; Veriant Degisken = Array (deger1,deger2,...,degerN) V.Degisken : Dizi haline dnstrlecek veriant degisken Deger1 : Bu dizinin ilk degeri
rnek; Private Sub Form_Load() Dim MyWeek, MyDay MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat") MyDay = MyWeek(2) MyDay = MyWeek(4) End Sub
Ccur () Fonksiyonu
Verilen degiskeni Para trne evirir. Kullanimi; Sonuc = CCur (Sayi) Sayi : Para trne evrilecek degisken Sonuc : Fonksiyonun rettigi yeni deger rnek; Private Sub Form_Load() Dim MyDouble, MyCurr MyDouble = 543.214588 MyCurr = CCur(MyDouble) MsgBox MyCurr End Sub
163
Cint () Fonksiyonu
Verilen degiskeni Integer trne evirir. Kullanimi; Sonuc = CInt (Sayi) Sayi : Integer trne evrilecek degisken Sonuc : Fonksiyonun rettigi Integer deger rnek; Private Sub Form_Load() Dim MyDouble, MyInt MyDouble = 2345.5678 MyInt = CInt(MyDouble) MsgBox MyInt End Sub
CLng () Fonksiyonu
Verilen degiskeni uzun tamsayi yani Longint degisken trne evirir. Kullanimi; Sonuc = CLng (Sayi) Sayi : Longint trne evrilecek degisken Sonuc :Fonksiyonun rettigi Longint deger
164
CSng () Fonksiyonu
Verilen degiskeni tek duyarlikli tamsayi yani Single degisken trne evirir. Kullanimi; Sonuc = CSng (Sayi) Sayi : Single trne evrilecek degisken Sonuc : Fonksiyonun rettigi Single deger rnek; Private Sub Form_Load() Dim MyDouble1, MyDouble2, MySingle1, MySingle2 MyDouble1 = 75.3421115: MyDouble2 = 75.3421555 MySingle1 = CSng(MyDouble1) ' MySingle1 = 75.34211. MySingle2 = CSng(MyDouble2) ' MySingle2 = 75.34216. End Sub
CStr () Fonksiyonu
Verilen ifade degerini dizgi yani string tre dnstrr. Fonksiyona hangi ifade degeri verilirse verilsin o ifadeyi String bilgiye dnstrr. Kullanimi; Sonuc = CStr (ifade) Sayi : String trne dnstrlecek degisken Sonuc : Fonksiyonun rettigi String deger rnek; Private Sub Form_Load() Dim MyDouble As Integer Dim MyString MyDouble = 437.324 MyString = CStr(MyDouble) ' MyString = "437.324".
165
Cvar () Fonksiyonu
Verilen ifade degerini veriant trde degiskene dnstrr. Kullanimi; Sonuc = CVar (ifade) Sayi : Veriant trne dnstrlecek degisken veya deger Sonuc : Fonksiyonun rettigi Veriant deger rnek; Private Sub Form_Load() Dim MyInt, MyVar MyInt = 4534 MyVar = CVar(MyInt & "000") MsgBox MyVar End Sub
DataValue () Fonksiyonu
String formatindaki {r; "02,12,1980" gibi} degiskeni tarih yani Date formatina evirir. Kullanimi; Sonuc = DateValue (ifade) Sayi :Date trne dnstrlecek string degisken veya deger Sonuc : Fonksiyonun rettigi Date yani tarih formatindaki yeni deger rnek; Private Sub Form_Load() Dim MyDate MyDate = DateValue("02,12, 1969") MsgBox MyDate ' MyDate = 02.12.1969 End Sub
166
Str,Str$ () Fonksiyonu
Integer veya double formatindaki degisken veya verileri string formatina dnstrr. Kullanimi; Sonuc = Str (deger) Deger : String formatina dnstrlecek herhangi bir degisken veya veri Sonuc : Fonksiyonun rettigi String formatindaki sonu degeri rnek; Private Sub Form_Load() Dim MyString
167
TimeSerial () Fonksiyonu
Integer, string veya double formatindaki {r; 16,35,17 gibi} verileri alip saat formatina dnstrr. Kullanimi; Sonuc = TimeSerial ( deger1, deger2, deger3 ) Deger1 : Saat formatina dnstrlecek verinin Saat'i olusturan kismi Deger2 : Saat formatina dnstrlecek verinin dakika'yi olusturan kismi Deger3 : Saat formatina dnstrlecek verinin saniye'yi olusturan kismi Sonuc : Fonksiyonun rettigi Time { 16:35:17 gibi } formatindaki sonu degeri rnek; Private Sub Form_Load() Dim MyTime MyTime = TimeSerial(16, 35, 17) MsgBox MyTime ' MyTime = 16:35:17 End Sub
G. Ykleme Fonksiyonlari
End Fonksiyonu Hi kosulsuz programdan ikar yani programin akisini direkt sonlandirir rnek; Private Sub Form_Load() Msgbox "Veli Akakaya" End 'program kosulsuz sonlandirildi End Sub
168
Inputbox Fonksiyonu
Msgbox kullaniciya bilgi verme, onu uyarma ve bu uyarilar karsisinda gerektiginde bir cevap alabiliyordu.Inputbox komutu da disaridan bilgi alir. Fakat bu komut Msgbox komutundan farkli olarak belirli degerleri degil kullanic inin kendi girdigi verileri almaktadir. Yani disaridan herhangi bir String, Integer vs. tipinde veriler alabiliriz. Kullanimi; Inputbox (" Aiklama " , " Baslik " , Deger ) Aiklama : Mesaj kutusuna ne tr veri girilecegi aiklama olarak yazilir. Baslik : Inputbox 'un Caption zelligidir. Sonuc : Ilk ekrana geldiginde bulunacak deger.
Load Fonksiyonu
Belirtilen objeyi ykler. rnek; Private Sub Form_Load() Msgbox "Form 2 yklenecek" Load Form2 End Sub
LoadPicture Fonksiyonu
Istenilen resim formatindaki dosyayi belirtilen objeye ykler Kullanimi; Obje.Picture = LoadPicture(Dosya adi) Dosya Adi : Yklenecek dosyanin tam yolu ile adi rnek; Private Sub Form_Load() Form1.Picture = LoadPicture("C:\windows\Bubbles.bmp") End Sub
169
Msgbox Ekran Resimleri vbInformation vbExclamation vbQuestion vbCriticial Mesaj Mesaj Mesaj Mesaj kutusuna "i" resmini ek. kutusuna "!" resmini ek. kutusuna "?" resmini ek. kutusuna "X" resmini ek.
ogu komut gibi Msgbox komutunun da rettigi bir sonu degeri vardir. Komutu, bu degeri bir degiskene atayarak asagidaki gibi kullaniriz; sonuc = Msgbox ("Bir hata olustu", vbRetryCancel + vbCriticial, "Dikkat !") Asagidaki tuslarin rettikleri sonu degerleri verilmistir.
170
Show Fonksiyonu
Belirtilen formu veya objeyi gsterir. Kullanimi; Form_Adi.Show rnek; Private Sub Form_Load() MsgBox "Form 2 gsterilecek" Form2.Show End Sub
Unload Fonksiyonu
alisir haldeki formu kapatmak iin kullanilir. Bu sadece form degil herhangi bir obje de olabilir. O an alisan formu kapatmak iin ; Unoad Me komutu kullanilabilir. Bu komut yerine; Unload Form Adi komutu kullanilabilir.
171
172
Form nesnesini evreleyen pencerenin sol st ksesinde Denetim Dgmesi bulunmaktadir. Bu dgmeye tiklanirsa Denetim Mens ailir. Form nesnesini evreleyen pencerenin denetim mensnde pencereyi simge durumuna kltmede kullanilan simge durumuna kltmede kullanilan Simge Durumunu Klt ve visual basic penceresini kaplamasini saglayan Ekrani Kapla gibi komutlar bulunmaktadir. Formu ieren pencerenin denetim mensnde ki Close komutu ile form kapatilir. Bu pencerenin denetim mensnde bulunan komutlar, herhangi bir Windows uyumlu pencerenin denetim mensnde bulunan komutlardan farkli degildir. Formu ieren pencerenin boyutlarini Windows uyumlu diger pencereler gibi degistirebilirsiniz(herhangi bir ucundan tutup ekerek). Denetim mensnden Maximize komutunu verecek olursaniz formu ieren pencere visual Basic penceresinin tmn kaplar. Minimize komutu ise pencereyi simge durumuna kltr. Visual Basic penceresinin sol alt ksesindeki ubugun zerine konulan dgmelerden yararlanarak formu ieren pencereyi tekrar aabilir veya kapatabilirsiniz. Eger o sirada projenin formu zerinde islem yapmayacaksaniz,formu ieren pencereyi kapatabilirsiniz. Formu ieren pencereyi kapattiktan sonra,form zerinde islem y apmaya gerek duymaniz halinde Project Explorer penceresinden veya View mensndeki object
173
174
Yukaridaki pencerede grdgnz gibi progra mlar alismaya formdan baslayabilecegi gibi ismi main olan bir alt programdan da baslayabilir. Bunun iin bir modl olusturulur ve sub main ile baslayan bir alt program yazilir. Bylece program buradan baslar. Formlar ikiye ayrilir. Biri programlarda kullandigimiz tek basina alisan SDI (Single ocument Interface) formlardir. Ikinciside MDI (multi document Intrface) formlardir. MDI formlar iinde kendisine bagli formlar bulundurulur. Bu formlar (child form) MDI forma baglidir. MDI formla birlikte hareket e derler.Asagida bir MDI form ve onun iinde bulunan Child formlar grlmektedir.
SDI FORMLAR
Tek basina alisan formlara SDI form denir. Normalde yeni bir projeye baslarken projede bulunan form ve daha sonra eklenecek formlara SDI formlardir. Bu form herhangi bir forma bagli kalmaksizin kendi baslarina alisirlar.
175
Nesnenin iindeki izgilerin seklini belirler. Yazi tipini belirler. Yazi altinda resim yazi varsa bunu gsterir. Aiklama yazisinin rengini belirler. Nesnenin yksekligini belirler.
Yardim dosyasindaki konu numarasini belirler.
Formun iconu Formun keypress olayini alistirmasi saglar. Sola hizasini belirler.
Max buttonun iptal edilmesi MDI form olarak kullanilacagini belirler. Min butonunu iptal eder. Nesnede hangi resmi alacagini belirler. Nesnede hangi sekli alacagini belirler.
Kullanici tarafindan tasinmayacagini belirler.
176
izim yapilacak alanin yksekligini ayarlar. izim yapilacak alanin sol kenarini ayarlar. izim yapilacak alanin l birimini ayarlar. izim yapilacak alanin st kenar ayarlar. izim yapilacak alanin genisligini ayarlar.
tusla
4.
5. Private Sub Form_Dragdrop(Source As control,X As Single,Y As Single):olay srkleme olayi formda bittiginde alisir.
Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y Mouse un koordinat degerlerini verir.
6. Private Sub Form_Dragover(Source As control,X As Single,Y As Single,Stade As integer): Olay srkleme esnasinda
Mouse nesne zerinden geerken alisir. State ise srkleme olayinin hangi asamada oldugu degerini verir.Stade zelligi 3 deger tasir.
177
Clicklendiginde aktif nesne olur. Dolayisiyla pogram baslarken yapmasi gereken isler genellikle bu olaya yaptirilir.
9. Private Sub Form_Keydown(Keycode As integer,Shift As integer):Olay klavyenin tusuna basildigi an alisir. KeyCode klavyeden
basilan tusun degerini tasir. Shift Ctrl,Alt ve Shift tuslarina karsilik deger retir. Bunlar:1-Shift, 2-Ctrl ve 4-Alt degerleridir. Beraber basildiklarinda gelen deger toplamlarindan olusur. rnegin Ctrl+alt=6 dir.
11. Private Sub Form _ Keyup ( KeyCode As Integer, shift As Integer): Olay KeyPress olayindan sonra, klavyeden basilan
tus birakildiktan sonra alisir.
13. Private Sub Form_MauseDown(Button As Integer, Shift As Integer, X As Single, Y As Single): Formun zerine
mouse un herhangi bir tusu ile clicklendiginde alisir. Button basilan tusun degerini verir. Shift ise mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouse un bulundugu koordinatlarini verir.
14. Private Sub Form _MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single): Formun zerinde
mouse hareket ettirildiginde alisir.
15. Private Sub Form _MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single): Mouse un tuslari birakildigi
anda alisir.
herhangi
bir
sey
178
19. Private Sub Form_QueryUnload(cancel As Integer,UnloadMode As Integer): Unload olayiyla ayni isi yapar
ancak formun kimin tarafindan kapatilmaya kapatilmaya alisildigini da grenebilirsiniz. Ayrica bu olay unload olayindan nce meydana gelir ve burada cancel=true ile kapatma olayi iptal edilirse unload olayi meydana gelmez.
FORMUN METHODLARI
Form zerinde belli islemlerin yapilmasini saglar. Form nesnesinin methodlari sunlardir: Cls Formun stn temizler. DrawCircle Daire izer. DrawLine izgi izer. Hide Gizler. Move Tasir Pset Bir noktanin rengini verir. Refres Yineler. SetScale l birimi dzenler. SetFocus Odaklanmayi saglar. Show Formu gsterir. TextHeight Metin yksekligi (bastirilacak) TextWidth Metin genisligi (bastirilacak) Zorder Grafik dzeyini belirler. Printform form zerinde grlen btn kontrollerin yazdirilmasini saglar. .
methodundan formdaki diger nesneler etkilenmez. Eger temizlemek istediginiz form aktif degilse bunu program kodunda belirtmeniz gerekir. Asagidaki program kodu ile projedeki baska bir formun zeri temizlenmektedir. Yapisi:nesne.cls
CLS METHODU Cls methodu ile print veya baska bir method ile yazilanlar silinir. Cls
179
DRAWLINE METHODU
Bu method ile aktif olan veya belirtilen formun zerine izgi ve drtgen izer. Yapisi: nesne.drawline x1,y1,x2,y2[renk] Genel olarak bu methodun kullanisi syledir: Line(Baslama X, Baslama Y)-(Bitis X, Y), izgiRengi,BF Eger izginin baslama yeri belirtilmezse baslama yeri olarak forma ait CurrentX ve CurrentY degiskenlerinin o anki ierigi dikkate alinir. Asagidaki program kodunda baslama yeri belirtilmedi. Program kodunu yazip programi alistiralim ortaya ikan formu hep birlikte grelim. Private Sub Form_Click() DrawWidht=3 Line-(5000,1500) End Sub
DRAWCIRCLE METHODU
Bu methotla forma istenen ap, kalinlik ve renkte ember elipsler ya da bir egri izmeyi saglar. Genel yazilisi su sekildedir. Circle(baslama x,baslama y),yariap,izgi rengi Yapisi: nesne.drawcircle x,y,yariap[renk,ai]
HIDE METHODU
Bir formu gizler ancak onu unload etmez. Yapisi:nesne.Hide
180
Formun veya herhangi bir kontroln konumunu ve boyutlarini tek seferde degistirir. Kontroln Left,Top,width,height propertisleriyle drt ayri seferde yapacaginiz isi bu methodla tek seferde yapabilirsiniz. Propertislerle yapmaniz durumunda kontrol drt defa sekil degistirecek ve dolayisiyla daha agir ve irkin bir grnt olusacaktir. Asagidaki her iki komut grubuda ayni isi yapar. propertislerle form1.left=100 form1.top=100 form1.width=screen.with-200 form1.left= screen.hight-200 Methodla form1.move 100,100, screen.with-200, screen.hight-200
PSET METHODU
Bu method ile istenen formun stne veya forma dahil edilen resim kutusuna bir nokta konulur. Genel yazilisi Pset(pozisyon x, pozisyon Y),nokta rengi Pset() methoduna 3.parametre olarak renk kodu verilmezse o an iin geerli olan renk kodu esas alinir. 1. ve 2. parametreler ise noktanin formun neresine konulcagi belirlenir. Forma konulacak noktanin yerini belirlemek iin Pset() methoduna parametre olarak yazilan koordinat degerleri iin srekli olarak formun sol st ksesi baz alinir. Eger forma arka arkaya nokta eklerken baz olarak bir nceki noktanin yeri alinmak istenmiyorsa pset() methoduna step parametresi eklenir.Asagidaki program kodu buna bir rnektir. Private Sub form_click() Drawwith=2 Pset(500,500) For I=500 to 2500 step 10 Pset step(10,10) NextI End Sub
181
SETFOCUS METHODU
Klavye kontrolnn Setfocus yapilan nesneye gemesini saglar. Bir nesneye setfocus methodunu uygulayabilmek iin o nesnenin enebled zelliginin true olmasi gerekir. Aksi taktirde hata olusacaktir. Bu zellik daha kolay kullanilabilir arabirimler olusturmak iin faydalidir.
Kullanici yeni dgmesini tiklayinca text kutularinin ierigini bosaltalim. Kullanicinin bu dgmeyi tiklamasiyla kontrol komut dgmesine geecek ve orada kalacaktir. Halbuki yeni dgmesi tiklandiktan sonra tekrara ayni dgmenin tiklanmasi mantikli olmayacagi iin kontroln komut dgmesinde degil text1 kutusunda olmasi programin daha kullanilir olmasini saglayacaktir.
182
SHOW[SITIL] METHODU
Formun visible zelliginin true yapilmasi gibidir. Ancak parametre ile kullanilirsa formun gsterim seklinide etkiler. Burada sitil kullanilmazsa veya 0 kullanilirsa visible=true ile ayni isi yapar. Sitil degeri 1 verilirse form modal olarak gsterilir. Form modal ise, form gizlenmeden veya kapatilmadan program iindeki diger formlara ulasim engellenir,yani form ekranda oldugu srece kontrol elinde tutar,programinizdaki diger formlara geisi engeller.(mesaj pencerelerinde oldugu gibi)
ZORDER MOD METHODU Bu metod kullanildigi nesneyi en ne veya en arkaya getirmek iin kullanilir. Burada metodun 0 olmasi kontroln digerlerinin nne,1 olmasi arkasina getirilmesini saglar.
Form zerinde grlen btn kontrollerin yazdirilmasini saglar. Form ve PictureBox zerinde ki metodlarla yapilan yazim ve izimlerin de yazdirilabilmesi iin AutoRedraw zelliklerinin True olmasi gerekir. Bu zellikler True ise Form zerinde grlen menler ve Form erevesi hari her sey aynen yazicidan ikar.
183
184
Programi bu haliyle alistirdiginizda yalniz MDI form grlecektir. MDIChild formun da grlebilmesi iin MDI formun load olayina asagidaki kodu ekleyin.
185
Dim form As New form1 Yukaridaki komutla form1 komutundan,form isimli yeni bir form olusturulabilir.Bu komut o formu olusturur ancak grntlemez. Grntlemek iinde Form.show komutunu kullanacagiz. Simdi bu komutlari kullanarak programimiza yeni formlar olusturalim.Bunun iin form1 zerine yeni form captionlu bir komut dgmesi ve bu dgmenin click koduna da Private Sub command1_click () Dim form As New form1 Form1.show End Sub kodlarini yazalim. Programi bu haliyle alistirip asagidaki gibi bir grnt elde edebiliriz.
186
Burada grldg gibi form1den tretilen btn formlarin captionlari form1dir. Bunu her form iin arttirarak degistirelim. Bu is iin Forms.Count zelligini kullanacagiz. Bu zellik programda bulunan btn formlarin sayisini verir,her yeni form olusturuldugunda bu sayi bir artacagindan olusan formlarin basliklarida farkli numaralarda olacaktir.Komut dgmesinin clik olayini su sekle evire lim. Private sub command1_click () Dim form As new form1 Form1.show Form.caption = Form & (forms.count _1) End Sub Forms.Count MDIForm dahil formlarin sayisini verdigi iin eksigini alarak Child formlarin sayisini bulmus olduk. Bylece olusan her forma Form1,Form2 gibi basliklar verilecektir.
187
188
189
Arrange metodu
Bu yntem ile MDI form iindeki Child formlar dzenlenebilir. Su drt degerden birini alir: Arrange Anlami 0 vbCascade Minimize durumunda olmayan btn child formlar Basamaklanir. 1 vbTileHorizontal Minimize durumunda olmayan Formlar yatay olarak dsenir. Minimize durumunda olmayan Formlar dikey olarak dsenir. btn Child
2 vbTileVertical 3 vbarrangeIcons
btn
Child Child
Minimize durumunda olmayan btn Formlar simgeleri yerlestirir MDI form iindeki btn formlari yatay olarak dsemek iin : Mdiform1.arrange 1 Kullanilabilecegi gibi Mdiform1.arrange vbTileHorizontal Seklinde sembolik ismi ilede kullanilabilir.
190
MDIFormun zellikleri
Program i erisindeki adini belirler. Grnm belirler.
MDIChild formlarin gizli olarak yklenmesidir.
Zemin rengidir. Baslik bilgisi tanimlanir. MDIFormun kullanabilirligini belirler. MDIFormun yksekligini belirler. MDIFormun iconudur. Sola hizasini belirler.
Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler.
Scall barlarin nerede ikacagini belirler. Ek bilgidir. stten hizasini belirler. Grnrlk. Formun genisligini belirler. Pencere durumu.
191
5. Private Sub MDIForm_Dragdrop(Source As control,X As Single,Y As Single):Olay srkleme olayi formda bittiginde alisir.
Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y Mouse un koordinat degerlerini verir.
6. Private Sub MDIForm_Dragover(Source As control,X As Single,Y As Single,Stade As integer): Olay srkleme esnasinda
Mouse nesne zerinden geerken alisir. State ise srkleme olayinin hangi asamada oldugu degerini verir.Stade zelligi 3 deger tasir.
alisir. Clicklendiginde aktif nesne olur. Dolayisiyla pogra m baslarken yapmasi gereken isler genellikle bu olaya yaptirilir.
9. Private Sub MDIForm_MauseDown(Button As Integer, Shift As Integer, X As Single, Y As Single): Formun zerine
mouse un herhangi bir tusu ile clicklendiginde alisir. Button basilan tusun degerini verir. Shift ise mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouse un bulundugu koordinatlarini verir.
10. Private Sub MDIForm _MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single): Formun zerinde
mouse hareket ettirildiginde alisir.
11. Private Sub MDIForm _MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single): Mouseun tuslari
birakildigi anda alisir. alisir.
Form kapatilmak istendiginde (Alt+F4 ile vs.) en son bu olay Cancel kapatma istegini dzenler. 1 ise iptal eder.
14.
Private
Sub
MDIForm_Terminate():Bir
formun
btn
192
MODULLER
VB kodlari modller iinde saklanir. esit modl vardir. Form, Standart ve Class. Basit uygulamalarda sadece bir form vardir ve tm kod bu formun modl iinde durur (uzantisi frm). Ancak programiniz bydke ek formlar eklersiniz. Sonunda, bir ok farkli formda tekrar tekrar yazmak zorunda oldugunuz kodlar oldugunu farkedersiniz. Her forma ayni isi yapan kodlari yazmak istemeyeceginiz iin ortak grevleri iinde barindiran bir ayri modl yazarsiniz. Bu ayri modl bir standart modldr (uzantisi bas). Zaman getike ortak kullanilan yordamlari ieren bir modller ktphanesi kurarsiniz. Her standart, class yada form modl sunlari ierebilir: Deklerasyonlar: constant, type, variable ve dynamic -link library (DLL) yordam deklerasyonlari standart, class yada form modllerinin modl seviyesine yazilir. Yordamlar: Sub, function yada Property yordamlari
Form Modulleri
Form Modulleri (uzantisi FRM) VB'nin temelidir. Ilerinde ait olduklari formun tm zellikleri vardir. Genel yordamlar, form dzeyi degisken deklerasyonlari, costantlar (degismezler), type'lar (kullanicinin belirledigi veri trleri)
Standard Modulleri
Standard Moduller (uzantilari BAS) diger modllerini ortak kullandiklari yordamlari ve degisken tanimlamalarini tutarlar. Global (tm uygulamada geerli) yada modl dzeyinde geerli degiskenler, degismezler, trler tutarlar. Standart modller dikkatli yazilirlarsa diger projlerde de kullanilabilirler.
Class Modulleri
Class Modulleri (uzantilari CLS) VB'nin nesne tabanli programlama zelliginin temelidir. Yeni nesneler yaratmak iin class modlleri iine kod yazarsiniz. Bu nesnelerin sizin belirlediginiz zellikleri ve metotlari olur.
193
194
Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler.
195
Kainci TAB da kendine ulasacagini belirler. Herhangi bir mesaj saklamak iin kullanilir. Nesnedeyken mesaj verdirmek iin kullanilir. stten hizasini belirler. Form da grnp grnmeyecegini belirler. Nesnenin genisligini belirler. Ierdigi bilgiyi forma kelime blerek ya da blmeden getirecegini belirler.
LABEL NESNESININ BAZI NEMLI OLAYLARI 1-Private Sub Label1_Click(): Olay etikete mouseun sol tusuna
basildiginda alisir. Ayni zamanda bir degistirince de click olayi meydana gelir. kontrol nesnesinin value degeri
2-Private
Sub Label1_Change():Olay etiketin Captioni degistigi anda alisir.Kod iinde caption zelliginin degistirilmesi ya da bir DDE linkinin gncelleme yapilmasi change olayini olusturacaktir. 3-Private Sub Label1_DblClick():Olay etikete sol tusla ift tiklandigi
anda alisir.
4-Private Sub Label1_DragDrop(Source As Control, X As Single, Y As Single:Olay srkleme olayi etikette bittiginde alisir.
Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y mauseun koordinat degerlerini verir.
5-Private Sub Label1_DragOver(Source As Control,X As Single, Y As State As Integer):Olay srkleme esnasinda mouse
nesne zerinden geerken alisir. State ise srkleme olayinin hangi asamada oldugu degerini verir. State zelligi 3 deger tasir.
zerine mousenin herhangi bir tusu ile clicklendiginde alisir.Button basilan tusun degerini verir.Bunlar:
196
Deger 1 2 4
Shift ise mousela birlikte klavyeden basilan tusun degerini verir. Bunlar: Anlami vbShiftMask vbCtrlMask vbAltMask Deger 1 2 4 Aiklama Shift Tusu Ctrl Tusu Alt Tusu
7-Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single):Etiket zerindeyken alisir. 8-Private Sub Label1_MouseUp(Button As Integer, X As Single, Y As Single): Mouseun tuslari birakildigi anda alisir. LABEL NESNESININ METHODLARI Aligment:Yazinin sola saga veya ortaya yazilmasini saglar. Appearance:Bu zellik kontroln boyutlu grnmn ayarlar. Autosize:Nesnenin
ayarlanacaktir. boyutlari ieriginin boyutlarina gre yeniden
197
Backstyle: Nesnenin zerinde bulundugu konuma uymasini saglar. Borderstyle:Nesnenin ekran zerindeki sinirlarinin ereve seklini belirler. Caption: Grnecek yazidir. Datafield: Veritabaninin herhangi bir alana baglanmasini saglar. Dataformat:Veritabanindaki bilgini formatini ayarlar. Datasource:Veri tabanindaki tablotu belirler. Dragicon:Srkleme olayinda farenin alacagi sekli belirler. Dragmode:Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Clicklenebilirligini belirtir true ise click olayinda alisir. Font:VBnin 5.0 versiyonu ile btn font zelliklerini bir arada bulunduran ve
tek seferde hepsini birden belirtmeye yarayan font nesnesi tanimlanmistir.Bu nesnenin alt zellikleriyle tek tek ayarlama yapilabilecegi gibi tek seferde de baska bir font nesnesinin btn zellikleri atanabilir.
Fontbold: True ise nesne iin kullanilan yaziyi koyu yapar. FontItalic:True ise nesne iin kullanilan yazi egik yapar. Fontname: Nesne iin kullanilan yazinin fontunu belirler.Bu font alisma
esnasinda sistemde degistirilebilir. bulunan bir fontun numarasi veya ismi verilerek
Fontstrikethru: True ise nesne iin kullanilan yazinin ortasini izer. 198
olarak grr. Index parametresi bu nesnenin dizideki kainci eleman oldugunu belirler,bu nesneye bu dizi indexiyle ulasilir. Index zelligine bir sayi verilmisse o kontrole isminden sonra bu sayi verilerek ulasilabilir. rnegin index zelligi 2 olan bir text kutusunun text zelligine Text1(2).text Satiri ile ulasilabilir. Bir kontrol dizi olmaktan ikarmak iin ise index zelligini silmeniz gerekir.
koordinatlar ekran koordinatlari olmayip iinde bulundugu nesneye bagli koordinatlardir.Bir nesne form, Picture box veya frame iinde bulunabilir. Iinde bulundugu nesnenin sol st koordinatlari 0,0 olmak zere left ve top bu noktaya olan uzakliktir. VBde l birimi olarak twip kullanilir.Ancak istenirse formun scalemode zelligi degistirilerek l birimi olarak piksel,veya metrik birimler verilebilir.
alacagi sekli belirler. 0 ile 15 arasi bir sayidir. 0 normal hali 11 bekleme hali vb. Bu zellige 99 degerini vererek kendi tasarladiginiz(ICO veya CUR dosyasindan) Bir kursr seebilirsiniz. Bu islem iin kendi tasarladiginiz kursrn bulundugu dosyanin adini mouseIcon zelligine girmeniz gerekir. RNEK: Asagidaki programi alistirarak Mouse seklini grebilirsiniz. Her text kutusuna tikladiginizda Mouse gstericinin sekli degisecek ve numarasi text kutusunda grlecektir. RNEK : MousePointer private Sub Text1_ click () static i text1.text=str(i) + numarali Mouse pointer text1.Mousepointer=i i=i+1 if i = 16 then End End Sub
199
Refresh: Form zerinde yapilan degisikliklerin aninda gsterilmesini saglar. Tabindex:Form zerinde kullanicinin ulasabilecegi bir nesnenin bir
tabindexi vardir. Tabindex kullanicinin tab dolasirken bu kontrollerin siralamasini belirler. tusuyla kontroller arasinda
200
Program alistiktan sonra kontrollerin zerinde fare ile kisa bir sre durursaniz,asagidaki gibi o kontrole ilgili aiklamayi gsteren bir kutu ailacaktir.
201
zelligini
Zorder: Bu method kullanildigi nesneyi en ne veya en arkaya getirmek iin kullanilir. Burada metodun 0 olmasi kontroln digerlerinin nne,1 olmasi arkasina getirilmesini saglar. 2-Textbox(metin kutusu): Bilgi girisi iin kullanilan bir kontroldr.
Programin alismasi veya tasarimi esnasinda metin,kullanici tarafindan degistirilebilmesinin yaninda kesme, kopyalama, yapistirma, asagi_yukari, saga_sola ilerleyebilme ve birden fazla satir girebilme gibi zelliklere de sahiptir.
202
Herhangi bir ala na baglanmasini saglar. Veri biimini belirler. Veritabanindaki baglanilacak tabloyu belirler. Srkleme olayinda farenin alacagi sekli belirler Srklemenin otomatik ,manual olmasini saglar Clicklenebilirligini belirler.ture click olayi alisir. Yazi tipini belirtir. Yazi rengini belirler. Nesnenin yksekligini belirler. Yardim dosyasindaki konu numarasi belirlenir. Seilen kismin gizlenmesini saglar. Indexli kullanimda indexini belirtir. Sola hizasini belirler.
Veri girisine imkan verilip verilmemesini belirtir. Maximum karakter sayisini belirler. Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler. Birden fazla satir girisine izin verilmesini belirtir Verileri belirlenen karakter olarak gsterir. Scroll barlarin nerede ikacagini belirler. Kainci TABda kendine ulasacagini belirler. True;tab tusu ile ulasir.False tab ile ulasamaz. Herhangi bir mesaj saklamak iin kullanilir.
203
TEXTBOX NESNESININ BAZI NEMLI OLAYLARI 1. Private Sub Text1_Change():Olay Text zelliginin ierigi
degistiginde alisir.
4. Private Sub Text1_DragDrop(Source As Control, X As Single, Y As Single):Olay srkleme olayi metin kutusunda bittiginde
alisir.Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y mouseun koordinat degerlerini verir.
8. Private Sub Text1_KeyDown(Key Code As Integer, Shift As Integer):Olay veri giris esnasinda klavyenin tusuna basildigi an
alisir.KeyCode klavyeden basilan tusun degerini tasir.Shift Ctrl, Alt ve Shift tuslarina karsilik deger retir.Bunlar:1-Shift, 2-Ctrl ve 4-Alt
204
10. Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer):Olay KeyPress olayindan sonra, klavyede basilan tus
birakildiktan sonra alisir.
kutusu zerine Mouseun herhangi bir tusu ile clicklendiginde alisir.Button basilan tusun degerini verir.Shift ise Mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouseun bulundugu koordinatlarini verir.
13. Private sub Text1_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single):Metin kutusu
zerindeyken alisir.
14. Private Sub Text1_MouseUp(Button As Integer, Shift As Integer,X As Single, Y As Single):Mouse tuslari birakildigi anda
alisir.
TEXTBOX NESNESININ METHOTLARI Aligment:Yazinin sola saga veya ortaya yazilmasini saglar. Appearance:Bu zellik kontroln boyutlu grnmn ayarlar. Backstyle: Nesnenin zerinde bulundugu konuma uymasini saglar. Borderstyle:Nesnenin ekran zerindeki sinirlarinin ereve seklini belirler. Caption: Grnecek yazidir.
205
bir numarasi vardir. Windows bu numarayi kullanarak kontrolleri tanir. Visual basicte bu numara nesnenin hWnd zelligi ile programin alismasi esnasinda grenilebilir. hWnd zelligi genellikle Windows API agrilarinda gereklidir.
206
SelLength,selstart:Windows
altinda bir ok islem iin bloklama (seme)yapmak gerektigini biliyorsunuz. Kullanici text kutularinda seme islemi yapabilir.Kullanicinin setigi kismi grenmek iin bu ikili zellik kullanilabilir.Ayrica bu iki zelligi kullanarak siz de program kodu ile seme islemini yaptirabilirsiniz. Bu zellikler semenin text iinde baslayacagi konumu ve uzunlugunu belirler. rnegin ilk 3 harfi setirmek iin asagidaki satirlar kullanilabilir. Text1.selstart=0 Text1.sellength=3 Tmn setirmek iin ise asagidaki satirlar kullanilabilir. Text1.selstart=0 Text1.sellength=len(text1)_1
SelText:Seilmis
metin bu zellikle grenilip degistirilebilir.Seltext zelligine yapilan atamalarda,eger seilmis bir kisim varsa o kisim silinir,yoksa kursrn bulundugu noktaya sikistirir. Text1.seltext=merhaba Satiri ile text 1 iinde seilmis olan kismin yerine merhaba yazilacaktir.
nesneye setfocus metodunu uygulayabilmek iin o nesnenin enabled zelliginin True olmasi gerekir. Aksi taktirde hata olusacaktir. Bu zellik daha kolay kullanilabilir arabirimler olusturmak iin faydalidir.
Tabstop:True ise kullanici bu nesneye tab tusu ile olusabilir. False ise tab
tusuyla bu kontrol zerine gelinmez ,Mouse ile yazilim yoluyla veya varsa kisayol tusu ile gelebilir. Yogun bilgi girisi gerektiren formlarda sik kullanilmayacak kontrollerin tabstop zelliklerini false yaparsaniz kullanicinin bilgi girisi daha kolay olacaktir.nk genelde yogun bilgi girisi olan yerlerde tab tusu sik kullanilir.Gereksiz yere ekrandaki btn kontrolleri dolasmamak iin bazilarinin bu zelligini false yapmak gerekir.
207
Enterde click olayinin alismasini saglar. Kullanilamaz iken resmin ne olacagini belirler. Butona basilmasi resmin ne olacagini belirtir. Srklemede farenin alacagi sekli belirtir. Srklemenin otomatik,manual olmasini saglar, Cliclenebilirligini belirtir. Yazi tipini belirler. Nesnenin yksekligini belirler. Yardim dosyasindaki konu numarasi belirlenir. Indexli kullanimda indexini belirler. Sola hizasini belirler. Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler. Butonun gsterecegi resmi belirler. Butonun resim alip almayacagini belirler. Kainci tab da kendine ulasacagini belirler. TAB ile seilmesi sonlandirilir. Herhangi bir mesaj saklamak iin kullanilir. Nesne zerinde mesaj verdirmek iin kullanilir. stten hizasini belirler. Formda grnp grnmeyecegini belirler. Nesnenin genisligini belirtir.
208
2. Private Sub Command1_DragDrop (Source As Control, X As Single, Y As Single):Olay srkleme olayi butonda bittiginde
alisir.Source srkleme olayinin basladigi nesneyi temsil eder.X ve Y Mouseun koordinat degerlerini verir.
5. Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer):Olay klavyenin tusuna basildigi an alisir.KeyCode
Klavyeden basilan tusun degerini tasir.Shift Ctrl, Alt ve Shift tuslarina karsilik deger retir.Bunlar: 1-Shift, 2-Ctrl ve 4-Alt degerleridir.Beraber basildiklarinda gelen deger toplamlarindan olusur. rnegin Ctrl +Alt=6 dir.
6. Private Sub Command1_KeyPress(KeyAscii As Integer):Olay KeyDown olayindan sonra alisir.KeyAscii Klavyeden basilan
tuslarin ASCII karsiligini verir.
7. Private Sub Command1_KeyUp(KeyCode As Integer Shift As Integer):Olay KeyPress olayindan sonra, Klavyeden basilan tus
birakildiktan sonra alisir.
209
11. Private Sub Command1_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single):Mouseun tuslari
birakildigi anda alisir.
COMMANT BUTTON NESNESININ METODLARI Cancel: Default zelligine benzer.ESC tusu ile aktif hale gelir.cancel zelligi
True olan bir komut dgmesinin bulundugu formda ESC tusuna basilmasiyla bu komut dgmesi aktif yapilmis olur.
DisabledPicture
belirlenen
resim
komut
dgmesinin
210
211
CHECKBOX NESNESININ BAZI NEMLI OLAYLARI 1. Private Sub Check1_Click():Olay isaret kutusuna Mouseun sol
tusuna basildiginda alisir.
2. Privte Sub Check1-DragDrop(Source As Control, X As Single Y As Single): Olay srkleme olayi checkbox da bittiginde alisir.
Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y mouseun koordinat degerlerini verir.
3. Private Sub Check1_DragOver(Source As Control, X As Single, Y As Single, State As Integer):Olay srkleme esnasinda
Mouse nesne zerinden geerken alisir. State ise srkleme olayinin hangi asamada oldugu degerini verir.State zelligi 3 deger tasir.
5. Private Sub Check1_ Keydown (keycode Integer,Shift As Integer): Olay klavyenin tusuna basildigi an alisir. Keycode klavyeden
basilan tusun degerini tasir. Shift Ctrl,Alt ve shift tuslarina karsilik deger retir. Bunlar:1-Shift,2-Ctrl ve 4-Alt degerleridir.Beraber basildiklarinda gelen deger toplamlarindan olusur.rnegin Ctrl+Alt=6 dir.
6. Private Sub Chenck1_Keypress(KeyAscii As Integer):Olay keydown olayindan sonra alisir.KeyAscii basilan tuslarin
ASCII karsiligini verir.
212
9. Private Sub Chenck1_MouseDown(Button As Integer, Shift As Integer,X As Single Y As Single):Check Box nesnesi
zerinde mouseun herhangi bir tusu ile clicklendiginde alisir. Button basilan tusun degerini verir. Shift ise mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouse un bulundugu koordinatlarini verir.
10. Private Sub Chenck1_MouseMove (Button As Integer,Shift As Integer,X As Single Y As Single):Chenk Box
nesnesi zerinde mouse hareket ettirildiginde alisir.
11. Private Sub Chenk1_MouseUp(Button As Integer, Shift As Integer, X As Single Y As Single):Mousenin tuslari
birakildigi anda alisir.
CHECKBOX NESNESININ METHOTLARI Aligment:Yazinin sola saga veya ortaya yazilmasini saglar. Appearance:Bu zellik kontroln boyutlu grnmn ayarlar. Backstyle: Nesnenin zerinde bulundugu konuma uymasini saglar. Borderstyle:Nesnenin ekran zerindeki sinirlarinin ereve seklini belirler. Caption: Grnecek yazidir. index: Ayni isimli birden ok nesne olusturulmussa VB bu nesneleri bir dizi
olarak grr. Index parametresi bu nesnenin dizideki kainci eleman oldugunu belirler,bu nesneye bu dizi indexiyle ulasilir. Index zelligine bir sayi verilmisse o kontrole isminden sonra bu sayi verilerek ulasilabilir. rnegin index zelligi 2 olan bir text kutusunun text zelligine Text1(2).text Satiri ile ulasilabilir.
213
0 :isaretsiz 1 :isaretli 2 :belirsiz ilk iki deger kullanici tarafindan kontrol tiklanarak degistirilebilir.nc deger ise belirsizlik degerini gsterir ve program tarafindan bu d urum aktif hale getirilebilir. Belirsizlik,valuenin degerinin 2 olmasiyla ilgili degildir.Sadece o kontroln ifade ettigi degerin belirsiz oldugunu gsterir.
214
Clicklenebilirligini belirler. Yazi tipini belirler. Aiklama yazisinin rengini belirler. Nesnenin yksekligini belirler. Indexli kullanimda indexini belirler. Sola hizasini belirler. Nesnede hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler. zerinde grnecek yaziyi belirler. Kontrolde resim alip almayacagini belirler. Kainci TAB da kendine ulasacagini belirler. TAB ile seilmesi sonlandirilir. Herhangi bir mesaj saklamak iin kullanilir. Nesnede mesaj verdirmek iin kullanilir. stten hizasini belirler.
Isaret kutusunun seili olup olmadigini belirler.
215
3. Private Sub Option1_DragDrop(source As Control ,X As Single, Y As Single): Olay srkleme olayi Option Button da bittiginde
alisir. Source srkleme olayinin basladigi nesneyi temsil eder. X ve Y mouse un koordinat degerlerini verir.
4. Private Sub Option1_DragOver(Source As Control, X As Single, Y As Single, State As Integer) : Olay srkleme
esnasinda mouse nesne zerinden geerken alisir. State ise srkleme olayinin hangi asamada oldugu degerini verir. State zelligi 3 deger tasir.
6. Private Sub Option1_KeyDown(KeyCode As Integer, Shift As Integer): Olay klavyenin tusuna basildigi an alisir. KeyCode
klavyeden basilan tusun degerini tasir. Shift Ctrl, Alt ve Shift tuslarina karsilik deger retir. Bunlar: 1-Shift, 2-Ctrl ve 4- Alt degerleridir. Beraber basildiklarinda gelen toplamlarindan olusur. rnegin Ctrl+Alt=6 dir.
8. Private Sub Option1_KeyUp(KeyCode As Integer, Shift As Integer ): Olay KeyPress olayindan sonra ,Klavyeden basilan tus
birakildiktan sonra alisir.
216
10. Private Sub Option1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single): Option Button
nesnesi zerine mouse un herhangi bir tusu ile clicklendiginde alisir. Button basilan tusun degerini verir. Shift ise mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouse un bulundugu koordinatlarini verir.
11. Private Sub Option1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single): Option Button
nesnesi zerinde mouse hareket ettirildiginde alisir.
12. Private Sub Option1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single): Mouse un tuslari
birakildigi anda alisir.
OPTION BUTTON NESNESININ METHOTLARI Visible:True ise nesne grlr,false yapilirsa grlmez belli sartlar
gereklestiginde kullanabilirsiniz. gzkmesini istediginiz kontrollerin visible
zelligini
Zorder: Bu metod kullanildigi nesneyi en ne veya en arkaya getirmek iin kullanilir. Burada metodun 0 olmasi kontroln digerlerinin nne,1 olmasi arkasina getirilmesini saglar. Enabled: Clicklenebilirligini belirtir true ise click olayinda alisir. parent: Nesnenin zerinde bulundugu forma ulasmayi saglar.nesnenin
isminden sonra verilen parent bulundugu formu temsil eder. komutu o nesneyi degil nesnenin zerinde
Refresh: Form zerinde yapilan degisikliklerin aninda gsterilmesini saglar. Tabindex:Form zerinde kullanicinin ulasabilecegi bir nesnenin bir
tabindexi vardir. Tabindex kullanicinin tab dolasirken bu kontrollerin siralamasini belirler. tusuyla kontroller arasinda
217
bir numarasi vardir. Windows bu numarayi kullanarak kontrolleri tanir. Visual basicte bu numara nesnenin hWnd zelligi ile programin alismasi esnasinda grenilebilir. hWnd zelligi genellikle Windows API agrilarinda gereklidir.
6-Frame control(ereve):
Bu kontrol tek basina degil ,diger kontrolleri gruplamak iin kullanilir. Bir ereve iine konan kontroller ereveye baglidirlar ve konumlari bu er eve disina tasamaz.zellikle birka kontrol birden grnr veya grnmez yapmak iin hepsinin visiple zelligini tek tek degistirmek yerine erevenin visible zelligi degistirilerek ereve iindeki tm kontroller ayni anda grnmez yapilabilir.
218
Clicklenebilirligini belirler. Yazi tipini belirler. Aiklama yazisinin rengini belirler. Nesnenin yksekligini belirler. Indexli kullanimda indexini belirler. Sola hizasini belirler. Nesne zerinde hangi resmi alacagini belirler Nesnede hangi sekli alacagini belirler. Kainci TAB da kendine ulasacagini belirler. Herhangi bir mesaj saklamak iindir Nesne de mesaj verdirmek iin kullanilir. stten hizasini belirler. Formda grnp grnmeyecegini belirler. Nesnenin genisligini belirler.
FRAME NESNESININ NEMLI OLAYLARI 1. Private Sub Frame_Click():Olay metin kutusuna mouseun sol
tusuna basildiginda alisir.
219
alisir.Source srkleme olayinin basladigi nesneyi temsil eder.X ve Y mouseun koordinat degerlerini verir.
4. Private Sub Frame _DragOver(Source As Control, X As Single, Y As Single,State As Integer):Olay srkleme esnasinda
Mouse nesne zerinden geerken alisir.State ise srkleme olayinin hangi asamada oldugu degerini verir.State zelligi deger tasir.
5. Private Integer,Shift
kutusu zerine Mouseun herhangi bir tusu ile clicklendiginde alisir.Button basilan tusun degerini verir.Shift ise Mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mo useun bulundugu koordinatlarini verir.
6. Private sub Frame _MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single):Metin kutusu
zerindeyken alisir.
7. Private Sub Frame _MouseUp(Button As Integer, Shift As Integer,X As Single, Y As Single):Mouse tuslari birakildigi anda
alisir.
FRAME NESNESININ METODLARI Aligment:Yazinin sola saga veya ortaya yazilmasini saglar. Appearance:Bu zellik kontroln boyutlu grnmn ayarlar. Autosize:
Nesnenin boyutlari ieriginin boyutlarina gre yeniden ayarlanacaktir.
digitlik bir hexadesimal sayidir.(0 ile&HFFFFFFF arasinda) en dsk iki dijit kirmizi,sonraki iki dijit yesil,ve diger iki digit mavi rengin yogunlugunu gsterir.Bu ikili dijitlerin dsk degerde olmalari rengin koyulugunu saglar.en yksek seviyeli dijitin rengi 0 degilse windowsun system renklerinin kullanilacagini gsterir.Properties penceresinde olmayan renkler,bu dijitler ayarlanarak elde edilebilir. Kullanilabilecek renk sayisi 16.777.216 renktir. rnegin aik tonlu yesili elde etmek iin &H100FF00 degeri kullanilir.
220
Enabled: Clicklenebilirligini belirtir true ise click olayinda alisir. Font:VBnin 5.0versiyonu ile btn font zelliklerini bir arada bulunduran ve
tek seferde hepsini birden belirtmeye yarayan font nesnesi tanimlanmistir.Bu nesnenin alt zellikleriyle tek tek ayarlama yapilabilecegi gibi tek seferde de baska bir font nesnesinin btn zellikleri atanabilir.
bir numarasi vardir. Windows bu numarayi kullanarak kontrolleri tanir. Visual basicte bu numara nesnenin hWnd zelligi ile programin alismasi esnasinda grenilebilir. hWnd zelligi genellikle Windows API agrilarinda gereklidir.
7-PictureBox(resim kutusu):
221
Clicklenebilirligini belirler.
Kutularin I boyama rengini ve desenini belirler.
Nesnenin iindeki izgilerin seklini belirler. Yazi tipini belirler. Yazi altinda resim yazi varsa bunu gsterir. Aiklama yazisinin rengini belirler. Nesnenin yksekligini belirler.
Yardim dosyasindaki konu numarasini belirler. Indexli kullanimda indexini belirler. Sola hizasini belirler.
Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler.
222
zerinde grnecek resmi belirler. izim yapilacak blgenin yksekligini belirler. izim yapilacak blgenin sola hizasini belirler.
izim yapilacak blgenin stten hizasini belirler.
izim yapilacak blgenin genisligini belirler. Kainci TAB da kendine ulasacagini belirler. TAB ile seilmesi sonlandirilir. Herhangi bir mesaj saklamak iin kullanilir. Mesaj verdirmek iin kullanilir. Nesnenin stten hizasini belirler. Formda grnp grnmeyecegini belirler. Nesnenin genisligini belirler.
PICTUREBOX NESNESINI BAZI NEMLI OLAYLARI 1. Private Sub Picture1_Click():Olay Mouseun sol tusu ile forma
cliklendiginde alisir.
3. Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single):Olay srkleme olayi metin kutusunda bittiginde
alisir.Source srkleme olayinin basladigi nesneyi temsil eder.X ve Y mouseun koordinat degerlerini verir.
6. Private Sub Picture1_GotFocus(): Olay, nesne aktif nesne oldugunda alisir. Clicklendiginde ve TAB tusuyla seildiginde aktif nesne olur
223
9. Private Sub Picture 1_KeyUp(KeyCode As Integer, Shift As Integer ): Olay KeyPress olayindan sonra ,Klavyeden basilan tus
birakildiktan sonra alisir.
11. Private Sub Picture 1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single): PictureBox nesnesi
zerine mouseun herhangi bir tusu ile clicklendiginde alisir. Button basilan tusun degerini verir. Shift ise mouse ile birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouse un bulundugu koordinatlarini verir.
12. Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single): PictureBox nesnesi
zerinde mouse hareket ettirildiginde alisir.
13. Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single): Mouse un tuslari
birakildigi anda alisir.
15.
Private sub picture1_resize():Formun genisliginin veya yksekliginin degismesi ayrica formun minimize edilmesi bu olayi meydana getirir.
224
Autoredraw:Nesnenin
yenilenmesi saglanir.
hDC: Bir handle numarasidir. Ancak zel bir numaradir. Handle numarasi
Windows tarafinda verilen herhangi bir numaradir ve o kontrol yok edilene kadar aynidir. Bu numara Windows uygulanmalari ile Device,Driver arasinda bir baglanti kurar. Bu numara APIlerde de kullanilir.
Image:sadece
okunabilir bir zelliktir. Picture kontrol iine methodslar(print,line,circle gibi)kullanilarak yapilan yazim ve izimleri temsil eder.
225
resmin sol st kse koordinatlari ve kaynak genislik, kaynak ykseklik parametreleriylede boyutlari belirlenir. Hedefx, hedefy, hedef genislik,hedefykseklik parametreleri ile de islenmis resmin gsterilecegi kontroldeki koordinantlari ve boyutlari belirlenir.
ScaleHeight,
ScaleWidth: izimin yapilacagi blgenin genisligini belirler.Bu method nesne iinde picture zelligi ile yklenen resmi etkilemez. Sadece nesnenin methodlariyla yapilmis yazim ve izimleri etkiler. ScaleLeft, ScaleTop:izimi yapilacagi blgenin koordinatlarini belirler.
Default olarak 0,0 dir,yani yapilacak izimler nesnenin sol st ksesi orjin olmak zere yapilir. Pozitif degerler orjini sol yukari tasirken negatif degerler sag asagi tasir.
8-COMBOBOX:
Asagi dogru ailabilen bir liste kontroldr. Genellikle, degerleri daha nceden belli olan elemanlarin seimi iin kullanilirlar. Liste kutusuna benzer ancak listedeki elemanlardan sadece seileni ekranda grntler.
226
Seili nesnenin ismidir. Formdaki grntsn belirler Arka zemin rengini belirler Validate olayinin alismasini belirler Veritabaninin bir alana baglanmasini saglar Veri biimini belirler Veritabaninda baglanacak tabloyu belirler Srklemede farenin alacagi sekli belirtir Srkleme olayinda mousenin seklini belirler Clicklenebilirligini belirler Yazi tipini belirler Yazi rengini belirler Nesnenin yksekligini belirler Yardim dosyasindaki konu numarasi belirlenir Indexi belirler Elemanlar tam gsterilebilmek iin boyutlanir Veri tabani alanina seenek eklemek Sola hizayi belirler Listeye seenek eklemek Texte girisi yasaklar Mouseun nesne zerindeki resim
Seenekleri siraya dizer ComboBoxin alisma seklini belirler Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir Iine yazilacak metni belirler Gizli mesaj vermek iin kullanilir stten hizalama Nesnenin grnp grnmeyecegi Nesnenin genisligini belirler
227
Appearance:Bu zellik kontroln boyutlu grnmn ayarlar. Backcolor: Nesnenin zemin rengini degistirir. Bu zelligiolusturan deger 7
digitlik bir hexadesimal sayidir.(0 ile&HFFFFFFF arasinda) en dsk iki dijit kirmizi,sonraki iki dijit yesil,ve diger iki digit mavi rengin yogunlugunu gsterir.Bu ikili dijitlerin dsk degerde olmalari rengin koyulugunu saglar.En yksek seviyeli dijitin rengi 0 degilse windowsun system renklerinin kullanilacagini gsterir.Properties penceresinde olmayan renkler,bu dijitler ayarlanarak elde edilebilir.Kullanilabilecek renk sayisi 16.777.216 renktir.
Datafield:Veritabaninin herhangi bir alana baglanmasini saglar. Dataformat:Veritabanindaki bilgini formatini ayarlar. Datasource:Veri tabanindaki tablotu belirler. Dragicon:Srkleme olayinda fareninalacagi sekli belirler. Dragmode:Srkleme olayinin otomatik ve ya manual olacagini belirler. Enabled:Clicklenebilirligini belirtir,true ise click olayinda alisir. 228
tek seferde hepsini birden belirtmeye yarayan font nesnesi tanimlanmistir.Bu nesnenin alt zellikleriyle tek tek ayarlama yapilabilecegi gibi tek seferde de baska bir font nesnesinin btn zellikleri atanabilir.
Fontbold:True ise nesne iin kullanilan yaziyi koyu yapar. FontItalic:True ise nesne iin kullanilan yazi egik yapar. Fontname:Nesne iin kullanilan yazinin fontunu belirler.Bu font alisma
esnasinda sistemde degistitilebilir. bulunan bir fontun numarasi veya ismi verilerek
Fontstrikethru: True ise nesne iin kullanilan yazinin ortasini izer. Fontunderline: True ise nesne iin kullanilan yazinin altini izer. Fontcolor:Yazinin rengini belirler. Height,width:Nesnenin boyunu ve enini belirler. Bu zellik degistirilecek
kontroln boyutlari ayarlanabilir.
bir numarasi vardir. Windows bu numarayi kullanarak kontrolleri tanir. Visual basicte bu numara nesnenin hWnd zelligi ile programin alismasi esnasinda grenilebilir. hWnd zelligi genellikle Windows API agrilarinda gereklidir.
229
kordinantlar ekran kordinantlari olmayip iinde bulundugu nesneye bagli kordinantlardir.bir nesne form, Picturebox veya frame iinde bulunabilir. Iinde bulundugu nesnenin sol st kordinantlari 0,0 olmak zere left ve top bu noktaya olan uzakliktir. VBde l birimi olarak twip kullanilir.Ancak istenirse formun scalemode zelligi degistirilerek l birimi olarak piksel,veya metrik birimler verilebilir.
Mouseicon,pointer:Mouse
gstergesinin nesne zerine geldiginde alacagi sekli belirler.0 ile 15 arasi bir sayidir. 0 normal hali 11 bekleme hali vb. Bu zellige 99 degerini vererek kendi tasarladiginiz (ICO veya CUR dosyasindan) bir kursr seebilirsiniz. Bu islem iin kendi tasarladiginiz kursrn bulundugu dosyanin adini MouseIcon zelligine girmeniz gerekir.
230
Refresh:Form zerinde yapilan degisikliklerin aninda gsterilmesini saglar. RemovItem:Listeden istenilen elemani ikarmak iin kullanilir. Listeden
hangisi ikarilmak isteniyorsa onun index numarasi yazilir. rnek:Combo1.RemovItem 3 Listeden 4. elemani ikarmis olduk. nk index numaralari 0dan baslar.
SelLength,selstart:Windows
altinda bir ok islem iin bloklama (seme)yapmak gerektigini biliyorsunuz.Kullanici ComboBoxlarda seme islemi yapabilir.Kullanicinin setigi kismi grenmek iin bu ikili zellik kullanilabilir.Ayrica bu iki zelligi kullanarak siz de program kodu ile seme islemini yaptirabilirsiniz.
SetFocus: Nesnenin
etkin rnek:Combo1.SetFocus
konum
nceligine
sahip
olmasini
saglar.
sona degil alfabetik saraya yerlestirir. Ancak bu siralama islemi syilar zerinde dogru etki gstermez.
Style:Bu zellige 1 degeri verildiginde kullanici elemanlari isaretleyebilir. Tabindex:Form zerinde kullanicinin ulasabilecegibir nesnenin bir tabindexi
vardir. Tabindex kullanicinin tab tusuyla kontroller arasinda dolasirken bu kontrollerin siralamasni belirler.
231
olarak
Tabindex:Form
zerinde kullanicinin ulasabilecegi bir nesnenin bir tabindexi vardir. Tabindex kullanicinin tab tusuyla kontroller arasinda dolasirken bu kontrollerin siralamasni belirler.
zelligini
kullanilir.Burada metodun 0 olmasi kontroln digerlerinin nne,1 olmasi arkasina getirilmesini saglar.
COMBOBOXIN OLAYLARI
COMBOBOXin olaylari sunlardir:
232
Combo1_DragDrop(Source As Control, X As Single, Y As Single):Olay srkleme olayi metin kutusunda bittiginde alisir.Soruce
srkleme olayinin basladigi nesneyi temsil eder.X ve Y mouseun koordinat degerlerini verir.
Combo1_ DragOver(Source As Control, X As Single, Y As Single,State As Integer):Olay srkleme esnasinda Mouse nesne
zerinden geerken alisir.State ise srkleme olayinin hangi asamada oldugu degerini verir.State zelligi deger tasir.
Combo1_GotFocus():Form zerinde ComboBox aktif nesneyken alisir. Combo1_ KeyDown(Key Code As Integer, Shift As Integer):Olay veri giris esnasinda klavyenin tusuna basildigi an
alisir.KeyCode klavyeden basilan tusun degerini tasir.Shift Ctrl, Alt ve Shift tuslarina karsilik deger retir.Bunlar:1-Shift, 2-Ctrl ve 4-Alt degerleridir.Beraber basildiklarinda gelen deger toplamlarindan olusur.rnegin Ctrl+Alt=6dir.
Combo1_
KeyPress(KeyAsciiAs Integer):Olay veri girisi esnasinda KeyDown olayindan sonra alisir.KeyAscii klavyeden basilan tuslarin ASCII karsiligini verir. Combo1_ KeyUp(KeyCode As Integer,Shift As Integer):Olay
KeyPress olayindan sonra, klavyede basilan tus birakildiktan sonra alisir.
Combo1_LostFocus():ComboBox aktif olmadiginda alisir. Combo1_Scroll():Farkli liste elemani seildiginde yani liste elemanlari
degistiginde alisir.
Combo1_Validate(Cancel
As Integer):LostFocus olayindaki kontrol olayini yapmaya yarar. Eger nesnenin CausesValidadion zelligi True ise bu olaya yazdiginiz kod alisacak ve nesnenin ierigini kontrol edebilmenizi saglayacaktir. RNEK:Ierigi
kullanici tarafindan degistirilebilen ComboBoxlarda kullanicinin kutuya yazdigi deger listeye eklenmez. Listeye eklenmek isteniyorsa kod yazmak gereklidir.
233
234
LostFocus
olayinda yazdigimiz kodla anliyoruz. LostFocus olayini kullanmamizin sebebi kontrol ComboBoxtan gittigine gre yazilacak olan metninde bitmis olacagindandir. Burada ComboBox kutusunda yazili olanla (Combo1.Text) listedeki btn elemanlari karsilastiriyoruz,kutudaki yazi listede var ise bu yeni eklenmis bir sey degildir ve fonksiyondan ikariyoruz. Listede yok ise yeni girilmis birseydir ve bunu listeye ekliyoruz. Ayrica kullanicinin ComboBoxa yazdigi birseyi ESC ile iptal edebilmesi iin de KeyPress olayindaki kod ile kutunu iindeki yazi listedeki bir elemana esitlenmistir. ComboBoxlara kullanicin yazdiklarini ekleme k degisik yollarla da yapilabilir. Burada kullandigimiz yntem her zaman ise yaramayabilir. rnegin Comboboxta bir sey yazdiktan sonra menden bir seenegin seilmesi ComboBoxta LostFocus olayini gereklestirmeyecektir. Eger seilen mende ComboBoxin degerine ihtiya duyuyorsa dogru degeri alamayacaktir. Alternatif bir yntem olarak yalniz KeyPress olayini asagidaki gibi kullanabiliriz. Bu durumda ise kullanicinin listeye eklemek istedigi yeni degeri yazdiktan sonra Entere basmasi gerekir. Entere basmamasi durumunda listeye eklenmeyecektir.
235
9-LISTBOX:
Visual Basicin sagladigi dizilerinizi gsterebileceginiz kontrollerdendir. Elemanlari listelemek,siralamak gibi zellikler sunan genel amali bir kontroldr.
236
Seenekleri siraya dizer ComboBoxin alisma sitilini belirler Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir Gizli mesaj vermek iin kullanilir stten hizalama Nesnenin grnp grnmeyecegi Nesnenin genisligini belirler
237
0 ise:Liste kutusu tek stundur ve listenin ekranda grlen kisminin dolmasiyla listeye dikey scrollbar eklenir. 0 degilse:Listenin genisligi verilen sayida stuna blnr ve bir stunun dolmasiyla ikinci stuna geilir. Listenin grlen kismindaki stunlarin dolmasiyla listeye yatay scrollbar eklenir. Burada her kolonun genisligi listenin genisliginin verilen kolon sayisina oranidir. rnegin Columns=5 ve Witdth=3000 ise her kolonun genisligi 3000/5=600 olacaktir.
MultiSelect: Bu zellik bir kutu iinde birden fazla elemani seme imkani
verir. Iki degisik modu vardir. 0:Birden fazla eleman seimi yapilamaz. 1:Mouse ile tiklanan her eleman seilir veya seilmisse seilmisligi kaldirilir. 2:Bu modda Shift veya Ctrl tusu basili tutularak birden fazla seim yapilabilir. Bu zellik sadece tasarim zamaninda properties penceresinden degistirilebilir. alisma zamaninda yapilacak atama ile listenin MultiSelect zelligi degistirilemez. Bu zellik aktif hale getirilmisse seili olan elemanlari grenmek iin SelCount ve Selected zellikleri kullanilir.
birden fazla elemn seilebilecegi iin SelCount zelligi ile seili eleman sayisi,Selected(Index) zelligi ile de Index numarali elemanin seili olup olmadigi grenilebilir.
LISTBOXIN OLAYLARI
LISTBOXin farkli olaylari sunlardir:
List1_MouseDown(Button As Integer,Shift As Integer X As Single, Y As Single):ListBox zerine Mouseun herhangi bir tusu ile clicklendiginde alisir.Button basilan tusun degerini verir.Shift ise mousela birlikte klavyeden basilan tusun degerini verir. X ve Y ise mouseun bulundugu koordinatlarini verir. List 1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single):Mouse etiket zerindeyken alisir. 238
rnegimizde:Ekle dgmesi (Command1) ile Text kutularina girilenleri ayri ayri listelerin sonuna ekleyecegiz. Sil dgmesi (Command2) ile Listeden seilen personeli silecegiz. Bul dgmesi (Command3) ile Text1e ismi girilen elemani listede bulup seecegiz. Degistir dgmesi (command4) ile listede seilen elemani Text kutularina girilen yeni degerlerle degistirecegiz. Araya Ekle dgmesi (Command5) ile Text kutularina girilen personeli,Listede sein personelin nne ekleyecegiz. Listelerden birinde seilen elemanin diger listelerde de seilmesi iin ListBoxlarin Click olaylari araciligi ile ListIndex zelliklerinin,seilen listedeki ile ayni olmasini saglayacagiz. Ve programdan ikarken listeleri kaydedip girerkende ykleyecegiz.
239
240
241
242
10-H.SCROLLBAR:
Yatay olarak saga sola oklarin alismasini saglar.
243
H.SCROLLIN METOTLARI
H.SCROLLin farkli methotlari sunlardir:
Max,Min:Kaydirma ubugunun alabilecegi maximum ve minimum degerdir. SmallChange:Kaydirma ubugunu iki kenarindaki oklarla H.Scrollun
nekadarlik bir degisime tabi tutulacagini belirler.
244
H.Scroll1_DragDrop(Source As Control, X As Single, Y As Single):Olay srkleme olayi metin kutusunda bittiginde alisir.Soruce srkleme olayinin basladigi nesneyi temsil eder.X ve Y mouseun koordinat degerlerini verir. H.Scroll1_DragOver(Source As Control, X As Single, Y As Single,State As Integer):Olay srkleme esnasinda Mouse nesne zerinden geerken alisir.State ise srkleme olayinin hangi asamada oldugu degerini verir.State zelligi deger tasir. H.Scroll1_GotFocus():Form zerinde nesne aktif nesneyken alisir. H.Scroll1_KeyDown(Key Code As Integer, Shift As Integer):Olay veri giris esnasinda klavyenin tusuna basildigi an alisir.KeyCode klavyeden basilan tusun degerini tasir.Shift Ctrl, Alt ve Shift tuslarina karsilik deger retir.Bunlar:1-Shift, 2 -Ctrl ve 4-Alt degerleridir.Beraber basildiklarinda gelen deger toplamlarindan olusur.rnegin Ctrl+Alt=6dir. H.Scroll1_KeyPress(KeyAsciiAs Integer):Olay veri girisi esnasinda KeyDown olayindan sonra alisir.KeyAscii klavyeden basilan tuslarin ASCii karsiligi ni verir. H.Scroll1_KeyUp(KeyCode As Integer,Shift As Integer):Olay KeyPress olayindan sonra, klavyede basilan tus birakildiktan sonra alisir. 245
246
Max,Min:Kaydirma ubugunun alabilecegi maximum ve minimum degerdir. SmallChange:Kaydirma ubugunu iki kenarindaki oklarla H.Scrollun
nekadarlik bir degisime tabi tutulacagini belirler.
V.SCROLLIN OLAYLARI
V.SCROLLin farkli olaylari sunlardir:
V.Scroll1_DragDrop(Source As Control, X As Single, Y As Single):Olay srkleme olayi metin kutusunda bittiginde alisir.Soruce srkleme olayinin basladigi nesneyi temsil eder.X ve Y mouseun koordinat degerlerini verir. V.Scroll1_DragOver(Source As Control, X As Single, Y As Single,State As Integer):Olay srkleme esnasinda Mouse nesne zerinden geerken alisir.State ise srkleme olayinin hangi asamada oldugu degerini verir.State zelligi deger tasir. V.Scroll1_GotFocus():Form zerinde nesne aktif nesneyken alisir. V.Scroll1_KeyDown(Key Code As Integer, Shift As Integer):Olay veri giris esnasinda klavyenin tusuna basildigi an 247
248
TIMERIN METOTLARI
TIMERin methotlari sunlardir:
Interval:Timer
olayinin gereklesecegi milisaniye cinsinden zaman periyodudur. Alabilecegi degerler 1-65535 arasidir. 0 degeri Timeri pasif hale getirir.
TIMERIN OLAYLARI
TIMERin olayi sundur:
13-DRIVELISTBOX:
Sistemde bulunan srcleri listelemeye yarayan,ComboBox kontrolnden tremis bir kontrol elemanidir. Bunun vasitasiyla programin alismasi esnesinda istenilen src seimi yapilir. Bu seim srcye geisi saglamaz.
249
250
DRIVELISTBOXIN METOTLARI
DRIVELISTBOXin farkli methotu sudur:
veya degistirilebilir. Drive zelliginin gsterdigi deger disket srcler iin src harfi ve : isareti iken,harddisk srclerde buna src etiketide dahildir.
DRIVELISTBOXIN OLAYLARI
DRIVELISTBOXin farkli olayi sudur:
DriveListBox1_Change():Kontrolden bir src seilmesi ile bu olay meydana gelir. Src seimi yapildiginda yapilmasi gereken kod buraya yazilmalidir. 14-FILELISTBOX:
Herhangibir dizindekidosyalari tremis bir kontrol elemanidir. listelemeye yarayan,ListBox kontrolnden
251
Formdaki grntsn belirler Arsiv dosyalarinin grntlenmesi Arka zemin rengini belirler Validate olayinin alismasini belirler Srkleme olayinda mousenin seklini belirler Srkleme olayinin nasil olacagini belirler Clicklenebilirligini belirler Yazi tipini belirler Yazi rengini belirler Nesnenin yksekligini belirler Yardim dosyasindaki konu numarasi belirlenir Sakli dosyalarin grntlenmesi Indexi belirler Sola hizayi belirler Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil Listeden birka seenek semeyi saglar Normal dosyalarin grntlenmesi
Listelenece dosyalar filtrelenir Sadece okunur dosyalar grntlenir Sistem dosyalari grntlenir. Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir Gizli mesaj vermek iin kullanilir
FILELISTBOXIN METOTLARI
FILELISTBOXin farkli methotlari sunlardir:
Archive,Hidden,Normal,ReadOnly,System: Bu
zellikler kullanilarak dosya listeleme kutusunda Arsiv,Sakli,Sadece Okunur,Normal ve System zelliklerine sahip dosyalarin grntlenmesi veya grntlenmemesi
252
FILELISTBOXIN OLAYLARI
FILELISTBOXin farkli olaylari sunlardir: FileListBox1_PathChange():Bu olay Path zelliginin degistirilmesi sonucu meydana gelir. Yani FileListBox farkli bir yeri gstermeye basladiginda meydana gelir.
FileListBox1_PatternChange():Bu
olay Pattern zelliginin degistirilmesi sonucu meydana gelir. Yani FileListBox farkli trlerdeki dosyalari listelemeye basladiginda bu olay meydana gelir.
253
Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir Gizli mesaj vermek iin kullanilir stten hizalama Nesnenin grnp grnmeyecegi Nesnenin genisligini belirler
DIRLISTBOXIN METOTLARI
DIRLISTBOXin farkli methotu sudur:
DIRLISTBOXIN OLAYLARI
DIRLISTBOXin farkli olayi sudur:
254
Shape:Shape kontrolnn izecegi sekli belirler. 0-5 arasi bir deger alabilir.
0:Dikdrtgen 1:Kare 2:Elips 3:ember 4:Oval dikdrtgen 5:Oval kare
255
BorderStyle
0 1 2 3 4 5 6
ereve Biimi
Zemin rengiyle uyumlu,grlmez Solid (tam ereve) Dash (izgi) Dot (nokta) Dash dot (izgi,nokta) Dash dot dot (Izgi,nokta,nokta) Inside solid (sekil ile eereve kenarlari akisik) BorderColor: Bu zellik nesnenin ereve rengini belirler. BorderWidth:Bu zellik ereve kalinligini ifade eder.1 ile 8192 arasindaki degerleri alabilir.BorderStyle zelliginin sadece 1-Solid ve 6-Inside solid biimlerindeyken etkisi grlr. FillColor:Seklin i boyama rengini belirler.
Boyama Sekli
Tam Dolu zerinde bulundugu nesnenin zemin rengi Yatay izgili Dikey izgili Sola Egik Saga Egik Kareli apraz
BackStyle:Bu zellik nesnenin arka zemin seklini belirler. RNEK:Asagida verilen rnekte Timer araciligiyla her 1snde bir sekil
izdirilmektedir. Bu olay programa eklenen bir kodla srekli tekrarlatilmaktadir. Programda dikey kaydirma ubugu,Shape ve Timer kullanildi. Private Sub Form_Load () Shape1.BorderStyle = 1 Shape1.BorderWidth = 5 izgi kalinligi 5 Timer1.Interval = 1000 VScroll1.Min = 0 VScroll1.Max = 5 End Sub
256
17-LINE:
Bu kontrol elemani form zerine bir izgi seklinde alinir. Alinan bu izgiyi yatay,dikey ve egik bir biimde gstermek,istenilen boyuta getirmek mmkndr.
257
LINEIN METOTLARI
LINEin farkli methotu sudur:
18-Image Kontrol
Bu eleman grafiksel bir kontrol elemani olup resimleri grntlemek, boyutlandirmak ve tasimak iin kullanilir. PictureBox dan daha hizli ve daha az sistem kaynagi kullanmasina ragmen PictureBox kadar gelismis zelliklere sahip degildir. PictureBox dan farkli olarak gruplandirma yapamaz ve metodlari kullanilarak yazim ve izim yapamaz.
258
Nesnenin programdaki ismini belirler. Nesnenin formdaki grnsn belirler. Nesneye ait erevenin tipini belirler. Nesnenin veritabanindaki alanini belirler. Veri biimini belirler. Daha nceden baglanilan alan varsa bulur. Nesnenin bagli oldugu datanin adini belirtir. (Drag/Drop) Srkle birak islemi sirasinda olusacak fare imlecini belirler. Srkle/birak isleminin otomatik mi yoksa el yordami ile mi gereklestirilecegini belirler. Nesnenin aktif olup olmadigini belirler. Nesnenin boyunu belirler. Ayni ad altinda toplanan dizi nesnelerin indekslerini gsterir. Nesnenin sol hizasini belirler. Fare imlecini belirler. Nesne zerindeyken farenin alacagi imleci belirler.
Nesne iindeki resmi belirler. Resmi nesne boyutuna gelip gelmeyecegini belirler. Nesne iin gerekli olan ek metin bilgisini ierir. Fare nesne zerindeyken verilecek mesaji belirler. Nesnenin form zerinde st hizasini belirler. Nesnenin form zerinde grnrlgn belirler. Bu nedir? sorusunun referansi olan yardim dosyasina ait numarayi ierir. Nesnenin genisligini belirler.
259
260
Left
: Nesnenin, zerinde bulundugu nesneden yatay olarak ne kadar uzakta oldugunu gsterir. Bu zellik, daima nesnenin sol kenarina bagli x koordinatini verir.
rnek: Image1.Left = 360
farenin programci tarafindan tanimlayacagi zel bir imleci gsterecegini yansitir. rnek : Image1.MouseIcon = LoadPicture (c:\...)
261
262
Image Events (Olaylar) Private Sub Image1_Click ( ) : Olay image nesnesi zerine fare ile
bir kere tiklandiginda gereklesir.
263
zerinde farenin herhangi bir butonuna tiklanmasiyla gereklesir. Private Sub Image1_MouseMove ( ) : Olay farenin nesne zerinde gezindigi tm sre boyunca gereklesir. LostFocus olayi ile bu olay geerliligini yitirir.
19-OLE Kontrol
OLE teknolojisini destekleyen iki program arasinda baglanti kurmayi saglar. Baglantinin sonucunda veri transferi yapmak ya da verileri kullanmak mmkn olmaktadir. OLE nesnesini form zerine aldiginizda standart OLE diyalog kutusu karsimiza otomatik olarak ikacaktir.
264
Bu pencerede OLE yi destekleyen programlarin listesi yer almaktadir. Buradan herhangi birisi seildigi zaman o programla direkt baglanti kurularak programin kaynagina ulasilir. Bu listedeki OLE yi destekleyen programlardan biri seilerek o uygulama ile baglanti kurulabilecegi gibi Dosyadan Yarat dgmesi kullanilarak da daha nce kaydedilmis bir dosya ile baglanti kurulabilir. OLE islemlerinde bir nesne iki trl olabilir. Bunlar Linked (Baglantili) ve Embedded (Gml) olarak adlandirilir. Linked olarak kurulan baglantilarda uygulama ile nesne arasinda paylasilacak veri alinir. Embedded olarak kurulan iliskilerde ise nesnenin paylasilacak verisi ile birlikte onu aip dzenleyecek kodda alinir. Linked olarak kurulan baglantilarda sadece veri alindigi iin daha az yer kaplayacaktir ancak bu tip baglantilarla olusturulmus dosyalarin baska bilgisayara gtrlmesi durumunda orada da alisacagi garanti edilemez. nk baglantinin kuruldugu program o bilgisayarda bulunmayabilir. Embedded olarak iliski kuruldugunda ise veri ile birlikte programi dzenleyecek kodda nesneye dahil oldugu iin bu tip dosyalar rahatlikla diger bilgisayarlarda gtrlp alistirilabilir. Embedded olarak kaydedilen OLE dosyalari Linked olanlara gre daha ok yer kaplayacaktir.
265
Programda kullanilan ismini belirler . Nesnenin grns ile ilgili zellikler belirlenir Nesnenin aktif hale gelmesi iin kullanacagi metodu belirler OLE yi destekleyen uygulamalarin Verb menlerini belirler. Nesnenin zemininin rengini belirler. Nesnenin arka stilini belirler. Nesneye ait erevenin tipini belirler. Nesnenin sinifi belirlenir. Data nesnesine bagli bir kontroln, veritabani dosyasindaki hangi alana bagli oldugunu gsterir. Nesnenin bagli oldugu data kontrolnn adini ierir. Nesnenin gsterim sekli belirlenir. Srkle/birak islemi sirasinda farenin hangi imleci alacagini belirler. Srkle birak isleminin el yordami ile mi yoksa otomatik olarak mi gereklestirilecegini belirler Nesnenin etkin olup olmadigini belirler. Nesnenin boyunu belirler. Ierik bagimli yardim dosyalari iin, iliski kurulmasi istenen baslik numarasini ierir. Nesnenin hangi program tarafindan aildigini belirtmek iin kullanilan isim. Indeksli kullanimda indeksini bildirir. Nesnenin sol hizasini belirler. Fare imlecini belirler. Nesne zerine geldiginde fare imlecini belirler. Nesnenin fare ile hareketini belirler.
266
267
268
269
Enabled :
rnek :
HostName:
iin kullanilir. rnek:
OLE1.HostName = Uygulama1
270
Left
: Nesnenin, zerinde bulundugu nesneden yatay olarak ne kadar uzakta oldugunu gsterir. Bu zellik, daima nesnenin sol kenarina bagli x koordinatini verir.
rnek: OLE1.Left = 360
271
PasteOK
273
Private Sub OLE1_DbClick ( ) : Olay OLE nesnesi zerine fare ile ift
tiklandiginda gereklesir.
Private Sub OLE1_GotFocus ( ) : Nesneye konumlanma ani. Private Sub OLE1_KeyDown ( ) : Klavyeden bir tusa basildigi an. Private Sub OLE1_KeyPress ( ) : Herhangi bir tustan bir deger
alindiginda yapilmasi istenilen is.
Private Sub OLE1_LostFocus ( ) : Nesne zerinden ayrilma ani. Private Sub OLE1_MouseMove ( ) : Olay farenin nesne zerinde
gezindigi tm sre boyunca gereklesir. LostFocus olayi ile bu olay geerliligini yitirir.
Private
Sub
OLE1_Updated(
OLE
kontrolnn
ierigi
274
DATA Properties
Programda kullanilan ismini belirler . Data nesnesinin hizasini belirler. Nesnenin grns ile ilgili zellikler belilenir Nesnenin zemininin rengini belirler. Dosya basi hareketini belirler. Data kontrolnn ismini belirler. Veritabani programi belirlenir. Kullanilacak veritabaninin ismi seilir. Baglanilacak arabirimin tipini belirler. Srkle/birak islemi sirasinda farenin hangi imleci alacagini belirler. Srkle birak isleminin el yordami ile mi yoksa otomatik olarak mi gereklestirilecegini belirler Nesnenin etkin olup olmadigini belirler. Dosya sonu hareketini belirler. Yazi tipini belirler. Yazi rengini belirler. Nesnenin boyunu belirler. Indeksli kullanimda indeksini verir. Nesnenin sol hizasini belirler. Fare imlecini belirler. Nesne zerine geldiginde fare imlecini belirler. Fareyi birak modu. Seenekler. Sadece okunabilir zelligini belirler. Kayit tipi. Veritabanindaki kayidin adi. Nesnenin ek metin bilgisini ierir.
275
Data1.Caption = veri1
276
277
farenin programci tarafindan tanimlayacagi zel bir imleci gsterecegini yansitir. rnek : Data1.MouseIcon = LoadPicture (c:\...)
278
279
Private Sub Data1_Error ( ) : Bir hata meydana geldigi an. Private Sub Data1_MouseMove ( ) : Olay farenin nesne zerinde
gezindigi tm sre boyunca gereklesir. LostFocus olayi ile bu olay geerliligini yitirir.
280
281
282
283
Action: Kod sayfasinda 1 6 arasi bir deger verilerek ilgili diyalog kutusu
ailir. 1: A diyalog kutusu CommonDialog1.Action =1 veya CommonDialog1.ShowOpen 2: Yeni Adla Kaydet diyalog kutusu CommonDialog1.Action = 2 veya CommonDialog1.ShowSave 3: Renk diyalog kutusu CommonDialog1.Action = 3 veya CommonDialog1.ShowColor
284
5: Yazdir diyalog kutusu CommonDialog1.Action = 5 veya CommonDialog1.ShowPrint 6: Windows Help programini alistirir. CommonDialog1.Action = 6 veya CommonDialog1.ShowHelp
Name : Diyalog penceresinin program ierisindeki adini belirler. Cancel Error: Diyalog pencerelerinde Iptal dgmesinin seilmesi halinde yakalanabilir bir hata olusturulup olusturulmayacagi bu zellikle belirlenir.
True : Iptal dgmesi seilirse hata olusur. False : Hata olusturma. RNEK: Cancel Error zelligini True yaparak kullanicinin Iptal dgmesini semesi halinde yazacagimiz kod asagidaki gibi olacaktir. Private Sub Form Click ( ) On Local Error GoTo iptal CommonDialog1.Action = 1 CommonDialog1.CancelError = True MsgBox ( CommonDialog.filename & doayasi seildi ) Exit Sub Iptal: MsgBox ( Dosya seme islemi iptal edildi ) Exit Sub End Sub
285
Dialog Title : Ailacak pencerelerin basliginda yazilmasi istenen metni belirler. Bir deger atanmazsa standart baslik yazisi grntlenir.
FileTitle : Filename zelliginden farkli olarak dosya adina yol dahil degildir.
Sadece seilen dosyanin ismi ve uzantisini gsterir.
286
InitDir :
Diyalog kutularinin ilk aildiginda listeleyecegi dizini belirlemeyi saglar. Verilmezse aktif dizin kabul edilir.
&H200, cdlOFNAllowMultiselect : Bu degerin Yeni Adla Kaydet diyalog kutusunda bir etkisi yoktur. A diyalog kutusunda ise birden ok dosyanin seilebilmesini saglar. Bu seme islemi Shift veya Ctrl tus bilesimleriyle yapilir. Bu durumda FileTitle parametresi bos dner, FileName parametresinde ise, dosya isimleri arasinda da bosluk olarak dner. CommonDialog1.FileName = SrcIsmi:DizinIsmi\ Birinci Dosya Ikinci Dosya nc Dosya... CommonDialog1.FileName = C:\WINDSOWS\ win.com msd.exe seklinde olacaktir. Eger bir tane dosya seilmisse dizin ismi ile dosya ismi arasinda bosluk bunmaz. Windows 95/98 de dosya isminde de bosluk olabilecegi iin Flags parametresine bu deger verildiginde uzun dosya isimlerinin seilebilecegi dosya penceresi yerine 8 + 3 dosya isimlerinin seilebilecegi asagidaki dosya penceresi ailacaktir.
287
Burada Hayir seilmesi halinde diyalog kutusu kapanmayacak ve yeni bir dosya semenizi saglayacaktir. evet seilmesi halinde ise gerekte diskte olmayan dosya ismi geri gnderilir. &H1000, cdlOFNExplorer: Bu degerin de Yeni Adla Kaydet diyalog kutusunda bir etkisi yoktur. A diyalog kutusunda yazilan dosya isminin diskte olmamasi durumunda Windows un syle bir mesaj kutusu ikarmasina sebep olur.
&H4, cdlOFNHideReadOnly: Diyalog kutusundaki Checkbox inin grntlenmemesini saglar. &H8000, cdlOFNNoReadOnlyReturn: Diyalog kutusunda Read Only (Sadece okunabilir) dosya seilmesini nler. Byle bir dosya seilmesi durumunda Windows un asagidaki mesaji grntlemesini saglar.
288
&H800, cdlOFNPathMustExist: Girilen dosya isminin yolu dogru degilse Windows un asagidaki gibi bir mesaj vermesini saglar. &H1, cdlOFNReadOnly: Diyalog penceresi ailirken Checkbox inini isaretlenmis olmasini saglar. Ayni zamanda kullanicinin bu seenegi isaretleyip isaretlemedigi de Flags zelliginin bu degeri ile AND islemine tabi tutularak anlasilir. &H4000, cdlOFNShareAware: Normalde diyalog kutulari, bir baska uygulama tarafindan aik tutulan bir dosyanin seilmesi durumunda bir hata mesaji ile kullaniciyi uyarir. Eger flags zelligine bu deger verilirse diger programlar tarafindan aik tutulan dosyalarin da seilebilmesini saglar. &H10, cdlOFNHelpButton : Diyalog kutusunda Yardim komut dgmesinin grntlenmesini saglar. Yardim dgmesinin etkili olmasi iin uygulamanin Help dosyasi ve HelpConTextID zelligi ile ilgili yardim konusunun belirlenmis olmasi gerekir.
&H8, cdlOFNNoChangeDir: Normalde diyalog kutulari sonraki seferlerde aildiginda en son kalinan dizindeki dosyalari gsterir. Eger her seferinde ayni dizini gstermek istiyorsaniz Flags parametresine bu degeri verebilirsiniz.
289
Flags: Ailacak diyalog penceresinin bazi zelliklerini belirleyen bir deger alir. Alacagi degerler ve anlamlari asagida verilmistir. Bu degerler OR islemine tabi tutularak birka zellik birden aktif hale getirilebilir. &H100, cdlCFEffects : Diyalog penceresinde etkiler ve renk kutularinin da grntlenmesini saglar. &H1, cdlCFScreenFonts : Ekran fontlarinin listede grlmesini saglar. &H2, cdlCFPrinterFonts : Yazici fontlarinin da listede grlmesini saglar. &H3, cdlCFBoth : Hem ekran hem de yazici fontlarinin listede grlmesini saglar. &H20000, cdlCFScalableOnly : Yalniz leklenebilir fontlarin listede grlmesini saglar. (True Type, vektr fontlar vb.). Bu fontlarin zelligi bytlp/kltldgnde sekillerinin bozulmamasidir. &H40000, cdlCFTTOnly : Yalniz True type fontlarin listede grlmesini saglar.
290
&H2000, cdlCFLimitSize : Diyalog kontrolnn Max ve Min zellikleriyle belirlenen sinirlar haricinde bir font byklg seilmesine izin vermez.
291
Color : Kullanicinin setigi renk numarasidir. Herhangi bir kontroln BackColor, ForeColor gibi renk zelliklerinden birine atanarak seili renk aktif hale getirilebilir. Flags : Ailacak diyalog penceresinin bazi zelliklerini belirleyen bir deger alir. Alacagi degerler ve anlamlari asagida verilmistir. Bu degerler OR islemine tabi tutularak birka zellik birden aktif hale getirilebilir. &H2, cdlCCIFullOpen : Diyalog penceresinin normalde sadece renk kismi ailir. Kullanicinin zel Renk Tanimla komut dgmesini tiklamasiyla da pencerenin diger yarisi ailir. Eger pencerenin tamaminin program tarafindan ailmasini istiyorsaniz Flags zelliginin bu degerini kullanmalisiniz. &H4, cdlCCPreventFullOpen : Diyalog penceresinde zel Renk tanimla komut dgmesinin pasif yapilmasini ve kullanici tarafindan seilememesini saglar.
292
PrinterDefault : Bu zellige True degeri verilirse kullanicinin setigi yazici ayarlari varsayilan ayar olarak kaydedilir. Copies : Diyalog penceresinde gsterir. kopya sayisi kutusuna yazilan degeri
FromPage, ToPage : Diyalog kutusundaki Ilk ve Son sayfa numaralarini belirten sayilari gsterir. Bu degerlerin -1 olmasi btn sayfalar anlamina gelir.
293
&H2, cdlPDPageNums : Yazdir diyalog penceresinde Sayfalar seeneginin seili oldugunu gsterir. Hangi sayfalarin girildigi ise Max ve Min zellikleri ile grenilir. &H20, cdlPDPrintToFile : Yazdir diyalog penceresinde Dosyaya Yazdir seeneginin seili oldugunu gsterir. &H80000, cdlPDDisablePrintToFile : Yazdir diyalog Dosyaya Yazdir seeneginin pasif (seilemez) olmasini saglar. &H100000, cdlPDHidePrintToFile : Yazdir diyalog Dosyaya Yazdir seeneginin grntlenmemesini saglar. penceresinde
penceresinde
&H8, cdlPDNopageNums : Yazdir diyalog penceresinde Sayfalar seeneginin, Ilk ve Son text kutularinin pasif olmasini saglar. &H4, cdlPDNoSelection : Yazdir diyalog penceresinde Seili Kisim seeneginin pasif olmasini saglar. &H40, cdlPDPrintSetup : Yazdir diyalog penceresi Ayarlari diyalog penceresinin grntlenmesini saglar. yerine Yazici
294
Bu pencere araciligi ile bir ayar yapildiktan sonra bu ayarlarin etkili olabilmesi iin Printer.EndDoc komutu kullanilmalidir. CommonDialog1.Flags = &H40 CommonDialog1.Action = 5 Printer.EndDoc
295
296
About : MSFlexGrid telifi hakkinda bilgi verir. Custom : MSFlexGrid kontrolnn zellikleri pencereler halinde blmlere ayrilmistir. Buradan zellikler sanki kisa yolmus gibi ayarlanabilir.
297
298
Index : Nesne indeksli kullaniliyorsa indeksini belirler. Left : Nesnenin sol hizasini belirler. MergeCells : Istenirse Grid de, yan yana veya st ste ayni bilgileri ieren hcrelerin birlestirilerek tek bir hcre halinde gsterilmesi saglanabilir. Bu zelligin degeri normalde 0 dir ve herhangi bir birlestirme islemi uygulanmaz. Birlestirme isteniyorsa bu zellige bir degeri verilebilir. Bu zellige 1 degeri verildikten sonra hangi satir veya stunlarda birlestirme uygulanacagi MergeRow veya MergeCol zellikleriyle belirlenir. MouseIcon : Fare nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer : Fare nesnenin zerindeyken hangi sekli alacagini belirler. PictureType : Resim tipi ile ilgili zellikler belirlenir. Redraw : Tekrar izimin aktif ya da pasif olmasi belirlenir.
299
AddItem : Grid e yeni bir satir eklemek iin kullanilir. MSFlexGrid1.AddItem CellAlignment : Aktif hcrenin yatay ve dikey yerlesimi (sola, ste, ortaya vb.) bu metodla belirlenebilir. MSFlexGrid1.CellAlignment(1) = 0 CellBackcolor : Hcrenin arka fon rengini belirle me metodudur. MSFlexGrid1.CellBackColor = &HFF00&
300
CellFontBold : Hcre iindeki yazinin kalin olup olmamasini belirler. MSFlexGrid1.CellFontBold = True / False CellFontItalic : Hcre iindeki yazinin italic olup olmamasini belirler. MSFlexGrid1.CellFontItalic = False CellFontName : Hcre iindeki yazinin tipini belirler. MSFlexGrid1.CellFontName = Verdana CellFontSize : Hcre iindeki yazinin boyutunu belirler. MSFlexGrid1.CellFontSize = 10 CellFontStrikeThrough : Hcre iindeki yazinin st izili olup olmayacagini belirler. MSFlexGrid1.CellFontStrikeThrough = True / False CellFontUnderline : Hcre iindeki yazinin alti izili olup olmayacagini belirler. MSFlexGrid1.CellFontUnderline = True / False CellFontWidth : Hcre iindeki yazinin genisligini belirler. MSFlexGrid1.CellFontWidth = 15 CellForeColor : Hcre iindeki yazinin rengini belirler. MSFlexGrid1.CellForeColor= &HHff00& CellHeight : Hcrenin yksekligini belirler. MSFlexGrid1.CellHeight = Verdana CellLeft : Hcrenin solundan yazmaya baslar. MSFlexGrid1.CellLeft CellPicture : Hcre iine resim eklemek iin kullanilan metoddur.
301
302
303
Text : Satir ve stunlarin iine yazi yazmaya yarar. TextArray : Yazilari dzenlemeye yarar. TextMatrix : Satir ve stun parametreleri ile belirlenen hcredeki bilgi bu zel-likle grenilebilir veya degistirilebilir. MSFlexGrid1.TextMatrix (1,1) = Visual Basic Zorder : Grafik dzeyi belirler.
304
305
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Forms 2.0 object Library seenegi seilerek istedigimiz Companent' i ekleriz.
306
Multipage Fonksiyonlari:
MultiPage1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. MultiPage1.Drag: Herhangi bir kontrolun srkleme alismasini iptal eder izgi men sekil zama nlayici veya commondialog kontrol eder . MultiPage1.Move: Mdiform form hareketini kontrol eder. MultiPage1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. MultiPage1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr.
307
durumunu gsterir. Bilginin seildigini gstermek iin togglebuttonu kullanilir. togglebutton veri kaynagini sinirlandirabislir. Herhangi bir veri kaynaginin gncel degerini gsterir. Bir gurupla ilgili bilgierin bir ya da birden ogunu semek iin yapi iinde togglebuttonu ayni zamanda kullanabiliriz . Name: Program ierisindeki ismini belirler. Accelerator: Kontrol iin accelerator anahtarini kurar ya da tekrar geri dndrr. AutoSize: Genisligini zerinde bulunan yaziya ayarlar. Back color: Arka plan rengini belirler. BackStyle: zerinde bulundugu nesnenin Gzkp gzkmeyecegini belirtir. Caption: zerinde grnecek yaziyi belirler. CausesValitation: Controlde odaklanmasini kaybetmis olan olusumlarini tekrar dndrme ya da kurma islemini yapar. DataBindings: Gelistiriciye bindable zelliklerini kapsayarak mevcut databindings koleksiyon Nesnesi geri dndrr.
308
309
ToggleButton Fonksiyonlari:
ToggleButton1. Drag: Herhangi bir kontrolun srkleme alismasini iptal eder izgi men sekil zamanlayici veya commondialog kontrol eder . ToggleButton1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. ToggleButton1.Object: : zellik veya metodu grlebilir yolla kontrol eder otoma tik olarak ismini belirler. ToggleButton1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. ToggleButton1.SetFocus: Belirlenmis kontrol veya forma thefocus hareket eder . ToggleButton1.ShowWhatsThis: Pencereler 95nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gster .
310
311
312
SpinButton:
A rtislar ve karar vermeleri sayar. Spinbuttonu tiklayarak sadece spinbuttonun degerini degisiririz. Baska kontrolun gsterilen degerini gncellestirmek iin spinbuttonu kullanarak kod yazabiliriz. rnegin siz tarihte gsterilen ay, gn veya yili degismek iin spinbuttonu kullanabilirsiniz.
Name: Program ierisindeki ismini belirler. Back color: Arka plan rengini belirler. CausesValitation: Controlde odaklanmasini kaybetmis olan olusumlarini tekrar dndrme ya da kurma islemini yapar. DataBindings: Gelistiriciye bindable zelliklerini kapsayarak mevcut databindings koleksiyon Nesnesi geri dndrr. DataField: Veritabanina baglanti iin alan seilmesini saglar. DataFormat: Veritabanindan alinacak bilginin formatini belirler. DataMember: Data baglantisi kurar ve bir deger belirtir. DataSource: Veritabaninin tablosunu belirler. Delay: Gecikmeyi belirler. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler.
313
314
SpinButton Fonksiyonlari:
SpinButton1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. SpinButton1.DataChanged: Thebound kontrolunde veri ondan baska bazi islemin tarafindan degistirildigi degeri gsterir. SpinButton1.Move: Mdiform form hareketini kontrol eder. SpinButton1.Object: : zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. SpinButton1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. SpinButton1.SetFocus: Belirlenmis kontrol veya forma thefocus hareketi yapar.
315
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden seenegi Microsoft Hre rarchikal FilexGrid Control seilerek istedigimiz Companent' i ekleriz.
316
317
318
TextStyleFixed: zel hcre veya hcrelerin iinde metin iin boyutlu biim belirle r. ToolTipText: Mouse nesne zerindeyken mesaj verdirmek iin kullanilir. Top: stten hizasini belirler. Value: Seenek seildiginde true degeri alir. Visible: Form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Bir nesne iin belirtilmis ierik numaralarini belirler. Width: Nesnenin genisligini belirler. WordWrap: Ierdigi getirilecegini belirler. bilgiyi forma kelime blerek ya da blmeden
MSHFlexGrid Fonksiyonlari:
MSHFlexGrid1.BackColorBand: Mshflexgridin esitli elementlerinin geri rengini belirler. MSHFlexGrid1.BandColIndex: Hcreyi kapsayan bant ile ilgili gncel hcrenin kolon sayisini belirler. MSHFlexGrid1.BandLevel: Gncel hcreyi kapsayan bant sayisini belirler. Bant sayilari 0 da baslarlar. MSHFlexGrid1.Bands: Mshflexgrid ta bantlarin toplam sayisi belirler. MSHFlexGrid1.CellAlignment: Gncel hcre iinde verinin yatay ve dikey siraya konmasini belirleyen degerdir. MSHFlexGrid1.CellFontBold: Gncel hcre metni iin biim zelliklerini belirler.
319
320
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Internet Transfer Control : seenegi seilerek istedigimiz Companent' i ekleriz.
321
Eger bu zellik bos birakilirsa kontrol kullanici ismi olarak isimsizi gnderecektir. Inet Fonksiyonlari:
Inet1.Execute: Uzak bilgisayar isteklerini isletir. zellik protokolu iin geerli olan istekleri sadece gnderebilirsiniz . Inet1.GetHeader: Getheader metodu http dosyasindan baslik metinini geri almak kullanilir. Inet1.hInternet: Temelde olan wininet-dll apidan interneti tutar. Grlebilir temelden kontrole erisildiginde bu zellik kullanilmaz . Inet1.OpenURL: Belirlenmis url de dokman aar. Inet1.ResponseCode: Icerror durumu statechanged olayinda gereklesdiginde baglanti hatasini belirler. Hatanin aiklamasi iin responseinfo zelligini kurar. Inet1.ResponseInfo: Gereklesen son hatanin metnini belirler. Hata kodu iin responsecode zelligini kurar.
322
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft MAPI Controls seenegi seilerek istedigimiz Companent' i ekleriz.
Mapi Fonksiyonlari:
MAPISession1.SessionID: Gncel message oturumunu belirler. Bu zellik tasarim zamaninda mevcut degilse okunmaz. MAPISession1.SignOff: Message oturumu bit, username ve sifre zellikleri tarafindan belirtilmeden disari gnderilmez.
323
kontrolu message sistem fonksiyonunun degisikligini gereklestirmek iin kullaniciya izin verir. Name: Program ierisindeki ismini belirler. AddressCaption: A dres kutusu zerindeki ismini belirler. AddressEDitFieldCount: Adress dialog kutusunda kullaniciya ait kontrolleri sayisini belirler. AddressLabel: Adres kitabinda kontrolu hazirlamak iin grnslerini belirler. AddressModifiable: Adres kitabinin degistirilebildigini belirtir. AddressResolveUI: Resolvename metodu belirtildiginde dialog kutusu adres sirasinda alici isim iin gsterildigini belirtir. FetchMsgType: Mesaj tipini belirler. FetchSorded: Inboxden mesajlar ile mesaj seti iin mesaj dzenini belirler. FetchUnreadOnly: Sadece unread mesajlarini mesaj setinde kisitlamasi gerektigini belirtir. Index: Index numarasini belirler. Left: Sola hizasini belirler. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. Top: stten hizasini belirler.
324
325
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Masked Edit Control seenegi seilerek istedigimiz Companent' i ekleriz.
326
327
MaskedBox Fonksiyonlari:
MaskEdBox1.Container: Formda kontrolun mevcut atdesign zamanlamasini yapmaz. MaskEdBox1.HideSelection: Kontrol odagi kaybettiginde metni setigini belirleyen degeri belirler. MaskEdBox1.HWnd: Form veya kontrole ahandle kurar. MaskEdBox1.Refresh: Yenileme yapar. MaskEdBox1.SetFocus: Belirlenmis kontrol veya forma the focus hareketini yapar.
328
329
330
Toolbar1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olara k ismini belirler. Toolbar1. Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr.
331
332
333
334
ProgressBar Fonksiyonlari:
ProgressBar1.Container: Formda kontrole ait mevcut at design zamanlamasi yapmaz. ProgressBar1.HWnd: Form veya kontrole ahandle kurar. ProgressBar1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. ProgressBar1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. ProgressBar1.Value: Seenek seildiginde true degeri alir.
335
336
337
TreeView Fonksiyonlari:
TreeView1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. TreeView1.DropHighlight: Dgm veya listemeye iliskin belirtilen , imlei hareket ettirildiginde sistem ile , rengi belirtir. TreeView1.HWnd: Form veya kontrole ahandle kurar. TreeView1.ImageList: Baska kontrol ile ilgili olan herhangi bir kontrol eder. imagelist 'i
TreeView1.Nodes: Treeview kontrol dgm nesnesinin koleksiyonuna iliskin degeri belirler. TreeView1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. TreeView1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. TreeView1.Selecteditem: Seilmis listitem ve dgme iliskin listeleri belirler.
338
339
340
ListView Fonksiyonlari:
ListView1.ColumnHeaderIcons: Columnheaders koleksiyonu Iin grntleri saglayan Imagelist' I kontrol eder. ListView1.ColumnHeaders: Columnheader nesnesinin koleksiyonuna Iliskin degeri belirler. ListView1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. ListView1.DropHighlight: Dgm veya listemeye iliskin belirtilen , imlei hareket ettirildiginde sistem ile , rengi belirtir. ListView1.HWnd: Form veya kontrole ahandle kurar. ListView1.Icons: Listview kontrolunda ikon ve smallicon grs ile ilgili imagelist kontrolun belirler.
341
Listimage
nesnesinin
Listimage
nesnesinin
Left: Nesnenin sola hizasini belirler. MaskColor: Imagelist kontrolu renkli maskelemeler yaratir. iin
Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. Top: Nesnenin stten hizasini belirler.
342
ImageList Fonksiyonlari:
ImageList1.hImageList: Imagelist kontrol ile ilgili tuta ayarlari yapar. ImageList1.ListImages: Imagelist kontrolnde listimage nesnesinin koleksiyonuna degeri belirler. ImageList1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. ImageList1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr.
343
344
Slider Fonksiyonlari:
Slider1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. Slider1.DataBindings: Gelistiriciye bindable zelliklerini kapsayarak mevcut databindings koleksiyon nesnesini geri dndrr. Slider1.GetNumTicks: Min ile slider kontrolunun max zellikleri arasinda isaretlerin sayisi belirler. Slider1.HWnd: Form veya kontrole ahandle kurar. Slider1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. Slider1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. Slider1.Text: Nesnede kapsanilan metini belirler.
345
346
347
348
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT MULTIMEDIA DTCs seenegi seilerek istedigimiz Companent' i ekleriz.
Page Transitions :
Sayfa geisleri ile ilgili ayarlamalari yapar. Name : Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Height : Nesnenin yksekligini belirler. HelpContextID : Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi nesnelerden hangisi oldugunu belirten sayiyi ierir. Left : Nesnenin sola hizasini belirler. TabIndex : TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. TabStop : TAB ile seilmis olani sonlandirilir. Tag : Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. TooTipText : Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr.
349
350
351
352
Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT REMOTEDATA CONTROL seenegi seilerek istedigimiz Companent' i ekleriz.
MSRDC :
Sinir kontrolu boyunca uzak odbc veri kaynaginda depolanilan veriye erisim saglar. Name: Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. Align: Nesnenin oldugu yeri belirleyen degeri setler. Appearance: Veri kontrolunn Appearencesini belirtir. Nesnenin grntsn belirler. BackColor: RemoteData kontrolu BackColorunu belirtir. Nesnenin arka plan rengini belrler. BatchSize: Yigindaki kayitlarin sayisini gncellestirir. BOFAction: Dosyalarin baslangi noktalarina hareket kazandirmak iin kullanilir. Alinilan dosya hareketinin basladigini belirtir. Caption: Remotedata kontrolu nvanini belirler. Baslik bilgisi tanimlanir. Connect: Aik baglantinin kaynagindaki liste bilgisini belirtir. CursorDriver: Yaratilmak istenen imlecin tipini belirtir. DataSourceName: Veritabanina baglanacak nesnenin ismini belirtir. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler.
353
354
MSRDC Fonksiyonlari
MSRDC1.BatchCollisionCount: Son batch - mode gncellestirmesini tamamlamayan siralarin sayisini belirten deger. MSRDC1.Cancel: Eszamanli olmayan modta olusan kuskunun islemini iptal et veya herhangibiri iptal et esnasinda belirlenmis rdoya karsi sonular karsi olur. MSRDC1.Connection: RemoteData kontrolu temelde olan rdoconnection nesnesisine iliskin deger. MSRDC1.Drag: Basla, bit veya herhangi bir kontrolun srkleme alismasini iptal eder. izgi,men, sekil, zamanlayici veya commondialog, kontrol eder.
355
MSRDC1.Move: Midiform veya formu hareket veya kontrol eder. MSRDC1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna Iliskin zellikler.
356
RichTextBox :
Klasik TextBox kontro lndan format zelligi ileri gidilen daha ogu ayni zamanda temin eder iken richtextbox kontrolu, metine girmek ve yayina hazirlamak iin kullaniciya izin verir. Name: Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. Appearance: Veri kontrolunn Appearencesini belirtir. Nesnenin grntsn belirler. AutoVerbMenu: Seilmis nesnelerinin gsterilecegi veya gsterme degerini belirler. BackColor: Nesnenin arka plan rengini belrler. BorderStyle: Nesne iin sinir biimini belirler. BulletIndent: RichTextBox' de kullanilan, ieriden baslamak miktarini, kontrol eder ve belirler. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. DataBindings: Mevcut olan Bindable zelliklerini biriktiren DataBindings koleksiyon nesnesini belirtir. DataFormat: Bu paranin Bindable zelligine karsi kullanim iin veri nesnesinin biimini belirler. DataMembers: Veri baglantisini DataMemberi isaret eden degeri belirler.
357
358
RichTextBox Fonksiyonlari
RichTextBox1.Container: Mevcut atdesign, zamanlama yapmaz . RichTextBox1.Drag: Basla, bit veya herhangibir kontrolun srkleme alismasini iptal eder. izgi, men, sekil, zamanlayici veya commondialog, kontrol eder. RichTextBox1.Find: Verilen IP iin RichTextBox kontrolunda metini arar.
359
RichTextBox1.hWnd: Form veya kontrola ahandle degerini belirler. RichTextBox1.Move: Midiform veya formu hareket veya kontrol eder. RichTextBox1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna iliskin zellikler. RichTextBox1.OLEDrag: OLE Drag / Drop alismasini baslatmak iin kullanilir. RichTextBox1.OLEObjects: OLEObjects koleksiyonu, OLEObject nesnesinin koleksiyonunu kapsar. RichTextBox1.Parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form, nesne veya koleksiyon. RichTextBox1.Refresh: Nesnenin hem grns aisindan hemde ierik aisindan gncellenmesini saglar. RichTextBox1.SaveFile: Dosyaya RichTextBox kontrolunun ierigini korur. RichTextBox1.SelAlignment: RichTextBox kontrolunda paragraflarin siraya koymasini kontrol eder. RichTextBox1.SelBullet: Eger gncel seim veya araya koymak noktasini kapsayarak RichTextBox kontrolunda paragraf hizli ve dzgn bir biime sahip olmasini belirler.
360
RichTextBox1.SelUnderline: RichTextBoxde su anki seilmis metinin dnen veya set yazi tipi biimleri, kontrol ederler. RichTextBox1.SetFocus: Nesnenin etkin konum nceligine sahip olmasini saglar. RichTextBox1.ShowWhatsThis: Pencereler 95' nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gsterir. RichTextBox1.Span: RichTextBox kontrolunda dayanilan bir takim belirlenmis karakterleri metini seer. RichTextBox1.UpTo: Richtextboxde belirlenmis karakter setinin yesi olan ilk karakteri, kontrol eder.
361
SysInfo :
SYSINFO kontrolu , isletim sisteminin tarafindan btn uy gulamalara gnderilen sistem mesajlarina karsilik vermek size izin verir. Name: Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi nesnelerden hangisi oldugunu belirten sayiyi ierir. Left: Nesnenin sola hizali olacagini belirler. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. Top: Nesnenin stten hizasini belirler.
SysInfo Fonksiyonlari
SysInfo1.BatteryFullTime: Bataryanin dolu yk yasamini belirten deger. SysInfo1.BatteryLifePercent: Dolu batarya g kalaninin yzdesini belirler. SysInfo1.BatteryLifeTime: Bataryanin kalan yasamini belirten deger. SysInfo1.BatteryStatus: Bataryanin (S) yknn konumunu belirten deger.
362
363
SSTab :
SSTAB kontrolu, diger kontrollar gibi davranan bir grup tablolarin, herbirini saglar.
Name: Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. BackColor: Nesnenin arka plan rengini belrler. Caption: Kontrolu nvanini belirler. Baslik bilgisi tanimlanir. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enable: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir. Font: Tabbed Dialog kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. ForeColor: Tabbed Dialog kontrolu ForeColorunu belirtir. Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler.
364
365
SSTab Fonksiyonlari
SSTab1.DataBindings: Gelistiriciye Bindable zelliklerini kapsayarak mevcut DataBindings koleksiyon nesnesi degerini belirler. Sstab1.Drag: Basla, bit veya herhangi bir kontrolun srkleme alismasini iptal eder. izgi, men, sekil, zamanlayici veya commondialog, kontrol eder. SSTab1.hWnd: Form veya kontrola ahandle degerini belirler. Sstab1.Move: Midiform veya formu hareket veya kontrol eder. Sstab1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna Iliskin zellikler. Sstab1.parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form , nesne veya koleksiyon. SSTab1.Rows: SSTab kontrolunda nesnelerin siralarinin toplam sayisi belirler. Sstab1.SetFocus: Nesnenin etkin konum nceligine sahip olmasini saglar. SStab1.ShowWhatsThis: Pencereler 95' nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gsterir.
366
Winsock :
Kullaniciya winsock kontrolu, grlmez TCP ye kolay erisim saglar. Microsoft erisimi, grlebilir temel, grlebilir c++ veya grlebilir foxpro gelistiricilerinin tarafindan kullanilabilir . Name: Nesneni adini gsterir.Bu zellik, sadece tasarim asamasinda tanimlanabilir. Index: zerinde alisilan nesnenin, ayni ad altinda toplanan dizi nesnelerden hangisi oldugunu belirten sayiyi ierir. Left: Nesnenin sola hizali olacagini belirler. LocalPort: Yerel bilgisayarda kullanilan istasyonlari belirler. Protocol: Soket protokolunu belirler. RemoteHost: Uzak yerdeki bir bilgisayarin ismini tanimlar. RemotePort: Uzak yerdeki bilgisayara baglanilmak iin istasyon belirler. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. Top: Nesnenin i st kenari ile st arasindaki mesafeyi belirler.
Winsock Fonksiyonlari
Winsock1.Bind: TCP baglantilari iin kullanilmak iin LocalPort ve LocalIP belirtir. Eger ok protokol adaptrlerine sahip iseniz bu metod kullanilir. Winsock1.BytesReceived: Veriyi geri almak iin getdata metodunu kullanilir.
367
368
Visual basic dilinde yazilan bazi programlarin kalici olarak saklanmasi gerekebilir. rnegin okuldaki grencilerin kayit listesi. Bu yzden bilgilerin saklanmasi iin visual basic dilinde dosyalama islemleri kullanilmaktadir. Visual basic dilinde kullanilan iki tip dosyalama tr vardir. Bunlar: Rasgele Erisimli Dosyalar Sirali Erisimli Dosyalar Dosya Ama: Her iki tr dosyalama trnde dosya amak iin kullanilan komut OPEN komutudur. Kullanimi: Open Dosya Adi [For Ama Modu] [Access Erisim Modu] [Lock] As [#] Dosyano [Len=kayituzunlugu] Simdi buradaki komutlari taniyalim: Dosya adi:Aacagimiz dosyamizin adini tanimlamak iin kullanilir. Ama modu:Aacagimiz dosyamizin modunu belirtmek iin kullanilir. Bes adet dosya ama modumuz vardir: 1. Random:Bu modda her kaydin uzunlugu sabittir ve sabit oldugu iin dosyadaki herhangi bir kayda o kaydin numarasini vererek erisebiliriz. 2. Binary:Bu moda dosya iindeki bir karaktere ulasmak istedigimiz zaman karakter numarasini vererek ulasabilmekteyiz. 3. Input:Bu modda dosyamizi atigimiz zaman dosyamiz okunmak zere ailir. 4. Output:Bu modda dosyamizi atigimiz zaman dosyamiz yazmak iin ailir. 5. Append:Dosyamiza yeni kayit eklemek iin dosyamizi bu modda aariz. Eklenen yeni kayit dosyamizin sonuna eklenir. Erisim Modu:Dosyamizi aarken hangi modda aacagimizi belirtmek iin kullaniriz. tana parametresi vardir: 1. Read:Dosyamiz sadece okunmak iin ailir. Yazma islemi yapmak mmkn degildir. 2. Write:Dosyamiz sadece yazmak iin ailir. 3. Read Write:Dosyamizi hem yazma hem de okuma modun da aar. Lock:Anahtarlama islemi demektir. Istege bagli olarak dosya ailirken diger programlara karsi erisim engellenebilir. Drt tane parametresi vardir: 1. Sherad:Ailmis olan bir dosyaya baska programlar tarafindan okuma ve yama yapilabilir. 2. Read:Ailmis olan dosya baska uygulamalar tarafindan okunamaz,yazilabilir. 369
Dosyamizi random,input ve binary modun da amissak dosyamizi kapatmaya gerek kalmadan baska bir dosya numarasi vererek tekrar aabiliriz. Fakat append ve output modlarinda dosyamizi kapatmadan tekrar amamiz mmkn degildir. Kayit Uzunlugu:Kayit uzunlugumuz dosyamizi ama moduna gre degismektedir. Fakat 3276dan byk olamaz. Binary modda kayit uzunlugu yoktur. Dosyamiz Input mo dda ailmissa her kaydin uzunlugu 128 karakter olarak kabul edilir. Dosyamiza yazdigimiz kayit bizim verdigimiz numaradan bykse hata olusacaktir.
Dosyamiz random modundan farkli bir modda ailmissa verdigimiz kayit uzunlugu sayisi karakter buffer modunu belirler. Verilmezse 512 kabul edilir. Buffer bir seferde okunacak ve yazilacak karakter sayisini belirtir. Dosyamizdan bir kayit okunacagi zaman buffer boyutu kadar okuma yapilir. Rasgele Erisimli Dosyalarda Okuma ve Yazma Islemi: Bu tr dosyalarda yani Random ve Binary modda ailan dosyalarda okuma islemi Get komutu ile,yazma islemi de Put komutuyla olmaktadir. Kullanimi: Put[#]dosyano,[kayitno],degisken Get[#]dosyano,[kayitno,degisken]
Degisken:Kaydin alinacagi degiskeni belirtir. Dosya No:Dosya iindeki kayit numarasini belirtir.ayni zamanda Open komutuyla belirlen dosya numarasidir. Kayit No:Yazilacak yada okunacak degiskenin dosya iindeki kayit numarasini belirtir. RNEK: Dim a A=Gnaydin Put #1,2,a
Yukaridaki rnekte a degiskenini bir numarali dosyanin iki numarali kaydina yazar. Kayit numarasi belirtmeseydik a degiskeni siradaki kayda yazilirdi. RNEK: 370 Dim a
Sirali Erisimli Dosyalarda Okuma ve Yazma Islemi: Bu tr dosyalarda yani Output ve Append modunda ailan dosyalarda yazma islemi Write ve Print komutlariyla olur. Kullanimi:Write #dosyano,[degiskenler] Dosya No:Yazilacak kaydin numarasini belirtir. Degiskenler:Write komutunda dosyaya yazilacak degiskenler tirnak iinde ve araya virgl konularak yazilir. RNEK: Dim isim,yas Open /deneme for output as#1 isim=Ferda Uca yas=18 write #1,isim,yas isim=Ayse nal yas=20 write #1,isim,yas close#1
iktisi:Ferde Uca,18 Ayse nal,20 Print Komutu: Kullanimi:Print #dosyano,[degisken formati] Dosya No:Yazilacak kaydin dosya numarasini belirtir. Degisken formati:Degisken formati ekrana ikti yapiyormus gibi ekrana yazar. RNEK: Dim isim,yas Open /deneme for output as #1 isim=Ferda Uca yas=18 write #1,isim,yas isim=Ayse nal yas=20 write #1,isim,yas 371
iktisi:isim=Ferde Uca 18 isim=Ferda Uca 18 yas= Ayse nal yas=Ayse nal 20 rneklerden de anlasildigi gibi Line Input komutunda tirnak isaretlerinin bir anla mi yoktur. Input komutunda ise tirnaga kadar olan kisim bir kayit kabul edilmektedir. Input komutunun birde fonksiyon formati vardir. Bu formati kullandigimiz zaman dosyadan istedigimiz sayida karakter okuyabiliriz. 372
UYGULAMA:grencilerin bilgilerini tutan bir men olusturalim:Bu mende Kayit no Adi Soyadi Numara Cinsiyet Okul 373
Textbox butonlarina kayit no,adi soyadi,numara isimlerini verdim. Cinsiyet iin Option,okul iin Combobox ve blm iin Listbox butonlarini setim. Formun basligini Properties penceresinde Caption kisminda KAYIT GIRISI 374
Dosyamizi Open komutu ile aariz adini ve modunu bu kisimda belirtiriz. Kayit numarasinin biz girmeden otomatik olarak artmasi iin ve dosyadaki kayit sayisinin bulunmasi iin yukaridaki komutlari kullaniriz. Kayit numarasini biz girmeden kendisi artacagi iin Properties penceresinde Text1(kayit no) butonunun Tabstop zelligi False hale getirilir.
Kayit Butonu:
375
Textbox iindeki bilgiler tanimlar kismina aktarilir ve Put deyimi ile dosyaya yazilir. Click olayinda yazmamizin sebebi kayit butonuna bastigimiz anda kayit islemi yapilir. Msgbox komutu ile parantez iinde grms oldugumuz diyolog kutusu ekrana gelir ve 4 rakami ile bize Evet/Hayir diyolog kutusunu gnderir.
Setfocus komutu ile kayitno(text1box) kutusuna giris yapmayacagimiz iin imlecimizin adi soyadi(text2box) kutusunda durmasini saglar. Temizle Butonu(Command2):
Dosyamizi Close komutu ile kapatiriz. Birde diger formlardan farkli olarak Form Active ve Combo1.Click kullanilmistir. Listeleme iin Listbox kutusunun grntsn grmek iin:
Her formda tanimlayacagimiz gibi Object liste kutusunda (general);Prog liste kutusunda (declarations) seenegi seiliyken kayitno kismini tanimlariz.
ARAMA MODL:
377
Formumuzun grntsn nasil hazirlayacagimizi daha nce anlatmistik. Formumuzun adini ARAMA olarak degistirdim. Sadece ilk Textbox(kayit no)ya giris yapacagimiz iin giger Textboxlarin zelliklerini Properties penceresinde Tabstop zelliginden False durumuna getirdim.
Dosyamiz vermis oldugumuz isimle ailmakta ve dosyanin byte olarak uzunlugu kayit uzunluguna blnerek kayit numarasi bulunmaktadir.
378
Kayit numarasinin iine yazariz. nk kayit numarasi girildikten sonra aradigimiz kayit Enter tusuna bastiktan hemen sonra karsimiza ikar. Keyascii=13 then satiri bunun iin kullanilmaktadir. Get komutu ile kayit numarasi girildikten sonra okuma islemi yapilir.
DZELTME MODL:
379
Diger formlarda yaptigimiz gibi formumuzun adini Dzeltme olarak degistiririz. Ekran grntmz ise ayni,sadece Command butonlarimiz farklidir.
Arama modlnde oldugu gibi Lof fonksiyonu ile dosyanin byte olarak uzunlugu bulunur ve kayit uzunluguna blnerek(len) kayit numarasi bulunur. Text1(Kayit No):
380
Kayit numarasi girildikten sonra Enter tusuna basildiginda dzeltilecek kayit ekrana gelir ve yeni kayit yazildiktan sonra kayit butonuna basilir. Kayit Butonu(Command1):
Kaydin yeni sekli iin Textbox ieriklerini tanimlar kismina yollar ve kaydin yeni halini dosyaya yazilir. Vazge Butonu(Command2):
381
Dzeltmek istedigimiz baska bir kayit varsa msgbox komutu ile ekrana gelen diyolog kutusundan Evet dersek Textboxlarin ierikleri silinir. Hayir dersek End deyimi ile alisma sonra erer. ikis Butonu(Command3):
SILME MODL:
Msgbox ile gelen mesaj kutusuna evet dersek Textbox ierikleri temizlenir ve dosyaya yazilir. Setfocus ile imlecimiz tekrar kayitno(text1box) kutusuna konumlandirilir. Temizle ve ikis butonlarinin kodlari diger modllerin kodlari ile aynidir. Kayit No(Tetxt1box):
Listeleme modlnde sadece Command butonlari kullanilmaktadir. Command1 butonuna tikladigimiz zaman o ana kadar kayit edilmis veriler listeli bir biiminde ekrana gelir. Form Load :
Listelenecek dosya ailir. Kayit numarasi bulunur ve her seferinde bir artar. Listele Butonu(Command1):
384
1den baslayarak kayit numarasina kadar bir dng kurulur ve her seferinde bir artarak devam eder. Dosya sonuna(EOF) kadar listelenecek kayit var mi diye kontrol edilir. Listelenecek kayit varsa dng durur ve ekrana listeli bir sekilde kaydi yazar. Print string ifadesi kayitlar arasina ile 90 tane * isareti konulmak istenmistir. ikis Butonu(Command1):
Burada unutulmamasi gereken bir nokta da formun iinde (general) (declarations) yani kayit numarasinin tanimlandigi kisimda listeleme_click iinde kullanilan degiskenleri tanimlamaktir.
Buraya kadar yaptiklarimizi tek bir men altinda toplamak istersek: Project penceresinden Add Form seenegi ile yeni bir form ekleriz
385
Yeni formumuzun grntsn asagidaki gibi sadece Command butonlari kullanarak hazirlariz:
386
Kayit,arama,dzeltme,silme ve listeleme butonlarinin Properties penceresinde Caption kisminda isimlerini verdikten sonra har butonun Click olayina isimleriyle birlikte Show kisimlarini yazariz.
387
388
Microsoft Visual Basic 6.0 9-PROGRAM KODU YAZARAK VERI TABANI DOSYASI HAZIRLAMAK
Kitabimizin daha nceki bolumlerinde anlatildigi gibi Visual basic ile birlikte verilen Visual Data Manager veya baska bir veri tabani programi ile hazirlanan veri tabani dosyalari zerinde data kontrol yardimiyla her trl islemi yapmak mmkndr.Bu blmde ncelikle visual basic projesi dahilinde alisma aninda nasil MDB uzantili veri tabani dosyasinin hazirlandigi konusunda bilgi verilecektir.Daha sonra Data kontrolunden yararlanmak yerine program kodu yazarak veri tabani dosyasi zerinde nasil islem yapildigi konusunda bilgi verilecektir.Hemen eklemek gerekirse bu blmde anlatilan zelliklerin ogunlugu visual basicin profesyonel srm tarafindan desteklenmektedir. nce dos uyumlu bir veri tabani programlama dili olan Clipperda veri tabani dosyalarinin nasil aildigi konusunda bilgi verecegim.Clipperda genel aliskanlikla kullanilmak istenen DBF uzantili veri tabani dosyasi nce harddiskte arastirtilir.Ardindan dosya varsa ailir.Eger sz konusu program ilk kez alistiriliyor ve dolayisiyla sz konusu dosya harddiskte henz yoksa olusturulur.Dosya olusturma islemi temelde iki a samada yapilir.nce henz ierigi bos olan bir dosya hazirlanir.Ardindan dosyada yer alacak btn alanlar zellikleri ile birlikte sira ile dosyaya ilgili deyimler yardimiyla yazilir. Benzer durum Visual Basic te de sz konusudur.Bu nedenle nce program kodu ile alisma laninda Visual Basic uygulamasi dahilinde nasil MDB uzantili veri tabani dosyasi olusturuldugu konusu zerinde duracagiz.Hemen hatirlatmak istiyorum: MDB uzantili veri tabani dosyalari DBF uzantili dosyalardan olduka farklidirlar.DBF uzantili dosya kavrami, Access formatindaki mdb dosyalarinda Table ile karsilanmaktadir.mdb dosyasinda istenen sayida tablo yer alabilmektedir. Visual Basic uygulamasi dahilinde alisma aninda yeni bir Database nesnesi yani MDB uzantili veri tabani dosyasi olusturmak iin visual basicin Create Database() fonsiyonundan yararlanilir.Visual Basicin 3.0 ve 4.0 versiyonlarinda alisma alaninda Create database() fonksiyonu ile veri tabani dosyasi olusturmak iin nceden herhangi bir hazirlik yapmaya gerek yoktu.Ancak 5.0 versiyonda Create Database() gibi fonksiyonlari kullanabilmek iin daha nceden Project mensnden References komutunu verip ekrana References komutunu verip ekrana References diyalog kutusunu getirmek gerekir.
389
Project mensnden References komutu verildigi zaman ekrana gelen diyalog kutusunda,zerinde alistiginiz Visual Basic proje dahilinde kullanilacak kitapliklar veya imkanlar seilmektedir.Yeni bir Visual Basic projesi hazirladiginizda references diyalaog kutusunda listelenen seeneklerin i k 4 l seili durumdadir.
390
Micrasoft DAO 3.5 Object Library zerinde alisan projeye References diyalog kutusu araciligi ile dahil edilmedigi srece Create Database() gibi fonksiyonlari kullanmak mmkn degildir.Eger zerinde alistiginiz projede Visual Basicin nesne baglama ve katma zelliklerinden yararlanamiyorsaniz References diyalog OLE Automation seenegini iptal edebilirsiniz. CreateDatabase() fonsiyonu disaridan ikisi seimlik olan toplam 3 parametre almaktadir.Olusturulacak veri tabani dosyasinin adini ieren ilk parametrenin kullanilmasi zorunludur.. Dosya=Create database(TEST.MDB) Bu program satiri ile hard diskteki adi TEST:MDB ve program iindeki adi Dosya olan bir veri tabani nesnesi olusturulur.Yeni olusturulan dosya adindaki database nesnesinin ayrica SET deyimi ile set edilmesi gerekir.Bu nedenle yukarida verilen program satiri; SET Dosya=CreateDatabase(TEST:MDB) Seklinde degistirilmelidir.Btn fonsiyonlar gibi Create Database() fonksiyonu da geriye bir deger dndrr.Burada geriye dndrlen degeryeni bir veri 391
Dim Dosya As Database SET Dosya=Create Database(test.mdb) Olusturulacak veri tabani dosyasinin adindan nce istenirse dosyanin yazilacagi src ve dizin adi belirtilebilir.CreateDatabase() fonksiyonuna verilen 2.parametrede dil veya lke kodu belirtilir. Dim Dosya As Database Set Dosya=Create Databaese(c:\ORNEK\TEST.MDB,dbLangGeneral) Create Database() fonksiyonu ile Access formatinda MDB uzantili veri tabani dosyasi olusturulurken Visual Basic ok sayida sabit bilgiden yararlanir.Bu sabit bilgilerin isiginda dosya hazirlanir.Bu sabit bilgiler Visual Basicin 3.0 versiyonunda Visual Basic ile birlikte verilen DATACONS.TXT adli dosyada bulunuyordu.Bu nedenle Visual Basicin 3.0 versiyonu dahilinde zerinde alisilan projeye dahil edilmesi gerekiyordu.Ancak Visual Basicin 4.0 ve 5.0 versiyonunda buna gerek yoktur.Create Database() fonksiyonu ile MDB uzantili veri tabani dosyasi hazirlanirken gerek duyulan sabitler projeye otomatik olarak dahil edilmektedir. Yukarida verilen iki satirlik program kodu isletilecek olunursa,belirtilen src ve klasrde TEST.MDB adinda Access formatinda bir veri tabani dosyasi olusturulur.Yeni bir veri tabani dosyasi olusturmak zere hazirladigim 2 satirlik program kodlarini zerlerinde alistigim rnek projedeki formun Form_Click yordamina dahil ettim.
392
Form_Click yordami bu sekilde hazirlanan proje baslatilip alisma aninda formun zerinde tiklama yapilirsa sz konusu veri tabani dosyasi olusturulur. Harddiskte bulunan bir veri tabani dosyasi Create Database() fonsiyonu ile tekrar olusturulmak istenirse hata meydana gelir.Asagida verilen ekran grntsn TEST.MDB dosyasini olusturduktan sonra alisma aninda formun zerinde ikinci kez tiklama yaparak Create Database() fonksiyonunun kullanildigi Form_Click yordamini ikinci kez isletildikten sonra aldim.
393
Olusturdugum TEST.MDB adindaki veri tabani dosyasina simdi bir Tablo ekleyecegim nce bu amala hazirlanan yordami verelim.Daha sonra yordamda kullanilan deyim ve fonksiyonlar hakkinda bilgi verelim.Yukaridaki sayfada verilen 2 satirlik program kodu ile olusturdugum Access uyumlu veri tabani dosyasina tablo eklemek iin nce yeni bir proje olusturalim.Veri tabani dosyasina tablo eklemede kullanilan program satirlarini projenin formuna ait Form_Click yordamina dahil edelim. Sub Form Click() Dim Dim Dim Dim Dim Dim Dim 394 Dosya As Database Tablo As New Table Del Idx As New Index Alan1 As New Field Alan2 As New Field Alan3 As New Field Alan4 As New Field
Simdi mevcut bir veri tabani dosyasina tablo eklemek amaciyla kullanilan bu yordami kisim kisim aiklayalim.Yukaridaki sayfalarda belirtildigi gibi veri tabani dosyalari ile ilgili olarak kullanilan her nesne iin nceden degisken tanimlama islemi yapilmalidir.Bunun iin yordamin en basinda veri tabani dosyasi zerinde islem yapmada kullanilacak btn nesneler iin nceden degisken tanimlamasi yapildi.Asagida tekrar verilen satirlarda Database,Table,Index ve Field nesneleri iin degisken tanimlama islemleri yapilmaktadir.Veri tabani dosyasi nesnesi iin degisken tanimlanirken Dim bildiri deyimi ile birlikte Database bildiri deyimi kullanmaktadir. Dim Dim Dim Dim Dosya As Database Tablo As New TableDef Idx As New Index Alan1 As New Field 395
Benzer sekilde Table nesnesi iin degisken tanimlamada TableDef bildiri deyimi kullanilmaktadir.Bizim rnekte veri tabani dosyasina Tablo eklemek amaciyla kullanacagimiz degiskene Tablo adini verelim.Eger veri tabani dosyasina birden fazla Table nesnesi ieren veri tabani dosyasi zerinde islem yapmak istediysek TableDef bildiri deyimi ile birden fazla Table tipli degisken tanimlamamiz gerekirdi.Aslinda Dim Tablo As New TableDef program satiri ile yapilan degisken tanimlama,bildigimiz degisken tanimlama isleminden olduka farkli isleme sahiptir. TableDef bildiri deyimi ile degisken tanimlamadan te baslangita herhangi bir zelligi olmayan bir Table nesnesi tanimlanmaktadir.Tanimlanan nesnenin yeni oldugunu belirtmek iin TableDef bildiri deyiminden nce New bildiri deyimi kullanilmaktadir.Bu sekilde yapilan degisken tanimlama islemine Nesne Tanimlama denilebilir. TabloDef bildiri deyimi ile Table nesnesi iin degisken tanimlanmasi yapilan program satirindan sonraki satirda Index bildiri deyimi ile Index nesnesi iin degisken tanimlamasi yapilmakt adir.Veri tabani programlarinin en nemli zelliklerinin basinda Index kullanimi konusunda sagladiklari kolayliklardir.Bunun iin veri tabani dosyasi ve Table nesnesi sz konusu olunca,Index dosyasindan yararlanmamak dsnlemez.Veri tabani dosyasinda bulunan her Table iin ayri indexleme yapilir.Hazirladigim rnek veri tabani dosyasindaki tabloda bir tek index kullanacagim iin bir tek Index tipli degisken tanimladim. Veri tabani dosyasi hazirlanirken en basta dosyada saklanilacak bilgiler veya alanlarin adlari,tipleri ve uzunluklari belirlenir.Hard diskteki adi TEST:MDB olan veri tabani dosyasina ekleyecegimiz tabloda 5 alanin olmasini istedigim iin 5 adet Field(alan)nesnesi hazirlamamiz gerekiyor.Bunun iin yordamin basinda her Field nesnesi iin Field tipli bir degisken tanimlamasi yapilmalidir.Field tipli degisken tanimlamak iin Field Bildiri deyiminden yararlanilir. Yordamda kullanilacak nesneler iin degisken tanimlama islemi yapildiktan sonra ilk olarak kendisine Table nesnesi eklenecek veri tabani dosyasinin ailmasi gerekir.Hard diskteki adi TEST:MDB olan veri tabani dosyasi zerinde islem yapabilmek iin dosyanin OpenDatabase() fonksiyonu ile ailmasi gerekir.OpenDatabase() fonksiyonu disaridan parametre olarak tanesi seimlik olan toplam 4 bilgi almaktadir.Ilk parametrede ailacak dosyanin adi belirtilir.
396
398
399
Program kodu yazarak veri tabani dosyasina dahil ettigim tablonun kayit yapisini size gstermek iin ADRES adini verdigimiz tablonun uzerinde farenin sag tusu ile tiklama yaparak tablo zerinde yapilanabilecek islemleri temsil eden kisayol mensn aalim.
400
Tabloya ait kisayol mensnden Design komutu verilirse ADRES adli tablonun kayit yapisi ekrana getirilir.Bunu asagida verilen ekran grntsnde tespit edebilirsiniz.Table Structure diyalog kutusunda program kodu yazarak tablo iin tanimlanan indexi grebilirsiniz.
401
Create Database() fonksiyonu ile bu sekilde hazirlanan veri tabani dosyasi zerinde Data kontrol araciligiyla her trl islem yapilabilir.Ancak daha nce belirtildigi gibi bu blmden itibaren Data kontrolnden yararlanmadanveri tabani dosyalari zerinde nasil islem yapildigi konusunda bilgi verilecektir. MDB uzantili Access formatli veri tabani dosyalarinda Tablolar,Sorgular,Raporlar ve Formlar bulunmaktadir.Ancak asil Tablolar zerinde islen yapmaktayiz.Bu nedenle Table nesnesi hakkinda biraz daha bilgi sahibi olmak gerekir.xBASE veri tabani programinda DBF uzantili bir veri tabani doyasi USE deyimi ile aildigi zaman kayit gstergesi dosyadaki ilk kayda konumlanir.Benzer durumla Visual Basic dahilinde MDB uzantili veri tabani dosyalari zerinde islem yaparken karsilasilir.zerinde bulunan kaydin ierigi Table nesnesi alanlarina otomatik bir sekilde aktarilir. Bu anlaktiklarimizi rneklemek iin asagida verilen rnek program kodunu hazirlayalim.Bu program kodu dahilinde bu blmn daha nceki sayfalarinda hazirlanan TEST.MDB adli veri tabani dosyasindaki ADRES tablosundaki ilk kaydin ierigi ekrana getirilmektedir.Asagida ekran grnts verilen progra m 402
Verilen rnek programin kodlarindan grlecegi gibi en basta Database bildiri deyimi ile bir Database nesnesi ve Table bildiri deyimi Table nesnesi iin degisken tanimlanmasi yapilmaktadir.Daha sonra Open Database() fonksiyonu ile nce TEST.MDB veri tabani dosyasi ardindan OpenRecordSet() fonksiyonu ile TEST.MDB dosyasindaki ADRES tablosu ailmaktadir.Tablo ailir ailmaz kayit okuma kafasi birincil Indexin isaret ettigi ilk kayda konumlanir. Bu sirada kaydin ierigi Print deyimi ile ekrana yazilmaktadir.From_Click yordami bu sekilde hazirlanan Proje alistirilip formun zerinde tiklama yapilirsa asagida verilen ekran grnts elde edilir. Programa eklenecek bu program kodu ile tabloda bulunan diger kayitlarin ierikleri ekrana getirilebilir.Kaydin ierigini Print deyimi ile ekrana vermek yerine formun zerine Textbox nesneleri yerlestirilip kayitlarin ierikleri grntlerken Textbox kullanilabilir.
403
alisma aninda kullanici formdaki Textboxlara kaydin ierigini girip Kaydet dgmesinde tiklama yapilinca Textboxlarin ierikleri MDB dosyasinin ADRES adli tablosuna yazilacaktir.Bu nedenle bir nceki blmde verilen rnekte oldugu gibi TEST.MDB veri tabani dosyasi ile dosyanin ADRES adli tablonun ailmasi saglanmalidir.Veri tabani dosyasini ve dosyadaki tabloyu amak iin daha nceden Database ve RecordSet tipli iki degiskenin tanimlanmasi gerekir.Veri tabani dosyasina kayit girmek amaciyla kullanilacak bu rnek projede birden fazla yordam olacagi iin Database ve RecordSet tipli degiskenlerin,forma aitDeclarition kisminda tanimlanmasi gerekir.
404
From_Load yordamindaki Kayit.Index=PrimaryKeysatiri ile kullanilacak index dosyasi seilmektedir.Kayit girisinde olmasa bile kayit okumada mutlaka index dosyasi ailmalidir.Seilen index dosyasi o sirada kullanilan Table nesnesine ait Indexadli degiskende saklanir. Kayit girilecek tablodaki alanlarla ayni sayida TextBox bulunan bir forma sahip bu proje alistirilinca imle formdaki ilk TextBoxa konumlanir ve asagidaki gibi bir grnt elde edilir.
Veri tabani dosyasina yazilmak istenen kaydin ayrintilarinin ilgili TextBoxlara yazilmasi tanimlaninca formdaki Kaydet baslikli dgmede tiklamayapilmalidir.Bu nedenle TextBoxlara girilen bilgileri MDB dosyasina yazacak program kodlarinin Kaydet baslikli dgmeye ait Click yordamina yazilmasi gerekir.
405
alisma aninda TextBoxlara bilgi girilip Kaydetdgmesinde tiklama yapildigi zaman isletilen Kaydet_Click yordaminda en basta kullanicidan MsgBox() fonksiyonu ile kaydin tablo yazilmasi onay alinmaktadir.Asagida verilen ekran grntsn alisma anindaki formdaki metin kutularina bilgi girip kaydet dgmesine tiklama yaptintan sonra aldik.
406
Proje baslatilir baslatilmaz hem veri tabani dosyasi ailacak hemde dosyanin seilen tablosundaki ilk kaydi ekrana getirilecek.Bu amala projenin fomunun From_Load yordamini asagidaki gibi dzenliyelim.
407
rnek projenin From_Load yordamini bu sekilde dzenledikten sonra hemen biruyarida bulunabilirim.Program kodu yazarak alisma aninda hazirladigimiz ve TEST adini verdigimiz veri tabani dosyasina ADRES adinda bir tablo eklemis ve bu tablo iin SOYAD alanini temel alan bir Index tanimlamistik.Ayrica Visual Data Managerdan yararlanarak tabloya kaydini yaptigimiz kisinin soyadiY harfi ile basliyordu.Ardindan program kodu yazarak ADRES tablosuna yazdigim 2.kaydin soyad alanindaki bilgi I harfi basliyordu.Trkenin alfabetik sirasina gre IharfiY harfinden nce geldigi zaman yukarida ekran grnts verilen yordam isletildigi zaman tabloya eklenen 2.kaydin ekrana getirilmesi gerekir.Bu yordam sayesinde Proje alistirilir alistirilmaz geerli Indexin isaret ettigi ilk kayit ekrana getirilir.
408
Ancak TEST adini verdigimiz veri tabani dosyasini CreateDatabase() fonksiyonu ile hazirlarken fonksiyonu ikinci parametre olarak dbl.angGeneralyerine dbLangTurkish bilgisini vermis olsaydik tanimlanan Indexle r Trkenin alfabetik sirasini gzetirlerdi. Set Dosya = Create Database(C:/ORNEK/TEST.MDB,dbLangTurkish) Bu sirada Sonraki Kayitbaslikli dgmede tiklama yapilinca bu dgme ile ayni ada sahip yordam isletilir bir sonraki kaydi ekrana getirmek iin MoviNext methodu ile kayit okuma kafasi bir sonra kayda konumlandirilir.Bu konumlandirma islemi ile birlikte tabloda bulunan alanlarin ierikleri gncellesir.Eson olarak tabloda bulunan alanlarin ierikleri formda bulunan TextBox nesnelerine akarilir.
409
Bir nceki kayda gitmeyi saglayan yordamin bu yordamdan tek farki MoveNext yerine MovePrevious methodunu kullanmasidir.Data kontrol hakkinda bilgi verilen blmde belirtildigi gibi kayit okuma kafasi tablodaki en son kayitta iken MoveNext ,kayit okuma kafasi ilk kayitta iken Movelrevious methodu kullanildiginda hata meydana gelmekte ve programin alismasi kirilmaktadir.Bu nedenle MoveNext ve MovePrevious methodlarini kullanmadan nce dosya sonu ve basi kontrol yapilmalidir.Bu amala EOF() ve BOF() fonksiyonlarindan yararlanilir. Veri Tabani Dosyasinda Kayit Aramak ok sayida kayit istemeyen tablolarda istenen kaydi bulup ekrana getirmek iin yukarida anlatildigi gibi MoveNext ve MovePrevious methodlarindan yararlanilabilir.Ancak tablolarda ok sayida kayit varsa bu sekilde kayit aramak bazen pratik olmaz.Bu amala Indexlerden yararlanarak hizli bir sekilde istenen kayit tabloda bulunabilir.Veri tabani dosyasinin aktif tablosundan arama yapmak iin Seek methodu kullanilir.Aik olan herhangi bir index yokken Seek methodu kullanilmaz.Seek methodunun alisma seklini gsterebilmek iin yukarida verilen rnek projenin formuna Kayit Aramabaslikli bir dgme ekleyelim. 410
Kullanici alisma aninda tablodan kayit aramasi yapmak istedigi zaman Kayit Arama baslikli dgmede tiklama yapacak.Bu dgmede tiklama yapilinca kullanicidan aranacak kaydin arama anahtari istenir.zerinde alistigimiz TEST.MDB dosyasindaki tek table nesnesi olan ADRES tablosunda bir tek index hazirlamis ve index iin soyad alani index anahtari olarak kullanilmisti.Buna gre bir Seek methodu ile ancak soyad alanina gre kayit aramasi yapilabilir.Bu amala Kayit Arama baslikli dgmede tiklama yapilinca SetFocus methodu ile imlecin Soyad TextBoxina gitmesi saglandi.
411
Verilen program kodlarindan tespit edilebilecegi gibi Kayit Arama baslikli ve Aramaadli dgmede tiklama yapilinca,formdaki btn TextBoxlarin ierikleri silinmektedir.Asagida verilen ekran grntsn alisma aninda Kayit Arama baslikli dgmede tiklama yaptiktan sonra alisma aninda alalim.
412
Bu sirada Tab tusu veya fare ile ekleme noktasini bir sonraki metin kutusuna aktaracak olursanizSoyadadli bu metin kutusu ile ilgili olarak LostFocus olayi meydana gelir.Bu nedenle kayit arama islemini yapacak program kodlarini Soyad adina sahip metin kutusunun LostFocus yordamina dahil edelim.Yapilan tanimlamaya gre kullanici aramak istedigi kaydin anahtarini girdikten sonra aramayi baslatabilmesi iin Soyad adindaki TextBoxta iken tab tusuna basmasi gerre kiyor.
413
Soyad adli TextBox ta iken Tab usuna basilmasi halinde isletilecek bu yordam ile soyad Textboxin ierigine gre Seek methodu ile arama yapilir.Buyordamda aranan kayit bulunduktan sonra alanlarin ierikleri ilgili TextBox lara aktariliyor.Aranan kaydin dosyadan bulunup bulunmadigini grenmek iin Table nesnesine ait NoMatch degiskeninin ierigine bakilir.Seek methodu ile yapilan her arama isleminden sonra tabloya ait NoMatch degiskeninin ierigi gncellesir.Aranan kayit tabloda varsa bu degiskenin ierigine mantiksal False(0),aranan kayit bulunmazsa bu kez NoMatch degiskenine mantiksal True(1) degeri aktarilir.Bu nedenle yukarida verilen program kodunu biraz degistirelim.
414
rnek yordami dikkatlice inceliyecek olursaniz Seek methodunun disaridan iki parametre aldigini grebilirsiniz.Birincisinde =< gibi oparetrler,ikincisinde ise arama anahtari verilir.Eger arama anahtarimiz Maas gibi sayisal bilgi ieren bir alan ve tablodan maasi 15.000.000dan fazla olan herhangi bir kisinin kaydi araniyor olsaydi Seek methodu TabloNesnesi.Seek>15000000 seklinde kullanilirdi.Seek methodundan sonra tabloya ait NoMatch degiskeninin ierigi gncellesir.Aranan kayit bulunmus ise bu degiskenin ierigi mantiksal yanlis veya 0 olur.
alisma alaninda kullaniciDegistir baslikli dgmede tiklama yapinca TextBoxlarin en son ierigi Update methodu ile ayni kaydin zerine tekrar yazilacaktir.Bunun iinde TextBoxlarin ieriklerinin tekrar alanlara aktarilmasi gerekir.
416
Ancak okumak amaciyla ekrana getirilen bir kaydin alanlarinda degisiklik yapilmaz.Yukarida verilen program kodunda bu hata var.Dolayisiyla programin alismasi kirildi.
Okunan bir kaydin ieriginde degisiklik yapabilmek iin daha nceden edit modunda gemek gerekiyor. Bunun iin Edit methodundan yararlanilir.Yukarida verilen Degistir_Click yordamina alanlarin ierikleri degistirilmeden nce Edit moduna geilirse hata meydana gelmez
417
Edit moduna geip aktif kayda ait alanlarin ierikleri degistirildikten sonra yapilan degisikliklerin diske yani tabloya yansitilmasi iin ayrica Update methodunun kullanilmasi gerekir. Veri Tabani Dosyasindan Kayit Silmek Program kodu yazarak MDB uzantili veri tabani dosyasinin tablolarindan kayit silmek, Data kontrol yardimi ile yapilan kayit silme isleminden farkli degildir.nce silmek istenen kayit bulunur.Ardindan Delete methodu ile sz konusu kayit dosyadan silinir.Silmek istenen kayit MoveNext gibi methodlarla veya Seek methodu ile bulunabilir.Hazirladigimiz bu rnek projenin formuna tablodan kayit silebilme zelligi kazandirabilmek iin Kayit Sil baslikli bir dgme ekleyelim.Aranan kayit bulunup Kayit Sil baslikli dgmede tiklama yapilinca asagida verilen program kodlari ile zerinde bulunan kayit dosyadan silinir.
418
Bu yordam Delete methodu ile yapilan kayit silme isleminden sonra MovePrevious methodu ile tablodaki bir nceki kayda gidilmekte ve bu kaydin iierigi TextBoxlar araciligi ile ekrana getirilmektedir. .
419
Dim a, i As Integer Private Sub Command1_Click() Data1.Recordset.AddNew Data1.Recordset("ad_soyad") = Text1.Text Data1.Recordset("numarasi") = Text2.Text Data1.Recordset("bolumu") = Combo1.Text Data1.Recordset("odev") = Text3.Text Data1.Recordset("vize") = Text4.Text Data1.Recordset("final") = Text5.Text Data1.Recordset.Update Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text1.SetFocus End Sub Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text1.SetFocus End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Activate() Text1.SetFocus On Error GoTo k Data2.RecordSource = "tanim" Data2.Refresh Data2.Recordset.MoveLast 'en son kayda gidilir 'Recordset.RecordCount kayit sayisini grenmek iin a = Data2.Recordset.RecordCount Data2.Recordset.MoveFirst For i = 1 To a Combo1.AddItem Data2.Recordset("bolum1") 420
Private Sub Command1_Click() Data1.Recordset.Delete Data1.Refresh Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = ""
421
like'"
&
423
Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Form3.Height = 6300 Form3.Width = 9930 End Sub
424
Private Sub Command2_Click() Data1.Recordset.AddNew Data1.Recordset("bolum1") = Text1.Text Data1.Recordset.Update Data1.Refresh Text1.Text = "" Text1.SetFocus End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub DBGrid1_Click() End Sub Private Sub Form_Load() Form5.Height = 6300 Form5.Width = 9930 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Data1.Recordset.AddNew Data1.Recordset("bolum1") = Text1.Text 425
Private Sub Command1_Click() Frame2.Visible = True Text6.Text = Text2.Text Text7.Text = (Text3.Text * 0.5) + (Text4.Text * 0.5) Text8.Text = (Text7.Text * 0.4) + (Text5.Text * 0.6) If Text8.Text < 26 Then Text9.Text = "FF" Text10.Text = "0" End If If Text8.Text > 25 And Text8.Text Text9.Text = "DD" Text10.Text = "1" End If If Text8.Text > 45 And Text8.Text Text9.Text = "DC" Text10.Text = "1.5" End If If Text8.Text > 55 And Text8.Text Text9.Text = "CC" Text10.Text = "2" End If If Text8.Text > 65 And Text8.Text 426
< 46 Then
< 56 Then
< 66 Then
< 71 Then
like'"
&
428
Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Form7.Height = 6300 Form7.Width = 9930 End Sub
429
Private Sub Command3_Click() Unload Me End Sub Private Sub Command4_Click() Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text6.Text = "" Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Text1.SetFocus End Sub Private Sub Form_Activate() Text1.SetFocus End Sub Private Sub Form_Load() Form8.Height = 3720 Form8.Width = 8190 End Sub
where(islenmis.numara
Text6.Text = Text2.Text Text7.Text = Data2.Recordset("yil_ici") Text8.Text = Data2.Recordset("yil_sonu") Text9.Text = Data2.Recordset("harf") Text10.Text = Data2.Recordset("rakam") End If Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Kayit Yok") End Select End Sub
431
DAO
RDO
ADO
ODBC
OLE DB
432
Visual Basic ile birlikte kullanilan veri erisimi(data access) yntemleri, programcilari API programlamasindan uzak tutmak iin gelistirilmistir. Programcilarin sadece baglanti kurmak konusunda bilgi sahibi olmalari yeterlidir. Bu baglanti genellikle yerel yada uzak veritabanina baglanti seklindedir. rnegin ODBC araciligiyla bir DSN tanimlamak ve onu kod iinde dogrudan kullanmak. rnegin bir ADO baglanti deyimi:cnn.OpenADRESLER baglanti daha nceden yapilmis bir DSN tanimi ile olmaktadir.: Tabii bu
Sekil-1 DSN Tanimi Veri erisim yntemlerinden bir tanesi olan RDO,ODBC API zerinde, nesne temelli bir arabirim olarak gelistirilmistir. RDO,ODBC API zeride bulunan bir nesne katmanidir. RDO sayesinde API dzeyinde programlamaya gerek duymadan ODBC fonksiyonlarina kolayca ulasilir. 433
Dinamik Gsterici (dynamic cursor), diger kullanicilar tarafindan yapilan eklemelerin,degisikliklerin ve silmelerin grlmesini saglar ve veri seti zerinde yapilacak tm hareketlere izin verir. Anahtar Gsterici(keyset cursor),diger kullanicilarin ekledigi kayitlarin grlmesini engeller. Recordset iindeki her trl harekete izin verir. Diger kullanicilarin yaptiklari veri degisiklikleri grlebilir. 434
Zaman uyumlu islem yerine getirilmesi ve bu arada baska islemler yapilmamasi anlamina gelir. Zaman uyumsuz islem ise birok degisiklik isleminin bir kuyruk iinde sirayla yapilamasidir.
435
Zaman uyumsuz olan bir dng: Set r_set=vt.OpenRecordSet(Select * from ogr) While Not r_set EOF r_set.Edit r_set.Update r_set.MoveNext Wend Zaman uyumlu islemlerde veri dzenlenirken (update) dng devam etmez. Fakat yukaridaki kodda kayit seti zerindeki tm kayitlar degistirilmektedir. Visual Basicte Veritabanlari Seenekleri Visual Basic ile veritabanlarina erismek iin degisik-belli seenekler vardir. Bunlar verilerin yapisi ve kullanimi bakimindan farklilik gsterir. 436
DAO
Veritabani programlamanin temeli DAO olusturmak ve kullanmaktir. DAO Microsoft Jet database engine i kullanarak workspace, Database, TableDef,Field,Recordset ve QueryDef gibi veri erisim bilesenleriyle baglanti saglar. DAO bir hiyerarsi yapisina sahiptir. Bu yapinin en st kisminda Microsoft Jet database engine yer alir.
Bir Database uygulamasinda Microfoft Jet database engine bir yada daha fazla nesne ierebilir. Her bir Workspace bir yada daha fazla Database koleksiyonu ierebilir. Her bir Database bir yada daha fazla TableDef nesnesi ierebilir. 437
DAO ve Jet Data Access Objects,ODBC API zerinde bir st katmandir. DAOnun, Jetin SQL zellikleri vardir. DAOnun temel zelligi Data Control zerinde ok sayida islem yapabilmesidir. DAO ve Jet ayni seyler degillerdir. Ancak birbirlerine baglidir. DAO bir veri erisim teknigi oldugu iin dogrudan kullanilir. Ancak Jet dogrudan kullanilmaz. Ayrica DAO Jete ulasmak iin de kullanilan bir veri erisim yntemidir. DAO ve Jet ODBCye baglanirken performans aisindan farkliliklar gsterirler. Jet sayesinde Access veritabanlarina erisilir, ISAM ve ODBC veri kaynaklarina erisim saglanir.
DAO nesne Modeli DAO veri erisim ynteminin iki nesne modeli vardir. Birincisi Jet sayesinde olmaktadir. Diger yntem ise ODBC ile verilere erisimdir. Bu ynteme ODBCDirect de denir.
DAO Programlama Bir veritabani uygulamasini gelistirmek iin belli asamalardaki islemleri yapmak gerekir. Kullanici arabirimi Veritabani motoru Verileri saklamak ve islemek
Veritabani programlamasinin ilk asamasi kullanici arabirimi ve aradaki iliskinin dzenlenmesidir. Veriler bir Access veritabani olarak .mdb olarak saklanirlar. Diger veritabanlarinda uzantisi farkli olabilir.
Client / Server ve Uzak Veritabanlarina Erisim Client/Server sistemlerde veritabani motoru merkezi bir server zerindedir. Bu veritabani motoru ok sayida clienta ayni anda istedikleri hizmeti verebilir. Uzak veritabani ise veritabani motorunun ayni 438
Nesne Hiyerarsisi Nesne hiyerarsisi bir nesnenin digerini iermesi demektedir. Nesneleri ieren nesneye de collection denir. DAO hiyerarsik bir nesne modelidir. Bir nesne modeli vermek gerekirse: Dim Not As Workspace Bu aiklamada Not degiskeni Workspace classin bir nesnesidir. Nesnenin hiyerarsisi nokta ile ayrilir. DBEngine.Workspaces(0).Database(0).TableDefs(0).Fields(grenci)
Yukaridaki ifadede TableDefs koleksiyonunun birinci TableDefini, Databases koleksiyonun birinci Darbaseini ve Workspace koleksiyonunun birinci Workspaceini belirtir. Dao nesnelerinin sematik gsterimi:
Aktif olan veritabanini gstermek iin asagidaki komutlar kullanilir. Dim w_space As Workspace Dim data As Database Set w_space=DBEngine Set data =w_space.Databases(0) 439
Bir tablo tanimlanmasi: Dim data As Database Dim tablo As TableDef Dim alan As Field Dim sira As Index Set data=DBEngine.Workspaces(0).Databases(0) Set Tablo=data.openRecordSet(ogr)
DBEngine DBEngine DAOnun nesne modellemesinde kullandigibir bilesendir. DBEngine Dao hiyerarsisinde diger tm nesneleri ierir ve ayni zamanda nesneleri kontrol eder.
Pr opert ies DefaultType: bir sonraki workspace nesnesi olusturuldugunda onun tipini ayarlar. DBEngine.DefaultType=dbUseODBC Asagidaki degerlerden birini alir: dbUseJet Microsoft Jet database enginee baglanti saglayan bir workspace nesnesi olusturur. dbUseODBC ODBC veri kaynagina baglanti saglayan bir workspace olusturur.
DefaultPassword Workspace nesnesi olusturuldugunda varsayilan sifreyi belirler. DBEngine.defaultuser=AKTAN DBEngine.Default.Password=SIFRE IniPath 440
Metod lar i BeginTrans,CommitTrans,RolBack Veri tabani zerinde degisiklik yaparken ikabilecek aksilikler dsnlerek nlem alinmalidir. Mesela bir grup veri degistirilmeye baslandiktan sonra tm veriler basarili bir sekilde degistirilmeyebilir. Bu tr durumlarla karsilasmamak iin veri tabaninda degisiklige basla madan nce BeginTrans metodu kullanilir. Bylece yapilan degisiklikler CommitTrans metodu veriverilmeden etkili olmayacaktir. Eger islem basarili bir sekilde tamamlanirsa CommitTrans kullanilarak degisiklikler aktif hale getirilir. Eger islem tamamlanmazsa, hatalar ikarsa veya iptal edilirse Rollback metodu agirilarak degisiklikler iptal edilir ve BeginTrans metodundan nceki duruma dnlr. Ancak bazi veritabanlari(paradox) bu yntemleri desteklememektedir. Bu gibi durumlarda komutlarda bir hata olusmaz ancak metodlar da grevini yerine getirmez. Eger kullandiginiz veritabani dosyasinin bir metodu destekleyip desteklemedigini bilmiyorsaniz bunu Transactions zelligi ile grenebilirsiniz. Eger True ise meto destekleniyordur.
CreateDatabase Yeni bir veritabani dosyasi olusturmak iin kullanilir. Dim Yeni As DATABASE Set Yeni=wrkDefault.CreateDatabase(dosya.mdb, dbLangGeneral,dbEncrypt)
CreateWorkspace Yeni bir Worksapce nesnesi olusturur. Dim yeni_wrkspace As Workspace Set deni_wrkspace=CreateWorkspace(ODBCWorkspace,admin,, dbUseODBC ) Workspaces.Append wrkODBC
441
RepairDatabase Microsoft Jet Databasei tamir etmeye,hatalari onarmaya alisir. DbEngine.RepairDatabase dosya.mdb
Workspace Workspace nesnesi Visual Basic uygulamalarinin veritabani ile nasil haberlesecegini belirler. Bir Workspace nesnesi DBEngine.Workspaces(0) biiminde tamamlanir.
Metod lar i
CreateDatabase Yeni bir Database nesnesi olusturur. Dim yeni_wrkspace As workspace Dim yeni_dbase As DATABASE Set wrkDefault=DBEngine.workspaces(0) Set yeni_dbase =yeni_wrkspace.createDatabase(dosya.mdb, dblangGeneral,dbEncrypt) 442
CreateGroup Yeni bir user nesnesi olusturur. Dim Dim Set Set var_wrkspace As Workspace yeni_grup As DATABASE var_wrkspace =DBEngine.workspaces(0) yeni_grup=var_wrkspace.CreateGroup(dosya,0418)
CreateUser Yeni bir User nesnesi olusturur. Dim yeni_user As User Dim var_wrkspace As Workspace Set var_wrkspace =DBEngine.Workspaces(0) Set yeni_user =var_wrkspace.CreateUser(Zhre_ Akman,0418,sifre1)
OpenDatabase Aktif workspace ile veritabani aar. Dim wrkspace As Workspace Dim d_base As Database Set wrkspace =CreateWorkspace(,admin ,,dbUsejet) Set d_base=wrkspace.OpenDatabase(dosya.mdb,True)
CreateProperty 443
OpenRecordset Yeni bir Recordset nesnesini olusturarak onu Recordset koleksiyonuna ekler.
TableDef TableDef nesnesi veri tabaninda bulunan tablolara erismek ve onlari kullanmak iin kullanir.
Properties
Replicable Nesnenin kopyasinin alinip alinmayacagini belirler. ReplicaFilter Kopyalama isleminden hangi kayitlarin alinacagini belirler.
SourceTableName 444
ValidationRule Bir tablodaki alana girilecek veri iin gerekli kurallari belirler.
Metod lar i CreateField TableDef iin yeni bir Field nesnesi olusturarak onu field koleksiyonuna ekler.
CreateIndex TableDef nesnesi iin yeni bir index nesnesi olusturarak onu index koleksiyonuna ekler.
OpenRecordset TableDef iin yeni bir Recordset nesnesi olusturarak onu Recordset koleksiyonuna ekler.
RecordSet Recordset nesnesi ana tabloda yer alan kayitlari temsil eder. Recordset nesnesi ayri tipe sahiptir: 445
Bu tip yerel veritabanindaki aktif tabloya erisilebilir. Burada tablo degiskeni baska bir veritabanindaki tabloya erisemez. Veri siralamak, index olusturmak ve seek metodunu kullanmak gibi islemler ancak table tipli bir recordset ile gereklesir. Dynaset
Dynaset tipine sahip bir recordset nesnesi hem yerel, hem sorgu sonucu ve hemde baska bir tabloya erisebilir. Birden fazla tablo ayni anda gncellenebilir. Snapshot
Snapshot tipine sahip bir recordset nesnesi dynasete benzer fakat sabit veri ierir. Bu tipe sahip bir Recordset nesnesi gncellenemez. Bir sorgu sonucunda elde edilen tm verilerin kopyasini ierir. Eger verilere siralamak ve index olusturmak istiyorsaniz table tipini kullanmamiz gerekir. Eger sorgu sonucunda elde ettiginiz verileri gncellemeyecekseniz dynaset tipini kullaniriz. Eger gncelleme yapmaksizin en yksek hizi elde etmek istiyorsak o zaman snapshot tipini kullanmamiz gerekir.
Recordset Degiskeni Olusturmak OpenRecordset metodu recordset degiskeni olusturmak iin kullanilan en temel metodlardir. OpenRecordset metodu Database, TableDef ve QueryDef iin vardir. Set degisken=veritabani_adi.OpenRecordSet(Kaynak,Tip,Seenekler) Seklinde tanimlanir. Diger nesneler iin ise kullanim sekli syledir: Set degisken=nesne_adi.OpenRecordSet(tip[,seenekler]) 446
DB_OPEN_TABLE DB_OPEN_DYNASET DB_OPEN_SNAPSHOT Seenekler parametresi ise bir yada daha fazla sabiti temsil eder. Bununla ok kullanicili veri erisimi yapilir. Dim Dim Set Set prog_db As DataBase progset As RecordSet prog_db=DBEngine.Workspaces(0).Database(0) progset=prog_db.OpenRecordSet(dosya,DB_OPEN_TABLE)
Pr opert ies BOF,EOF Dim wspace AS Workspace Dim data As Database Dim r_set As Recordset Set wspace =DBEngine.Workspace(0) Set data =OpenDatabase(dosya.mdb) Set r_set =data.OpenRecordset(not) With r_set Do Until.EOF dosya sonuna kadar If not>50 then Printer.print !adi ;!soyadi ,!not End if .MoveNext Loop End With
Bu zelikler dosya sonu dosya basi kontrolleridir. EOF dosya sonu, BOF ise dosya basi kontrol yapilmak istendiginde kullanilir.
Bookmark
447
Set w_space=DBEngine.workspace(0) Set data =OpenDatabase(dosya.mdb) Set r_set =data.OpenRecordSet(kayit) With r_set bas=.bookmark Do Until.EOF .MoveNext Loop .bookmark=bas End If kaydin saklanmasi
Bookmarkable Kayit setinin Bookmark islemini onaylayip onaylamadigini kontrol etmek iin kullanilir.
EditMode 448
NoMatch Seek ve Find metodlarindan sonra bir kaydin bulunup bulunmadigini belirler. Data_Adi=C:Belgelerim\dosya.mdb t_adi=isi Set w_space =DBEngine(dbTemp,admin,) Set data=w_space.openDatabase(Data_adi) Set kayitseti=db.OpenRecordSet(t_adi,dbOpenTable) Kayitseti.index=Sirano Kayitseti.Seek=,1 Do Until Kayitseti.NoMatch Kayitseti.edit Kayitseti(Sirano)=2 Kayitseti.Update Kayitseti.Seek=,1 Loop Kayitseti.Close
RecorCount Aktif Recordset nesnesi iindeki kayit sayisini belirler. Text1.Text=Kayit Sayisi & kayitseti.RecordCount
Sort Aktif Recordset nesnesi iindeki kayitlari siralama islemini yapar. Kayitseti.Sort=(adsoy)
449
Metho ds
AddNew Yeni kayit eklemek iin kullanilir. Option Explicit Dim d_adi As String Dim t_adi As String Dim w_space As Workspace Dim data As Database Dim r_set As RecordSet r_set.AddNew
Clone Bulunan Recordset nesnesinin bir kopyasini olusturur. Close alistirilan kayit setini kapatir. Private Sub Form_Unload(Cancel As Integer) r_set.close data.close set r_set=Nothing set data =Nothing End Sub 450
FindFirst Belirlenen sarta uyan ilk kaydi bulur. Dim ara As String Ara= adsoy=Ayse Sahin r_set.FindFirst ara
451
Requery Aktif olan veritabani geirir,sorgulama islemini yapar. bilgileriyle tabloyu yeniden gzden
Seek Index ile beraber kullanilan sart kriterine uyan kaydi bulur. Private Sub List1_Click Dim ara r_set.Index=PrimaryKey ara=10 r_set.Seek=,ara End Sub
Update AddNew ve Edit metodlari kullanildiktan sonra kullanilir. Yapilan degisiklikleri kaydeder. Private Sub Kayit_Click r_set.AddNew r_set!(adsoy)=text1 r_set.!(numara)=text2 r_set.!(vize)=text3 r_set.!(final)=text4 r_set.Update End Sub
Field
452
Pr opert ies
Dim data As Database Dim tdfogr As TableDef Dim alan As Field Set data=OpenDatabase(dosya.mdb) Set ogr =data.TableDefs(ogr) Set alan=tdfogr.CreateField(Numarasi,dbtext,12) Alan.AllowZeroLenhth=True Tdfogr.Fields.Append alan
Tdfogr.Fields!Not.DefaultValue=50
453
Required Bir alana bilgi girisinin zorunlu olup olmadigini belirler. Yani bir text kutusunun doldurulmadan geilmemesi gibi.
Size Alanin uzunlugunu belirler. Dim data As Database Dim tdfogr As TableDef Dim alan As Field Set alan=tdfogr.CreateField(Numara) alan.Type=dbText alan.Size=20 tdfogr.Fields.Append alan
SourceField Aktif field nesnesi iin veri kaynaginda yer alan alni belirler.
SourceTable Aktif field nesnesi iin veri kaynaginda yer alan tablo adini belirler.
ValidationRule Bir alana girilecek olan bilginin sinirlari belirlenir. Mesela sirket personeli kayitlari kontrol yapildiginda kayit disinda bir numara girilmesi engellenmis olur.
ValidaionText 454
Toobox penceresinden resimli dgmeye bastigimiz zaman veri tabani nesnesi olan Data1 eklenmis olacaktir. Bu nesneye ait zellikler properties penceresinden degistirilebilecektir. Data nesnesinin zerinde olan oklara tiklandigi zaman veri tabani dosyasindaki kayitlar sira ile dolasilmis olacaktir. Forma eklenen veri tabani nesnesi ile veri tabani nesnesi birbirine baglanmadan Data nesnesinin hibir grevi olmayacaktir.
455
Forma eklenmis olan veri tabani nesnesi ile harddiskteki veri tabani dosyasinin baglantisi bu Database Name seeneginden yapilir. Yan tarafinda bulunan noktaya tiklandiginda veri dosyasinin bulundugu srcdizin-dosya seimi yapilir.
Bu baglanti henz tamamlanmamis bir baglantidir. nk bilindigi gibi bir dosyanin iinde birden fazla Tablo olabilir. Bu nedenle hangi tablo zerinde islem yapacagimizi da Dataya belirtmemiz gerekmektedir. Bunun iin;
456
Yukarida grdgnz gibi veri tabani dnstrme islemleri yapilmalidir. Kayitli olan Access programinizi aarak dnstrme islemlerinizi sirayla tamamlamaniz gerekmektedir. Daha sonra veri tabani dosyasinin hangi tablosundaki bilgiler okunmak isteniyorsa bu RecordSource degiskenine aktarilmalidir. RecordSource blmnde dosyamizda yan tarafta bulunan oka tikladigimiz zaman kayitli olan tm tablolar grntlenecektir. Fakat biz sadece bir tabloda islem yapabiliriz. Eger bir dosyada birka tablomuz ve programimizin degisik yerlerinde bunlari kullanmak istiyorsak her bir tablo iin bir Data bulundurmamiz ve onlari da ayni sekilde baglamamiz gerekmektedir. Simdi baglantilar tamamlanmis olmaktadir. Bunu kk bir programla pekistirmek istersek;
457
Bir MDB uzantili dosya aildiginda kayit okuma kafasi ilk olarak birinci kayda bakacaktir. Tablonun ailmasi ile birlikte ilk kayda konumlanmasi sirasinda Data nesnesinin Reposition olayi meydana gelir. Bu olayi daha iyi grmek iin yukaridaki kodlari yazip programi alistirabilirsiniz. Tabii bunun iin veri dosyanizda birka kaydinizin bulunmasi gerekir. Bu tablodaki kayitlara Recordset denilme ktedir. Kaydin hangi alani ile islem yapmak istiyorsaniz, bunu belirlemek iin de Fields deyimi kullanilir. Alanin ierigi de Value degiskeni ile tespit edilir. Programimiz alistirildiginda ise asagidaki grnty alacaktir:
Text zellikleri
458
Forma eklenen Data nesnesi ile Textbox nesnesi arasinda baglanti kurmaya yarar. Data nesnesi ile birlikte Image, Label, Picturebox ve onay kutusu kontrolleri kullanilir. Simdi bu Text kontrollerini bir rnekle aiklayalim:
459
Ilk olarak form olusturulur,bundan sonra her DataSource degiskeni ile Data1in baglantisi saglanir ve
text
kutusunun
Her Text kutusunun kendi ilisigi olan blm ile baglanmasi saglanir.. Bunun iin DataField degiskenine tiklanir ve tablonun ilgili blm seilir. 460
Degisiklik yapmak yani diger kayitlari grmek iin Data nesnesinin oklarina tiklanir..
Bylece Vbasic zerinde tek satir yazmadan kayilar arasi geis veya her trl islemi yapmak mmkndr.
461
Veri tabani kayitlari zerinde degisiklik yapilamasi istenmiyorsa Properties penceresinden Data nesnesine ait Reaonly degiskenine True degerini atamamiz yeterli olacaktir. Ilk olarak Readonly seenegi False olarak ykldr yani her trl degisiklik yapilabilir fakat simdi program alistirildiginda hibir degisiklik yapilamayacaktir.
Visual Basic uygulamalari dahilinde MDB uzantili Access veri tabani dosyala rindan baska dBaseIII,dBaseIV, Paradox ve Foxpro 2.5 dosyalarina erisim saglama imkani da bulunmaktadir. Data nesnesi araciligiyla erisim saglanan veri tabani dosyasinin tipi veya ait oldugu veri tabani programinin adi Data nesnesine ait Connect degiskeninde tutulur. Access formatinda 462
nceki rneklerimizde kayitlar rasida dolasmak iin data nesnesinin dgmelerinden yararlaniliyordu. Fakat simdi biraz grsellik biraz da programciligimiza bir seyler katmak iin ek islemlerden faydalanacagiz. Visual Baisc projesi dahilinde ailan veri tabani dosyasinin tablosu ailir ailmaz tablonun zerinde bulunan kayit iin otomatik olarak bir nesne olusturulur. Bu nesneye de Recordset adi verilmektedir. Buna gre de data nesnesinin zerindeki dgmeler yardimiyla hareket etmek ve Recordsetin ierigini degistirmek arasinda bir fark yoktur. Bir sonraki kaydi grmek iin MoveNext methodundan yararlanilir. Bir kod satirina bakarsak:
463
MoveNext ile bir nceki kayda konumlanirken methodu ile okuma kafasi bir nceki kayda konumlandirilir.
MovePrevious
Kayit okuma kafasini ilk kayda konumlandirmak iin MoveFirst en son kayda konumlandirmak iin ise MoveLast metodu kullanilir. Bu komutlari grendikten sonra Data nesnesinin ekranda grnmesine gerek kalmamistir. Data nesnesinin grnmemesi iin Properties penceresinden Visible degiskeni False olarak ayarlanir.
464
Kayitlar arasinda dolasmak iin forma eklenen dgmeler kullanilmak istendigi zaman, yani program kodu yazilarak kayitlar arasi dolasilmak istendigi zaman sorunlar ikar. Ilk kaydin zerinde iken Data nesnesine tekrar MovePrevious methodu uygulanirsa programi alismasi kirilir. 465
Eger kayitlar arasi programile dolasilmak isteniyorsa bazi nlemlerin alinmasi gerekmektedir. Bunun iin Data nesnesinin BOF ve EOF zelliklerinden yararlanmalidir. Ilk kaydin zerinde iken MovePrevious metodunun kullanilmasini nlemek iin:
Komutlari kullanilir. BOF dosya basi kontroln EOF ise dosya sonu kontroln gereklestirmektedirler. MoveNext metodunun kullanilmasini nlemek iin EOF zelliginden yararlanilir.
466
Tablonun zerinde bulunan kaydi silmek iin Delete metodundan yararlanilir. Delete komutunu kullandiktan sonra projemizin ierigini grmemiz iin gncelestirmemiz ReFresh veya MovePrevious deyiminden yararlanmamiz gerekmektedir.
Adres dosyamiza yeni kayit eklemek iin Addnew metodundan yararlanilir. 467
Yeni kayit butonuna tikladigimiz zaman bir hata ile karsilasmamak iin Readonly zelliginin False olmasina dikkat ediniz. Daha nce de anlattigimiz gibi Readonly ile data zerinde hibir degisiklik yapamiyorduk.
Validate Olayi Data nesnesi ile ilgili olarak yapilan MoveNext, MoveLast, AddNew, Delete vb. olaylardan nce Validate olayi meydana gelir. Data nesnesi zerinde onay alinmasi gereken, uyarma gereken tm islemlerin Validate olayi iine yazilmasi gerekir. Validate olayinin kendinden iki degiskeni vardir: Action ve Save adli parametreler. Action adli parametrede olayin ne oldugu belirlenir(kayit, silme..). action parametrelerinin kendine ait sayisal degerleri vardir. Her olay iin action bir sayisal deger retmistir.
Data Nesnesi zerinde Yapilmak Istenen Islem MoveFirst ile dosyadaki ilk kayda gitmek MovePrevious ile bir nceki kayda gitmek MoveNext ile bir sonraki kayda gitmek MoveLast ile dosyadaki en son kayda gitmek AddNew ile dosyaya yeni kayit yazmak Update ile dosyaya gncelleme yapmak Delete ile dosyadan kayit silmek Find ile kayit arama islemi yapmak Bookmark ile kayit isaretleme
1 2 3 4 5 6 7 8 9 468
Bu rnek ile kayit dosyadan silinmek istendiginde ilk olarak karsimiza Validate yordaminin kontrol gelir karsimiza ve kaydi silip silmedigimiz sorulur. Bylece yapilacak olan yanlisliklar engellenmis olur. nmze ikacak ekran ise su sekilde olmalidir:
469
Eger kullanici kaydi silmeyi onayliyorsa ek islem yapilamaz ve Validate yordamindan ikilir. Kayit silme islemi onaylamadigi anda Validatee 0 aktarilir ve ikilir,fakat eger kayit silmek isteniyorsa Validatein ierigi 7 olur ve kayit silinmis olur. Action degiskenin ierigi 0 oldugu zaman o nesne zerinde hibir islem yapilmaz.
470
ok kullanicili ortamlarda zerinde alistiginiz projenizin baska bir kullanici tarafindan ailmamasini, degisiklik yapilmamasini istiyorsaniz Table nesnesine ait Exlusive zelliginden faydalanabilirsiniz. Baslangita bu Data nesnesinin Exlusive zelligi False degerini ierir.
Ilk olarak Microsoft Accessde degiskenleri (adsoy,no,bolum,odev,vize,quiz) olan bir tablo(ham) hazirlayacagiz,sonra da ikinci tablo(tanim)ya blmleri aktaracagiz
471
Giris iin bir ana form hazirladik. Buradan kayit/arama/silme/degistirme/listeleme blmlerine geis yapacagiz.
Data1 DatabaseName blmnden Microsoft Access dosyasina baglandirilir,daha sonra hangi tablo ile islem yapacaksa RecordSource ile ona baglandirilir. Bizim projemizde data1 ham adli tabloya, data2 ise dosyaya baglandiktan sonra blmlerin tutuldugu tanim adli tabloya baglanmistir. Bu baglanmalari yaptiktan sonra asagidaki gibi kodlari projemize yazalim:
472
Private Sub Kayit_Click() Data1.Recordset.AddNew Data1.Recordset("adsoyad") = Text1.Text Data1.Recordset("no") = Text2.Text Data1.Recordset("bolum") = Combo1.Text Data1.Recordset("odev") = Text3.Text Data1.Recordset("vize") = Text4.Text Data1.Recordset("quiz") = Text5.Text Data1.Recordset.Update Data1.Refresh Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Combo1.ListIndex = 0 Text1.SetFocus End Sub Private Sub Temizle_Click() Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Combo1.ListIndex = 0 473
ARAMA MODL
474
like'"
&
Aramayi yapmak iin aradiginiz ismi yazip Enter a basmaniz yeterli olacaktir. 475
LISTELEME MODL
Option Explicit Dim a, i As Integer Dim sql1 As String Private Sub Combo1_Click() On Error GoTo k sql1 = "select HAM.* from HAM Combo1.Text & "')" Data1.RecordSource = sql1 Data1.Refresh If Combo1.Text = "tm kayitlar" Then Data1.RecordSource = "ham" Data1.Refresh End If Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Bu Kayit Yok") End Select End Sub 476
where(HAM.BOLUM
like'"
&
Listelemek iin yani tm kayitlari gsterecegimiz nesne iin DbGrid kullandik. Istediginiz blm listeleyebilmeniz iin combo kutusundan bir blm ismi veya tmkayitlari seiniz alistirildiginda:
477
478
Ilk olarak formumuza bir data bir hareketli gsteri iin timer bir listeleme yapmak iin bir DBGrid 8 tane command button ve bir label ve seenekler iin bir combo ekleyecegiz.
Form1: Dim Dim Dim Dim ilk As Boolean veri As Database silkod As String ileri As Boolean
Private Sub Combo1_Click() Select Case Combo1.ListIndex Case 0 Data1.RecordSource = "select * from stok order by parcano" Case 1 Data1.RecordSource = "select * from stok order by parcaadi" Case 2 Data1.RecordSource = "select * from stok order by miktar" Case 3 Data1.RecordSource = "select * from stok order by rafnumarasi " Case 4 Data1.RecordSource = "select * from stok order by kritik " Case 5 Data1.RecordSource = "select * from stok order by birim " End Select Data1.Refresh DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Para Adi" DBGrid1.Columns(2).Caption = "Miktar" 480
Form2:
485
Private Sub Vazgec_Click() Unload Me End Sub Private Sub Kaydet_Click() If Len(Text1.Text) = 0 Then mesaj = MsgBox("Ltfen Para Numarasini Giriniz...") Text1.SetFocus Exit Sub End If If Len(Text4.Text) = 0 Then mesaj = MsgBox("Ltfen Raf Numarasini Giriniz...") Text4.SetFocus Exit Sub End If If Len(Text2.Text) = 0 Then Text2.Text = " " End If If Len(Text3.Text) = 0 Then Text3.Text = "0" End If Text3.Text = Val(Text3.Text) If Len(Text5.Text) = 0 Then Text5.Text = "0" End If Text5.Text = Val(Text5.Text) veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" 486
where
Form3:
Private Sub Command1_Click() If Len(Text1.Text) = 0 Then mesaj = MsgBox("Ltfen Para Numarasi verin") Text1.SetFocus Exit Sub End If deger = "" For i = 1 To Len(Text1.Text) harf = UCase(Mid(Text1.Text, i, 1)) If harf = "*" Then harf = "-" End If 489
Form4: (burada grdgnz gibi bir de data bulunmaktadir. Bu datanin baglantilari:Databasename yine datalar.mdb olacaktir. RecordSorce ise hareket adli tabloya baglanti saglayacaktir. Bu tabloda bulunan degiskenler ise:
bu sekilde olacaktir. )
491
Dim ilk As Boolean Public Sub gduz() DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Hareket Tipi" DBGrid1.Columns(2).Caption = "Tarih" DBGrid1.Columns(3).Caption = "Miktar" DBGrid1.Columns(4).Caption = "agri Numarasi" DBGrid1.Columns(5).Caption = "Tutar" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1200 DBGrid1.Columns(1).Width = 1000 DBGrid1.Columns(2).Width = 1000 DBGrid1.Columns(3).Width = 1000 DBGrid1.Columns(4).Width = 1200 DBGrid1.Columns(5).Width = 1200 End Sub Private Sub Cikis_Click() 492
Private Sub HepsiniGster_Click() Data1.RecordSource = "select parcano,hareket,tarih" Data1.Refresh gduz End Sub Private Sub KayitAra_Click() Form7.Show 1 End Sub
from
hareket
order
by
Private Sub KayitSil_Click() If Data1.Recordset.EOF Then Exit Sub End If silkod = Trim(DBGrid1.Columns(0).Value) mesaj = MsgBox(silkod + " kodlu rne ait bu stok hareketi kayitlardan silinecektir.", vbOKCancel) If mesaj = 1 Then Data1.Recordset.Delete Data1.Refresh gduz End If End Sub Private Sub Yazdir_Click() mesaj = MsgBox("Tm liste yaziciya dklecek", vbOKCancel) If mesaj = 2 Then Exit Sub yuksek = Printer.Height genis = Printer.Width satir = 3 Printer.CurrentX = 0 Printer.CurrentY = 500 Printer.FontSize = 20 Printer.Print "Stok Hareket Listesi" Printer.FontSize = 10 Printer.CurrentX = 0 Printer.CurrentY = 1000 Printer.Print "Para Numarasi" Printer.CurrentX = 1800 Printer.CurrentY = 1000 Printer.Print "Islem" 493
where
where
where
495
where
where
order
by
Form5:
496
Private Sub Command1_Click() If Len(Text3.Text) = 0 Or Val(Text3.Text) = 0 Then mesaj = MsgBox("Ltfen bir stok giris/ikis miktarini giriniz..") Text3.SetFocus Exit Sub End If If (Len(Text4.Text) = 0 Or Val(Text4.Text) = 0) And Combo1.ListIndex = 1 Then mesaj = MsgBox("Ltfen bir agri numarasi giriniz..") Text4.SetFocus Exit Sub End If veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" Form1.Data1.Refresh Form1.Data1.Recordset.Edit If Combo1.ListIndex = 0 Then Form1.Data1.Recordset.Fields(2) = Form1.Data1.Recordset.Fields(2) + Val(Text3.Text) Else Form1.Data1.Recordset.Fields(2) = Form1.Data1.Recordset.Fields(2) - Val(Text3.Text) End If Form1.Data1.Recordset.Update Form1.Data1.RecordSource = veritab Form1.Data1.Refresh 497
Form6:
499
Dim veri As Database Dim tablo As Recordset Private Sub Command1_Click() If Len(Text3.Text) = 0 Or Val(Text3.Text) = 0 Then mesaj = MsgBox("Ltfen bir stok giris/ikis miktarini giriniz..") Text3.SetFocus Exit Sub End If If (Len(Text4.Text) = 0 Or Val(Text4.Text) = 0) And Combo1.ListIndex = 1 Then mesaj = MsgBox("Ltfen bir agri numarasi giriniz..") Text4.SetFocus Exit Sub End If veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" Form1.Data1.Refresh Form1.Data1.Recordset.Edit If Combo1.ListIndex = 0 Then Form1.Data1.Recordset.Fields(2) = Form1.Data1.Recordset.Fields(2) + Val(Text3.Text) Else Form1.Data1.Recordset.Fields(2) = Form1.Data1.Recordset.Fields(2) - Val(Text3.Text) End If Form1.Data1.Recordset.Update Form1.Data1.RecordSource = veritab 500
Form7:
504
Public Sub gduz() Form4.DBGrid1.Columns(0).Caption = "Para Numarasi" Form4.DBGrid1.Columns(1).Caption = "Hareket Tipi" Form4.DBGrid1.Columns(2).Caption = "Tarih" Form4.DBGrid1.Columns(3).Caption = "Miktar" Form4.DBGrid1.Columns(4).Caption = "agri Numarasi" Form4.DBGrid1.Columns(5).Caption = "Tutar" Form4.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form4.DBGrid1.Columns(0).Width = 1200 Form4.DBGrid1.Columns(1).Width = 1000 Form4.DBGrid1.Columns(2).Width = 1000 Form4.DBGrid1.Columns(3).Width = 1000 Form4.DBGrid1.Columns(4).Width = 1200 Form4.DBGrid1.Columns(5).Width = 1200 End Sub Private Sub Command1_Click() If Len(Text1.Text) = 0 Then Exit Sub 505
Private Sub Command2_Click() If Option1.Value Then Form4.Data1.RecordSource = "select * from hareket where hareket='GIRIS' order by parcano,hareket,tarih" Else Form4.Data1.RecordSource = "select * from hareket where hareket='IKIS' order by parcano,hareket,tarih" End If Form4.Data1.Refresh gduz Unload Me End Sub Private Sub Command4_Click() If Len(Text2.Text) = 0 And Len(Text3.Text) = 0 Then Exit Sub If Len(Text2.Text) = 0 Then deg3 = Val(Text3.Text) Form4.Data1.RecordSource = "select * from hareket where miktar=" + Str(deg3) + " order by parcano,hareket,tarih" End If If Len(Text3.Text) = 0 Then deg2 = Val(Text2.Text) Form4.Data1.RecordSource = "select * from hareket where miktar=" + Str(deg2) + " order by parcano,hareket,tarih" End If If Len(Text2.Text) > 0 And Len(Text3.Text) > 0 Then deg2 = Val(Text2.Text) deg3 = Val(Text3.Text) Form4.Data1.RecordSource = "select * from hareket where miktar>=" + Str(deg2) + " and tutar<=" + Str(deg3) + " order by parcano,hareket,tarih" End If Form4.Data1.Refresh gduz Unload Me End Sub Private Sub Command5_Click() If Len(Text4.Text) = 0 Then Exit Sub Form4.Data1.RecordSource = "select * from hareket cagri=" + Text4.Text + " order by parcano,hareket,tarih" Form4.Data1.Refresh 506
where
RDO
RDO(Remote Data Object) hizli bir client/server uygulama gelisme aracidir. Temel veritabani islemlerinizi kolaylikla yapmanizi saglar. Ayrica gelismis zellikleriyle bir ODBC arabirimidir. RDO,ODBC zerinde ince bir katmandir. Sadece 32bit Visual Basic ile alisir. Iliskisel veritabanlarina erisimde DAOdan daha hizlidir. ODBC srcsnn tanimlanmasi gerekmektedir. RDO ayrica grsel arabirime de sahiptir. RDO ve Jet programlamasinin birbirine ok benzer yanlari vardir. Veritabani baglantisi rdoEnvironments nesnesinin OpenConnection metodu ile saglanir. Baglanti kurulduktan sonra OpenResultSet metodu ile kayitlara bir SQL sorgu ile erisilir. RDO ayrica SQL deyimlerinden de yararlanmaktadir. RDO kullanmak iin bazi gereksinimler vardir. Visual Basic 32bit Enterprise Edition ODBC srclerinin ykl olmasi gerekir. SQL deyimi Veri kaynaginin kayit edilmesi. DSN olusturulmasi .
Ayrica mevcut DAO nesnesi kolaylikla RDOya evrilir. RDOda kayitlar yerine satirlar, alanlar yerine de kolonlar kullanilir.
RDO 2.0in Yenilikleri 508 Yeni client batch cursor ktphanesi Batch optimistik queryler Olay temelli programlama Veriyi gncellestirebilen RDO kontrol Tek basina kullanilabilen RDO nesneleri Metodlar gibi kullanilabilen queryler
RDOnun stnlkleri RDO, yntemidir. DAO kadar gl olmasiyla birlikte daha kolay bir erisim
RDO, DAO ve Jet gibi veri-bagli yntemleridir. ODBC ve VB-SQLe baglanti iin denetimler yoktur. Bu nedenle bu verilere erisim iin kod yazmak gereklidir. Jet/DAO bir ISAM veritabani olara k tasarlanmistir. Sadece veri ierirler. Herhangi bir veritabani motoruna sahip degildir. Ancak SQL server gibi ODBC veri kaynaklari kendi veritabani motoruna sahiptirler. RDO,ODBC veri kaynaklari iin tasarlanmistir. Bu nedenle bir veritabani motoru iermez, RDO daha az sistem kaynagina sahiptir. RDOnun sagladigi Remote Data Control ile hi kod yazmadan ODBC veri kaynaklarina erisim saglanir.
Dim env As rdoEnvironment Dim con As rdoConnection Set env=rdoEngine.rdoEnvironment(0) Set con =env.OpenConneection(tablo) rcon.Close
Veriyi Elde Etmek Dim rQuery As rdoResultset Dim sSQL As String sSQL=select *from tablo alan=yyy Set rQuery=rCon.OpenResultset(sSQL) Do While Not rQuery.EOF IstDocuments.AddItem rQueryTablo rQuery.MoveNext Loop rQuery.Close
Veritabani Degistirme RDO ile veritabani zerinde degistirme yapmak iin iki yntem vardir. Toplu degisiklik yada belli bir kaydin degistirilmesi. Toplu degisiklikte action queries (islem sorgulari) yada stored procedureler kullanilir. Belli bir kaydin degistirilmesinde ise Edit,AddNew,Update ve Delete metodlari kullanilir. 509
Remote Data Controlun Kullanimi ODBC zerinden verilere daha hizli erisim iin RDC (Remote Data Control) kullanilir. Remote Data Control, Data Control nesnesine benzer biimde kullanilir. RDO grsel programla iin RDC kontrolne sahiptir. RDC kontrol belli zellikler ile RDO zerinde alisarak verilere erisimi saglar. Bu zellikler sunlardir: Connect zelligi Connenction zelligi ResultSet zelligi
Control
Islevi MovePrevious metodu kullaniminda dosya basina ulasildigini belirler. Verilerine erisilecek olan veritabanini belirtir. MoveNext metodunun kullaniminda dosyanin sonuna ulasildigini belirtir. Elde edilen verilerin tipini belirler. Elde edilecek belli bir veriyi belirler.
DataSourceName EOFAciton
DatabaseName EOFAciton
ResultSettype SQL
RecordSetType RecordSource
2. Components mens ekrana geldiginde Controls blmnden Microsoft Remote Data Control zelligine tiklariz.
3. 4.
Ve ToolBox mensne RDCmiz eklenmis olur. Bu Toola tikladigimiz zaman formumuza RDCmiz eklenir.
511
5. 6.
RDO ve RDC iliskisel veritabanlarinin erisim iin kullanilan bir alternatif veri erisim yntemidir. RDO ve RDC ile veri erisiminin yapilmasinda nemli faktr vardir. Cursor Type(islem tipi) Dataset type(veri seti type) Lock Type(kilitleme tipi)
Cursor tipleri veri zerinde hareket etmeyi veislem yapmayi saglar. Cursor tipleri ynetimi client ve server olmak zere ikiye ayirtir. Ayrica Cursor tipi belirtilmede de islem yapilabilir. Dataset tipi ise uzak verilere erisimde nemli bir bilgidir. Degisebilir veri setleri kayitlarin eklenmesine ve silinmesine olanak saglar. Kilitleme tipleri ise veri setlerinin gncellenmesinde kullanilir. Microsoft Jet veri erisiminde iki seenek vardir. Pessimistic(ktmser) Optimistic(iyimser)
Pessimistic Cursor tiplerinde ok kullanicili ortamlarda bir kullanicinin programini baska bir kullanici kullanamaz. 512
RDO nesneleri rdoEngine rdoEnvironment rdoConnection rdoTable rdoResultSet yok Keyset tipi Static tipi rdoColumn rdoQuery rdoParameter Field
DAO nesneleri DBEngine Workspace Database TableDef Recordset Tablo tipi DynaSet tipi Snapshot tipi
QueryDef Parameter
RDO metod rdoCreateEnvironment BeginTrans CommitTrans OpenConnection RollBackTrans CreateQuery Execute OpenResultSet
RDO nesne rdoEngine rdoConnection rdoEnviroment rdoConnection rdoConnection rdoConnection rdoConnection rdoConnection
DAO metod CreateWorkspace BeginTrans CommitTrans OpenDatabase RollBack CreateQueryDef Execute OpenRecordset
DAO nesne DBEngine Workspace Workspace Workspace Workspace Database Database Database
513
RDOnun zayif Ynleri Sadece 32bit uygulamalar iin tasarlanmistir. ODBC srcsnn tanimlanmasi gerekir. ODBC API kadar hizli degildir.
ODBC
ODBC (Open Database Connectivity), Visual Basic kullanarak yerel ya da uzak server veritabanlarina ulasmak iin kullanilan yntemdir. ODBC Microsoft tarafindan olusturulmus bir yapidir, standartlasmistir. Kullanici ODBC ile saglanan kaynaga baglanti yapar ve bu baglanti ile bagdasan program ile ODBC nin ulastigi kaynaktaki veriler zerinde islem yapilir.ODBC nin yapisi API fonksyonlarindan olusur. ODBC sayesinde SQL server veya diger veri saglayicilarin sagladigi veri hizmetlerine ulasmak mmkndr.
ODBC srcleri aslinda birer DLL dosyasidir. Bu DLL dosyalari bir veri saglayicisina baglanmayi saglayan spesifik fonksyonlari ierir.ODBC srcs iletisimin btn asamalarini saglar. ODBCnin temel grevleri; 514 SQL deyimlerini hazirlar ver isletir. Veritabanina baglantiyi saglar. Transactionlari isletir.
ODBC API leri, Microsoft Jet Database Engine (veritabani motoruna) alternatif bir erisim olanagi saglamakt adir, Microsoft Jet Database En.den daha hizli bir alisma sekli vardir.ODBC SQL-Access veritabanlarina ulasmanin yanisira ISAM olarak adlandirilan dBase, FoxPro gibi database kaynaklarina da erisim saglar. Visual basicte ise ODBC baglantisi degisik biimlerde yapilabilir. DAO/DC (Data Access Objects/Data Control) RDO/RDC (Remote Data Object/Remote Data Control) ODBC Direct ADO/ADODC (ActiveX Data Objects/Ado Data Control)
Sisteme yklenmis olan ODBC arayz Jet database engine tarafindan Microsoft Access ve Visual Basic tarafindan uzak veritabanlarina baglanilmada kullanilir. rnegin Microsoft SQL Server zerindeki veritabanina Visual Basic ile ulasmak iin ODBC yklenir.
ODBC Mimarisi
ODBC mimarisi drt bilesenden olusur. Bu bilesenler; 515
onlari
SQL
deyimlerine
(Driver Manager) Bir uygulama yerine srcleri ykler. ODBC fonkyonu agirmalarini isler.SQL deyimlerini belli verilere ynlendirir. Kullanicilarin Erisecegi kaynaktir.
Src yneticisi seilen src (driver) ile Veri kaynagina ulasir ve Uygulamanin veri gnderebilecegi ve alabilecegi sekilde tutar, hatalar olusursa bu hatalari tutar.
ODBC uygulamasinin temel mimarisi ODBC iki tip src yapisina sahiptir. Tek katli srcler (single tier) ok katli srcler (multi tier)
Tek katli srcler hem ODBC agrilarini hem de SQL deyimlerini isleyebilirler. ok katli srcler ise src ODBC agrisi islerler ve SQL deyimi veri kaynagina aktarirlar. Tek katli srcler SQL olmayan veritabanlari iin kullanilir. Veritabani dosyasi dogrudan src tarafindan isletilir.ok katli srclerde ise; src istegini hizmet birimine (sunucuya) gnderir. Istek SQL ya da zel veritabani biimden olabilir. ok katli srclerin esitleri ise Iki katli srcler ve katli srclerdir.
516
Srcler yklenmesi gereken DLL dosyalaridir. Time out degeri baglanti zaman asimini temsil eder.
DSN Yapi
DSN (Data Source Name) veri kaynagina baglanmak iin kullanilan bir anahtardir.ODBC veri kaynaklari esitlidir.
1-System DSN (Sistem DSN) : Sistem DSN Windows NT ve NT tabanli sistemlerde kullanilir. Btn uygulamalar ve servisler ona ulasabilir.
517
(Dosya DSN (File DSN) rnegi) 3-User DSN (Kullanici DSN): Belirli bir user profile iin kullanilabilir. DSN bilgisi lokal bilgisayarin Registry defterinde saklanir.
Sonra tm sistemde kullanilmak zere tanimlanmasi gereken DSN olan Sistem DSN sekmesine geilir ve Ekle.. (Add..) butonuna tiklanir.
519
Ve eklenenecek ODBC yapisinda kullanilacak veri saglayicisinin kullanidigi kitaplik seimi yapilir (rnekte Microsoft Access Driver (*.mdb)) ( Not: Bu kitaplikta yerel mdb dosyalari ODBC de kullanildigi iin bunda sonrasi Microsoft Access Driver driverine spesifik islemle ri ierir)
520
Bu islemler sonucunda sistem genelinde kullanilabilecek bir DSN yapisi olusturuldu.Kitabin diger blmlerinde DAO,ADO,RDO gibi veri erisim yntemleri ile ODBC DSN leri zerinde yapilabilecek islemler detayli anlatilmaktadir.
521
Resim 1 ADO alisma sekli dolayisiyla ODBC baglantisi kullanma ihtiyaci dogar. Yani programda kullandigimiz Ado nesnemizi ODBC deki bir DSN (Data Source Name)e baglamaliyiz. Yani bu islemler iin bir DSN yaratmaliyiz. Bu islemler ODBC blmnde daha kapsamli anlatilmaktadir. Fakat asagidaki adim adim rnegi ile bir DSN yaratma konusu anlatilmistir DSN Olusturma; Asagidaki ekran grntleri Win98diologlari birbirinin aynidir. 1-ncelikle ODBC alistirilir ODBC den alinmistir.Genelde ODBC
522
(Resim 3) 523
(Resim 4) 4-Ailan pencerede Veri kaynagi Adi kismina DSN ismini yazariz .
(Resim 5) 524
5- Se... butonuna tiklayarak ailan pencereden veritabanini isaretleriz. Ve veritabani DSN ile baglanmis olur bu andan itibaren DSN e ulasan programlar bu veritabanini kullanabilirler.
(Resim 5)
525
ADO Data Controlun (ADODC)temel grevi data kaynaklari ile iletisim kurmaktir. Aslinda ADO Data Control Oledbyi kullandigi iin fazla disk alani kullanmayan ve daha hizli bir yapi oldugu iin daha ncelerden veritabani uygulamalarinda yaygin olarak kullanilan RDO ve DAO nun yerine geebilecek sekilde tasarlanmistir. Kullanim olarak DAO ve RDO ya benzer fakat daha kullanisli ve daha hizlidir.Bu fark ta ADODCnin ADO-OleDB kullanmasindan kaynaklanmaktadir.
(Resim 7) En basitinden ADO Data Control nesnesini form zerinde kullanmak iin 1-Ado Data Objectin kullanilmasi iin ilknce diger componentler gibi projeye dahil edilmesi gereklidir. 2-Daha sonra ADO Data Control nesnesi form zerine yerlestirilir. 526
(Resim 9)
(Resim 8)
2-Daha sonra ADO Data Control nesnesi form zerine yerlestirilir. Component ekleme isleminden sonra Toolbox simge belirir. Bu simge ADO Data Controlun simgesidir. zerinde asagidaki
527
(Resim 10) ADOnun form zerine yerlestirilmesi diger componentlerden farkli degildir.
(Resim 11) Resim Form zerine Ado Data Object Eklendikten sonra ekilmistir AdoDC nin yapilandirilmasi ; Ado Data Control Form zerine yerlestirildikten sonra kullanilacagi amaca gre bazi ayarlarin yapilmasi gerekmektedir. Bu ayarlar ADODC zerine farenin sag tusu ile tiklandiginda ailan popup menuden ADODC Properties seenegine tiklanarak yapilabilecegi gibi ADODC isaretli iken Properties penceresindeki (Custom...) seenegine tiklanilarak da yapilabilir.
528
1-Form zerinde olan ADODC ye sag tusu ile tiklayip Properties seenegi
(Resim 12)
(Resim 13)
529
530
(Resim 15) Yukaridaki islemler sonucunda baglanti cmlecigi Provider=MSDASQL.1;Persist Security Info=False;D seklinde olusturulmus olur.
Bu islemler sonucunda ADODC bileseni Database nesnesine baglanmis olur ancak islem yapilmasi iin Recordsource (Kayit kaynagi)blmnnde ayarlanmasi gerekir.Recordsource ayari Properties penceresindeki Recordsource seenegine tiklanarak yapilabilir.
531
penceresindeki
recordsource
Resim 17 de diolog penceresinde Commandtype seenegi 2 adCmdtable olarak seilmistir bu deger ADODC nin var olan DSN in bagli oldugu database dosyasinin iindeki bir tabloya baglanacagini gsterir. Commandtype seenegi Resim 17 deki gibi 2adCmdtable olarak seilirse hemen altindaki Table or Stored Procedure seenegine tiklandiginda mevcut tablolar grntlenir. Resim 17 de, rnegimizde de telefon adindaki tablo recordsource olarak seilmistir. Resim 17 de grntlenen CommandType seenekleri Resim 18 de gsterilmektedir
(Resim 18) Burada listelenen seeneklerden 1-adCmdText seenegi SQL dili ile recordsource taniminin yapilmasini, 2-adCmdTable seenegi recordsource olarak veritabanini iindeki belirli bir tablonun seilmesini, 4-adCmdStoredProc seenegi ise StoredProcedureler yardimi ile yapilmasini saglar. recordsource taniminin
Buraya kadar anlatilan konfigurasyon islemleri projenin minimal olarak database dosyasi ile iletisimini saglamak iin tasarim asamasinda iken yapilan ayarlamalardir. ADODC yapisi diger aralar gibi projenin alismasi esnasinda da konfigure edilebilir.
Form Elemanlarinin ADO Data Kontrol ile iliskisi Visual Basicte kullanicidan bilgi girisi yapilasi istenen bilesenlerin ADODC ile baglanmasi hem proje dizayn asamasinda hemde proje alisirken mmkndr. Visual basic bilesenleri incelendiginde (textbox,label,listbox,combobox gibi) ortan zelliklere sahip olduklari grlr bu ortak zelliklerden ADODC ile baglantilarinin yapilmasini saglayan zellikleri Datasource ve Datafield zellikleridir.Bu zellikler kullanilarak ADODC nin record source bilgisindeki veriler kolayca form elemanlari tarafindan listelenebilir. rnegin veritabani.mdb dosyasina ADODC ile OLEDB ile baglanan, ve label nesnelerinde veritabaninin iindeki telefon tablosundaki verileri grntlemek istersek asagidaki adimlari izleyebiliriz (Projenin alismasi esnasinda). (Not : veritabani.mdb dosyasinin iindeki telefon tablosunda kisi_ad, kisi_soyad,kisi_tel,kisi_adres,kisi_no gibi alanlar bulunmaktadir.)
(Resim 19) Adim 2:Resim 19 da Form zerine nesnelerin yerseltirildigi grlmektedir.Burada label6 kisi_ad, label7 kisi_soyad, label8 kisi_tel, label9 kisi_adres, label10 kisi_no alanlarini gstermek zere yerlerine yerlestirilmislerdir. Command2 butonu (Baglantiyi Yap Ve Label Nesnelerini Ayarla captionlu buton nesnesi) ise ADODC yi veritabanina baglayan, form zerindeki nesneleri de ADODC ye baglayan kodlari barindirir. Ierigi asagidaki gibidir. Private Sub Command2_Click() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\veritabani.mdb;Persist Security Info=False" Adodc1.CommandType = adCmdTable Adodc1.RecordSource = "telefon" Set Label6.DataSource = Adodc1 Set Label7.DataSource = Adodc1 Set Label8.DataSource = Adodc1 Set Label9.DataSource = Adodc1 Set Label10.DataSource = Adodc1 Label6.DataField = "kisi_ad" Label7.DataField = "kisi_soyad" Label8.DataField = "kisi_tel" Label9.DataField = "kisi_adres" Label10.DataField = "kisi_no" End Sub
535
Yukarida form nesnelerinden Label nesnesinin adodc1 nesnesine program alisirken baglanmasi ile ilgili bir rnek incelendi. Konunun basinda form elemanlarinin program alismasi esnasinda ve dizayn asamasinda ADODC nesnesine baglanabilecegi sylenmisti.Dizayn asamasinda bir text nesnesinin ADODC nesnesine baglanmasi iin asagidaki yol izlenebilir. Adim 1: ncelikle form zerindeki yerlestirilirler.(ADODC, Label, Text nesneleri) nesneler yerlerine
Adim 2:Adodc ConnectionString ve RecordSource ayarlamalari yapilir Adim 3: Textbox nesnesinin Datasource ayari Ado nesnesi ile baglanir (Resim 20)
(Resim 20)
536
(Resim 21) Bu islemler sonunda program alistirildiginda ADODC nesnesi veritabani dosyasindan verileri aldiginda textbox un ierigi yapilan ayarlamalar dogrultusunda degisir.
DataGrid Bilesenleri
DataGrid Bileseni;
,DataList,DataCombo
DataGrid bileseni Dbgrid bilesenin daha gelismis seklidir denilebilir.DataGrid bileseninin kullanilmasi iin diger bilesenler gibi projeye dahil edilmesi gereklidir. Bu islem iin Projects mensnden Components (bkz resim 22) seenegi seilir.Ailan pencereden Microsoft Datagrid Control 6.0 (bkz resim 23) seilir.Unutulmamasi gereken nokta projeye Microsoft Ado Data Control 6.0 bileseninin de eklenmis olmasi gerektigidir. 537
(Resim 22)
(Resim 23)
Projeye eklenen DataGrid nesnesinin ikonu Toolboxta Resim 24 te simge seklinde yer almaktadir
(Resim 24) Datagrid nesnesi diger grid nesnelerine benzer bir grntye sahiptir. (bkz Resim 25)
538
(Resim 25)
DataGrid nesnesinin Ado Data Control nesnesi ile beraber kullanimi diger nesneler ile aynidir. DataGrid nesnesinin Ado data control ile beraber kullanilmasi iin DataSource zelliginin formdaki Ado Data Control nesnesinin ismine esitlenmesi gerekmektedir. Datagrid nesnesinin DataSource ayarlamasi dizayn asamasinda yapilabilecegi gibi projenin alisma esnasinda herhangi bir yordamda da yapilabilir. rnegin datagrid1 isimli datagrid nesnesi nin formda Command1 butonunun Click yordaminda DataSource ayarinin degistirilmesi i in asagidaki kod kullanabilir. Private Sub Command_Click() Set DataGrid1.DataSource = ADODC1 End Sub DataGrid nesnesi Dbgrid nesnesinde oldugu gibi gsterilen veriler zerinde yeni kayit ekleme,kayit silme,gncelleme gibi islemlerin yapilmasina izin verir. (DataGrid nesnesinin Properties penceresindeki zellikleri incelendiginde bu islemlere izin verilip verilmeyecegine dair ayar zellikleri grlebilir (Bkz Resim 26)
539
DataList Bileseni
Datalist bileseni DBList bileseninin yerine kullanilmasi iin tasarlanmistir.Verilerin listelenmesi amali kullanilir, kullanilmasi iin ncelikle Projeye eklenmesi gerekir.Bunun iin Projects mensnden Components (bkz resim 28) seenegi seilir.Ailan pencereden Microsoft DataList Controls 6.0 (bkz resim 29) seilir.Unutulmamasi gereken nokta projeye Microsoft Ado Data Control 6.0 bileseninin de eklenmis olmasi gerektigidir.
540
(Resim 28)
(Resim 29)
Datalist kontrolnde ListField ve RowSource zellikleri kullanilir.(Bu zelliklerin kullanim amaci liste iindeki gsterilecek verileri belirlemektir.).DataSource ve DataField zellikleri bilesen zerindeki verinin nereye yazilmasi gerektigini belirler. Asagidaki rnekt e Command1 butonunun Click yordaminda Datalist1 nesnesinin kisi_ad isimli alani listelemesi iin gerekli ayar yapilmaktadir. Private Sub Command1_Click() DataList1.ListField=kisi_ad Set DataList1.RowSource=ADODC1 End Sub DataCombo Bileseni; DataCombo bileseni DBCombo bileseninin yerine kullanilmasi iin tasarlanmistir.Verilerin listelenmesi amali kullanilir, kullanilmasi iin ncelikle Projeye eklenmesi gerekir.Bunun iin Projects mensnden Components (bkz resim 30) seenegi seilir.Ailan pencereden Microsoft DataList Controls 6.0 (bkz resim 31) seilir.Unutulmamasi gereken nokta projeye Microsoft Ado Data Control 6.0 bileseninin de eklenmis olmasi gerektigidir.
541
(Resim 30)
(Resim 31)
DataCombo kontrolnde ListField ve RowSource zellikleri kullanilir.(Bu zelliklerin kullanim amaci liste iindeki gsterilecek verileri belirlemektir.).DataSource ve DataField zellikleri bilesen zerindeki verinin nereye yazilmasi gerektigini belirler. Asagidaki rnekte Command1 butonunun Click yordaminda Datalist1 nesnesinin kisi_ad isimli alani listelemesi iin gerekli ayar yapilmaktadir. Private Sub Command1_Click() DataList1.ListField=kisi_soyad Set DataList1.RowSource=ADODC1 End Sub NOT : Eger listelenen kayitlar sadece okunabilir kilinmak isteniyorsa DataSource ve DataField kisimlari bos birakilir
(Resim 32)
ADO sunucu,istemci veya wrb uygulamalari gelistirmek iin birok zellige sahiptir.
ADOnun zellikleri; Sunucu-istemci uygulama gelistirmeyi kolaylastirmistir. Nesneler bagimsiz yaratilir. Nesne modeli hiyerarsik degildir. Batch halinde gncelleme yapilabilir.(Islemler toplu halde yapilabilir.)
ADO OLEDB veri saglayicisini kullanir. RDO,DAO,ODBC ise Jet veri veri saglayicisini kullanir. OLEDB Hakkinda; OLEDB iliskisel ve iliskisel olmayan veritabani kaynaklarina erisimde kullanilir, hizli bir arabirimdir. Daha az disk alani ve bellek harcar OLEDB ODBCye gre daha fazla veri tipine erisim saglayabilir.(rn posta,dosya 543
(Resim 33)
(Resim 34)
ADO Nesneleri
ADO yapi itibari ile olduka basit bir nesne modeline sahiptir.ADO modelinde birok nesne seimli olarak veya bagimsiz olarak kullanilabilir.
ADO Modelinde Yeralan Nesneler; Nesne Connection Command Field Error Parameter Recordset 544 Amaci Veri kaynagina dogrudan baglanti olusturur. Veri kaynagi zerinde query (Sorgu) isletir. Kayit iindeki alan. (kolon) Veri kaynagindaki hatayi barindirir. Bir Komut iin parametre barindirir. Bir komut tarafindan retilen (dnen) verileri barindirir.
rnegin bir Access veritabanina baglanti iin su nesneler kullanilmalidir. Veri: veritabani.mdb Connection : veritabani.mdb Command : SELECT * FROM telefon Recordset : Elde edilen bilgi. Asagidaki rnekte sadece Recordset Microsoft Access veritabanina erisilmistir. nesnesi kullanilmus ve bir
Dim kayit As New ADODB.Recordset kayit.open SELECT * FROM telefon,DSN=ORNEK, adOpenKeyset Set DataGrid1.DataSource = kayit
Connection Nesnesi
Connection nesnesi bir veri kaynagina baglanti yapmak iin kullanilir.Connection nesnesi sayesinde bir veri saglayici araciligi ile bir komut isletilir. Command nesnesi olusturmaya gerek kalmaz.Connection nesnesi ile ConnectionString (Baglanti cmlesi) zelligi kulllanilir. Bu zellik sayesinde baglanilacak veri kaynagi belirlenir.Ve Open methodu ile de baglanti ailir Istemci-sunucu veritabanli sistemlerde connection nesnesi sunucuya bir ag baglantisini olusturur. nceden tanimlanmis nesnelerden bagimsiz olarak istenilen sekilde yaratilabilir. Temel zellikleri ve Methodlari; Connection Nesnesinin temel zellikleri;
zellik CommandTimeout ConnectionString ConnectionTimeout CursorLocation Errors Mode Aiklama Bir komutun Isleme zamanidir Veri kaynagini belirtir. Baglanti iin bekleme zamani Bir client yada server erisim biimi Olusan hatayi tutar. Baglantinin erisim izinleri. Varsayila n 30 15 N/A Unknown Deger Araligi 0-Mx Ulong String deger >=1 N/A
Connection String,Mode ve ConnectionTimeout zellikleri ile baglantinin ne kadar sre iinde olmazsa hata verilecegi, baglantinin hangi provider ile saglanacagi ve baglanti sonucundaki uyulmasi gereken izinler belirlenir. 545
DefaultDatabase (Varsayilan veritabani) zelligi, baglanti nceden varsayilan olarak ayrilmis olan veritabaninin imini belirtir.
iin
Provider zelligide baglanti yapilacak olan veritabaninin veri saglayicisi trn belirtir. (rn ODBC Provider)
Cursor Location zelligi Cursor veri saglayicisi ile erisimi dzenleyerek verilere ulasim biimini degistiren ve istekte bulunan uygulamaya verileri dndren ufak bir uygulamadir. Cursor veri seti konumunu izleyerek birok islemin ayni anda yapilmasini saglar. Cursor Location Degerleri; adUseClient adUseServer Yerel cursor ktphanesi tarafindan saglanir. Varsayim olarak kullanilmaktadir. Veri saglayicisi veya ODBC tarafindan varsayilan olarak tanimli cursoru kullanir.
Cursor Location zelliginin degistirilmesi dzenleme isleminden sonra varolan baglantilarida etkilemektedir. CursorLocation zelliginin Degerleri; adUseServer AdUseClient 2 3 Server-side yada driver-supplied cursorlar kullanilir Client side cursorlar kullanilir.
Eger CursorLocation bir Recordset iin belirtilmis ise bir baglanti ile birok recordset kullanilabilir. Mode zelligi Baglanti ile elde edilen veriler zerindeki erisim izinlerini belirtir.
adModeUnknown adModeRead adModeWrite adModeReadWrite adModeShareDenyRead adModeShareDenyWrite adModeShareDenyExclusive adModeShareDenyNone 0 1 2 3 4 8 12 16 Varsayim,Izin dzenlenmemis Read-Only izin. Write-Only izin. Read/Write izin. Diger kullanicilarin baglantiyi read iznini engeller. Diger kullanicilarin baglantiyi write iznini engeller. Diger kullanicilarin baglantiyi amasini engeller. Diger kullanicilarin baglantiyi herhangi bir izinle amasini engeller.
546
Connection Metotlari
Connection Metotlari, Connection nesnesi ile yapilabilecek islemlerdir. Open ve Close metotlari ile de veri saglayicisina baglanti kurulur veya baglanti kesilir.Open metodunun isletilmesi ile baglanti baslar.Komutlar isletilir ve sonular alinir. BeginTrans Cancel Close CommitTrans Execute Open OpenShema RoolbackTrans Aktif Connection zerinde yeni bir transactiona baslar. Isletilmekte olan komutu iptal eder. Aktif baglanti kapatir. Mevcut Transaction isl. Tamamlar. Baglantiya ait komutu isler. Bir baglanti aar. Bir Recordsetin schema bilgisini verir. Mevcut transactionu geri alir.
Open methodu ile aktif baglanti yaratilir ve sistem kaynaklari kullanilmaya baslanir, Close methodu ile aktif baglanti kapatilir ve sistem kaynaklari serbest birakilir. Asagidaki kurulur. rnekte Access veritabanina DSN araciligi ile baglanti
Execute methotu ise aktif baglanti zerinde bir komut alistirir. Bu komut genelde SQL Update komutu gibi bir satir olarak veri elde etmeyen bir komuttur. Set recordset = connection.Execute (CommandText,RecordAffeced,Options) CommandText bilgisi ise string bir degerdir.Bir tablo adi, SQL sorgusu, stored procedure yada text bir bilgi ierir. RecordsAffected bilgisi seimli olarak kullanilir.Bu bilgi islemden etkilenen kayit sirasini dndrr. Options bilgisi de seimliktir. Providerin CommandTexti nasil isleyecegini belirtir. CommandText Bilgisinin Degerleri-Aiklamalari; AdCmdText AdCmdTable AdCmdTableDirect AdCmdTable Komut metninin text olarak degerlendirilmesini saglar. Tablodaki tm kayitlar iin bir SQL sorgusu kullanilmasi. Veri saglayicisinin tablodaki tm kayitlari dndrmesi. Komut metninin bir tablo adi olarak degerlendirilmesi 547
rnegin bir komutu alistirmak iin komutu , Set kayit = bagl.Execute(SELECT * FROM telefon) Seklinde kullanabiliriz.
DSN Kullanarak Baglanti Kurmak Baglanti kurmanin en kolay yolu DSN kullanmaktadir, az nce yapilan ince ayarlamalari- detaylarin yapilmasina gerek kalmaz. O detaylari DSN otomatik olarak isleme koyar.(Asagidaki rnekte ORNEK isimli DSN e baglanilmistir.)
Dim baglanti As New ADODB.Connection Baglanti.open ORNEK
548
Command Nesnesi Command nesnesi bir baglanti zerinde isletilebilen sorgulari, Stored Procedureleri alistirmada kullanilir.Isletilmeden nce aktif olan baglanti ile iliskilendirilmelidir. Genelde Recordset nesnesinin yaratilmasi ve kayitlarin elde edilmesi iin kullanilir.
Command Nesnesinin zellikleri
zellik Active Connection Command Textr Command Timeout Command Type Name Parameters Prepared Properties Aiklama Ilgili Baglantiyi geri dndrr Komut Nesnesi Isletilecen komut zaman asimi sresi Isletilecek komut tipi Baglanti tipinin ismi Parameter nesnesinin bilesimi Komutun derlenmis olmasi zellikler Birlesimi Varsayim Yok Yok 30 AdCmdNothing Yok Yok False N/A Deger Araligi Baglanti nesnesi Deyim 0-Ulong (Maks) Enum Deyim N/A True/False N/A
549
Varsayilan CommandType zelligi adCmdUnknown komutun tipini tanimlamak yeterli olur. Komut.CommandText = SELECT * FROM telefon Veya ; Komut.CommandText =telefon Yukaridaki iki deyim de ayni sonucu retmektedir.
Name zelligi Name zelligi bir command isletildiginde dinamik bir baglantinin olusmasini saglar. State zelligi Mevcut nesnenin o andaki durumunu gsterir. State zelliginin degerleri; adStateClosed 0 Varsayim. Command nesnesi kapali.
551
Command Nesnesinin Metodlari Cancel Bir commandin isletimini iptal eder. CreateParameter Bir parametre nesnesi yaratir. Execute Bir komutu ya da queryyi isletir.
Parameter Nesnesi Parameter nesnesi Command nesnesi ile birlikte parametreleriargmanlari temsil eder.Eger agrilmak istenen sorgu veya storedprocedure ise bu sorgu ve stored-procedurelerin parametreleri biliniyorsa CreateParameter metodu ile parametreler yaratilir. Parameter nesnesinin zellikleri; Name :Name zelligi ile parametrelerin ismi elde edilebilir. Value :Value zelligi ile parametrenin degeri grenilebilir. Attributes, Precision, Direction, Size, Type gibi zellikler ile nesnenin diger zellikleri denlenir. Recordset Nesnesi En ok kullanilan nesne Recordset nesnesidir. Recordset nesnesi veri kaynagindan gelen verileri barindirir. Veri kaynagina gnderilen sorgunun sonucu veriler burada tutulur.Recordset genelde aktif baglanti nesneleri ile veya command nesnesi ile kullanilir.Bagimsiz olarak ta kullanilabilir.Istendigi kadar Recordset nesnesi olusturulabilir.Bir recordset nesnesi olusturulacagi zaman drt degisik kursor tipinden biri kullanilabilir. Dynamic Cursor, diger kullanicilarin yaptiklari islemlerin grlmesini saglar, btn islemlere izin verir. Keyset Cursor, diger istemcilerin ekledigi kayitlarin grlmesin engeller.Kullanici hertrl izine sahiptir. Diger istemcilerin yaptigi veri degisiklikleri grlebilir.
552
Recordset aktif hale gelmeden nce onun CursorType zelligi ayarlanir. Eger hibir ayarlama yapilmazsa ForwardOnly varsayim olarak kullanilir. Recordset nesnesi olusturuldugu zaman o andaki ilk kaydi gsterecek sekilde ayarlanir. Bu anda BOF (Dosya Basi) ve EOF (Dosya Sonu) zellikleri false degerine sahiptir. BOF zelligi, o andaki kaydin recordset nesnesi iindeki ilk kayittan nceki kayit oldugunu, EOF zelligi ise o anki kayitin son kayittan sonraki kayit oldugunu belirtir. BOF ve EOF zellikleri, recordset iinde kayit olup olmadigina ya da kayitlar arasinda gezinirken olusturulan recordset nesnesinin sinirlarinin disina ikilip ikilmadigina karar vermek iin kullanilir.
RecordCount zelligi ise recordset nesnesinin barindirdigi kayit sayisini verir.Eger Ado kayit sayisini belirleyemez ise deger 1 olarak geri dner. Tm kayitlar zerinde islem yapamilmek iin asagidaki teknik kullanilabilir. Kayit.movefirst For j=1 to kayit.recordcount Islemler Islemler Islemler kayit.movenext
553
554
Recordset nesnesinin zelliklerinin belirtilmesinden nce recordset nesnesinin yaratilmasi gerekir. Recordset bir connection veya komut ile i iliskilendirilir.Ardindan erisim, kilitleme gibi dzenlemeler yapilir. rnek Recordset nesnesi olulturulmasi ve verilere erisim;
555
Dim baglanti As New ADODB.Connection Dim komut As New ADODB.Command Dim kayit As New ADODB.Recordset Baglanti.CursorLocation=adUseServer Baglanti.Open ORNEK With komut .CommandText = SELECT * FROM telefon Set .ActiveConnection = baglanti End With With kayit .Cursortype = adOpenDynamic .LockType = adLockOptimistic .Open komut End With Set Datagrid1.DataSource = kayit Cursor Type zelligi CursorType zelligi recordset iinde hareketi kontrol eder.Olasi isareti tipleri veri saglayicisinin destegiyle mmkndr. Veri saglayicisi tarafindan kullanilmayan bir isareti kullanildiginda ADO varsayim olarak en yakini kullanir.
Sabit AdOpenForwardOnly AdOpenKeyset AdOpenDynamic AdOpenStatic Deger 0 1 2 3 Aiklama Sadece ileri Gncel veri ierir.Geriye dogru hareket edilir. Gncel veri ierir.Geriye dogru hareket edilebilir, Bookmark kullanilabilir. Veri Sabittir. Hareket geriye dogrudur.
556
Not: Pessmistic locking islemi Client-side ler tarafindan kullanilmaz. Bookmark zelligi Bookmark zelligi sayesinde bir recordset iindeki bir kayitin konumu belirlenir, kayit edilir. Daha sonra bu konuma geri dnlebilir.Recordset aildigi anda her kayita tek bir bookmark atanir. rnek: Bulunan kayitin konumu saklanir. Dim im as Variant Private Sub bookmarkla_Click() Im=kayit.bookmark End Sub Private Sub Geridon_Click() Kayit.bookmark = im End Sub Not : Bazi cursor tipleri bookmark kullanimini desteklemez (Forward-only, Dynamic) Eger kullanilan cursorun bookmarki destekleyip desteklemedigi grenilmek isteniyorsa asagidaki kodlar kullanilabilir. Destek=kayit.Supports(adBookmark) false olarak geri dner.) Msgbox destek Eof zelligi Kayit setinin sonunu gsterir. EOF zelligi kullanicinin en son kayidi gemeye alismasinda true degerini verir. While not kayit.EOF Kayit zerindeki islemler kayit.movenext Wend (deger true veya
557
rnegin asagidaki kodlar ile kayit isimli recordset nesnesinde bir sonraki kayida erisilebilir. Private Sub sonraki_Click() Sonraki kayita geiliyor Kayit.MoveNext Eof kontrol yapilyor if kayit.EOF Then beep msgbox Bu en son kayittir kayit.MoveLast
558
Asagidaki rnekte ise Open methodu farkli bir sekilde kullanilmistir.(SQL Sorgusu ile kayitlar, SQL serverdan istenmistir, iktilar ise DBGride ynlendirilmistir.) Dim kayit As New ADODB.Recordset Kayit.open SELECT * FROM telefon,driver={SQL Server};Server=BIM;uid=sa;pwd=;database=telefon,adOpen Keyset,adLockOptimistic Set DataGrid1.DataSource = kayit MoveNext metodu bir sonraki kayita, MovePrevious metodu bir nceki kayita MoveLast metodu enson kayita MoveFirst metodu ise ilk kayita erismeyi saglar. Recordset zerindeki yapilan islemler (kayit islemi, silme islemi, dzenleme islemi) sonucunda recordset gncellenmelidir. Gncelleme islemi Update Islemi iki farkli sekilde yapilir.Aninda (immediately) ve kme halinde (batched ) gibi. Aninda yapilan gncellemede yazilan veriler Update metodu agrildiginda veriler zerinde yapilan tm degisiklikler aninda uygulanir.(rn Addnew ve Update) Eger veri saglayici kme halindeki gncellemeyi destekliyorsa, birden fazla degisiklik yapildiysada bu degisiklikler nce bir cache bellekte
559
baglanti,
Recordset nesnesi kayitlar zerinde arama ve siralama yapabilmek iin zel methodlara sahiptir.Find methodu ile belirli bir kayit bulunur, Sort methodu ile kayitlar artan veya azalan degerlere gre siralanirlar.Filter methodu ise belli bir deger ieren kayiti bulmayi saglar. Sort Sort zelligi recordset iindeki verilerin siralanma dzenini belirler.Siralama belirli bir alana gre yapilir. Siralama ASC(artan) veya DESC (azalan) seklinde yapilabilir.Eger bir deger verilmez ise o zaman sort islemi ASC olarak yapilir. rnek:Siralama
560
Seklinde bir kod kullanilabilir. Siralama islemi sonrasinda verilerin tekrar kullanici bilgilendirme amali kullanilan bilesenlere tekrar gnderirilip gncelleme isleminin yapilmasi gerekir. kayit.Sort= Set Datagrid1.DataSource = kayit Filter Filter zelligi, recodset iindeki verileri bir kritere gre szgeten geirilmesini saglar. Mesela aranan kriter ALI olsun , kayitlardan istenen alan ALI szcgne gre filtrele nir ve ALI szcgne sahip olan kayitlar listelenir. rnek:
kayit.filter=ad=ALI
Find Methodu Find methodu bir recordset zerinde bir kolon iinde bir deger arar.
kayit.Find(ad=Nedim)
Eger aranacak kriter bir textbox ise asagidaki gibi bir yntem kullanabiliriz.
kayit.Find ad like & text2.text&
561
DATA Environment
Sorgulama Islemleri
Data Environment Data Environment, database uygulamalarini gelistirmek iin kullanilan bir yapidir.Grafik ortami ve programciya sagladigi kolayliklar sayesinde kolayca az kod kullanilarak database uygulamalari gelistirmeye olanak saglar.
Yapi itibari ile bir ADO Recordseti ierir.Tm recordset zellikleri Data Environment vasitasiyla kullanilir. Data Environment Designer ise ActiveX designerdir. Data Environment Designer sayesinde ADO Connectionlari ve Commandlari yaratilir. Nesneler baglanir ve proje alistiginda iktilar kullanilir.
Data Environment Designerin proje genelinde kullanilmasi iin ilknce projeye eklenmesi gerekir.
1-Project (bkz Resim1)menusunden Components seilir. 2- Designers sekmesi seilir ve Data Environment seenegi seilir.(bkz Resim 2)
562
(Resim 1)
(Resim 2)
3-Islem onaylanir ve Data Environment Projeye eklenmistir. Data Environmenti kullanmak iin ncelikle proje bilesenlerine eklenmesi gerekir fakat bu islemden sonra mevcut projede kullanabilmek iin Data Environment Designer kullanilir, yani Data Environment Designerin de projeye eklenmesi gerekmektedir. Bunun iin Project mensnden More ActiveX Designers... seenegi altindaki Data Environment seenegine tiklanilir ve Data Environment Designer ekrana gelir.(bkz Resim 3)
563
(Resim 3)
Bunun disinda Data Environment kullanimi iin iki adet referansin da projeye dahil edilmesi gerekir.
1- Microsoft ActiveX Data Objects 2.0 Library. 2- Microsofy Data Environment Instance 1.0 (Not: Islem Project Menusunden References seenegine tiklanilarak ailan diolog kutusundan yapilabilir)
564
Bir projede Data Environment kullaniliyorsa islemler bu D.E nesnesinin iinde barindirdigi Connection ve Command nesneleri ile yapilir.
Connection nesnesi herhangi bir providerin sagladigi veri kaynagidir,(varsayilan adi connection1 dir) Command ise o kaynak ierisindeki bir Stored Procedure , SQL sorgusu veya tablo olabilir.(varsayilan adi command1 dir) Data Environment Designer aildiginda ayarlari yapilmamis Connection1 baglanti nesnesini ierir.Ayarlari yapilip istenen veri saglayicisina baglanilmak iin varolan Data Environment Designerin iindeki varolan Connection1 nesnesinin zerine sag tusla tiklayip Properties(bkz Resim 5) seenegine tiklamak yeterlidir. Ailan diolog penceresinde gerekli ayarlar yapilir.
565
( Resim 5) rnek olarak Bir Data Environment- Connection nesnesi konfigure edilme Islemi Yapilacak islemler ADODC kontrolnn konfiurasyon islemindeki islemlere benzemektedir.Daha nce anlatildigi gibi Connection nesnesine sag tusla tiklanir ve Properties seenegine tiklanir.Ailan pencere asagidaki gibidir. Bu pencereden kullanilacak olan Data Provider seilir.(bkz Resim 6)
(Resim 6)
566
(Resim 7)
Baglantiyi Sina (veya Test Connection) butonuna tiklanilarak baglantida sorun olup olmadigi da kontrol edilebilir.(Resim 8)
(Resim 8) Data Environment te islemler Connectionlar ve Commandlar ile yapiliyordu demistik.Yukarida anlatilanlar sayesinde bir connection nesnesi bir veri saglayicisina baglanir.Fakat islem yapabilmek iin birde komut nesnesinin Data Environment Designer vasitasiyla eklenmesi ve gerekli ayarlarinin yapilmasi gerekir. Bunun iin de Data Environment Designerda Connection nesnesinin altindaki kisimdaki Command seenegine sag tusla tiklayip Add Command seenegine tiklanmasi gerekir.(bkz Resim 10)
567
(Resim 10) Bir nceki sayfada anlatilan islemler yapidiktan sonra Command1(komut nesnesinin varsayilan ismi Command1 dir denmisti) isminde yeni bir komut olusturulur.Fakat komut nesnesinin de konfigure edilmesi gereklidir. Bunun iinde Command1 isimli komut nesnesine sag tusla tiklanilarak ailan menden Properties seenegine tiklanmalidir.(bkz Resim 11)
568
(Resim 11) Yukaridaki islem adimla ri sonucunda ayarlamalarin yapilacagi diolog penceresi ekrana gelir.(bkz Resim 12)
(Resim 12)
569
(Resim 13) Bu islemler sonucunda Command1 nesnesine uygulanan her islem direkt olarak bagli bulundugu baglantinin iindeki bagli oldugu kaynaga uygulanir. Ayrica bir komut nesnesi olusturuldugunda otomatik olarak recordset nesnesi yaratilir.Ve komut nesnesinin isminin nne rs eki getirilerek bir varsayilan recordset nesnesi olusturulur. rneklenen Command nesnesinin zellikleri; Baglanti nesnesi ismi Komut nesnesi ismi Komut Objesinin ismi : Connection1 : Command1 : telefon
Update isleminin yapilmasi (Update yapilir ve herhangi bir iktisi olmaz.) Recordset Ama Metodu; Asagidaki rnekte Microsoft Access veritabani dosyasi olan (c:\veritabani.mdb ODBC ayarlarindan ORNEK DSN e sahip) ORNEK DSN ine baglanilarak bilgiler form zerindeki bir Datagrid kontrolne ynlendirilmektedir. Private Sub Form_Load() Eger baglanti kapaliysa baglanti ailir. DataEnvironment1.Connection1.State=asStateClosed Then DataEnvironment1.Connection1.Open Eger Kapaliysa Varsayilan Recordset Ailir. DataEnvironment1.rsCommand1.State=adStateClosed Then DataEnvironment1.rsCommand1.Open Set DataGrid1.DataSource = DataEnvironment1.rsCommand1 End Sub Recordset nesnesi sayesinde veriler zerinde konum degistirilebilir. rnegimizdeki yapida herhangi bir islem araligina Sonraki kayit iin DataEnvironment1.rsCommand1.MoveNext nceki kayit iin DataEnvironment1.rsCommand1.MovePrevious Ilk kayit iin DataEnvironment1.rsCommand1.MoveFirst Son kayit iin DataEnvironment1.rsCommand1.MoveLast Komutlarini eklememiz yeterli olacaktir. Form zerindeki Nesnelerin Data Environment Iliskisi Data Environment ile olusturulan yapi geregi bir kaynaktaki verilere ulasilabilir.Bu verilerin kullaniciya sunulmasi sphesiz form nesneleri ile 571
(Resim 14) Resimde Data Environment ierigindeki Command1 nesnesinin iindeki kisi_ad alanina bagli bir form nesnesi (Label-Textbox) olusturulmustur (Islemde srkle birak teknigi kullanilmistir.) Eger Istenirse form nesnelerinin zellikleri Data Environment iindeki listelenen alanlara sag tusla tiklanarak ailan menden Properties (bkz Resim 15)seenegine tiklanarak ailan diolog penceresinden de yapilabilir.
(Resim 15) rnegin kisi_ad alaninin Label nesnesininin Captionunu degistirmek iin 572
(Resim 16) Istenen degisiklik yapildiktan sonra da Islem Tamam (OK) ile onaylanir ve bu islem sonrasinda srkle birak teknigi ile forma srklenen alan nesnesinin zelligi istenen sekilde olusturulur.
(Degisiklikten nce)
rnek uygulama olarak ORNEK isimli DSN e baglanmis olan bir Connection nesnesi kullanilmaktadir.Komut isimli Command nesnesi ORNEK DSNi iindeki telefon tablosuna baglidir. Adim Adim Islemler
ncelikle Bos bir proje aildi.(Resim 17)
573
(Resim 18) (Project mensnden Componentse tiklanir ailan pencereden Designers sekmesinin altindan Data Environment seenegi isaretlenir,islem onaylanir.) Projeye gerekli referanslar eklendi; (Microsoft ActiveX Data Object 2.0 Library ve Microsoft Data Environment 1.0) 574
(Resim 19) Data Environment Designerdaki Connection1 nesnesi ODBC DSNe baglandi. (bkz Resim 20 )
( Resim 20 ) (Command1 nesnesinin zelliklerine girildi, saglayici kismindan ODBC driveri seildi ileri (next) butonuna tiklandi, sonrasinda ailan pencereden ORNEK isimli DSN seildi ve islem onaylandi.)
575
(Resim21) (Data Environment Designer iinde Command seenegine sag tusla tiklandi ve Add Command seildi, aiklan pencerede Command ile ilgili ayarlamalar yapildi (Ayarlamalar Database Object olarak table ve Object name olarak telefon degerlerinin kullanilacagi sekilde yapildi.)) Form elemanlari zerine alanlar eklendi (Srkle Birak Teknigi ile) (bkz Resim 22)
576
(Resim 23) Kodlar; Private Sub cikis_Click() DataEnvironment1.Connection1.Close End End Sub Private Sub ilk_kayit_Click() If Not DataEnvironment1.rsCommand1.EOF Then DataEnvironment1.rsCommand1.MoveFirst End If End Sub Private Sub onceki_kayit_Click() If Not DataEnvironment1.rsCommand1.BOF Then DataEnvironment1.rsCommand1.MovePrevious End If End Sub Private Sub son_kayit_Click() If Not DataEnvironment1.rsCommand1.EOF Then DataEnvironment1.rsCommand1.MoveLast End If End Sub Private Sub sonraki_kayit_Click() If Not DataEnvironment1.rsCommand1.EOF Then DataEnvironment1.rsCommand1.MoveNext End If
End Sub
577
FORMLARIN AIKLAMASI
ADODC
nbilgi:
Ile
Yapilan
rnek
Uygulama
Programin amaci ADODC ile veri girisi,arama,silme,dzeltme,listeleme,filtreli listeleme gibi islemleri rneklemektir. Basite telefon defteri islevini grebilecek yapidadir. Programin alismasi iin kitap ile verilen ek program CD sindeki ilgili klasr altinda bulunan database.mdb dosyasinin bir ODBC Sistem DSN i ile baglanmasi gerekmektedir.DSN ismi telefon_ olmalidir. Program biri MDI formu (bkz Resim 1) olmak zere alti formdan olusmaktadir.
578
(Resim 1)
Bu formlarin basite kullanim amalari filtre_ile_liste Filtreleme rnegi kayit_isl_1 Kayit girme rnegi kayit_isl_2 Genel kayit islemleri rnegi (Arama,Silme,Degistirme) Liste1 Tm kayitlarin listelenmesi rnegi MDIForm1 Programin ana formu sorgu_ile_liste SQL sorgularinin kullanilmasinda dair rnek MDIForm Aiklamasi Programin giris formudur, kullanici menler yardimi ile gerekli formlari alistirabilir.Proje genelinde kullanilan Baglanti tanimi Load yordaminda yapilmistir.(bkz Resim 2)
579
(Resim 2) MDI formun kodlari Asagidaki gibidir; Private Sub cik_Click() End 'Program sonlandirilir. End Sub 'Bu kisimdaki kodlar formlarin aktiflesmesi amalidir. Private Sub fl_Click() filtre_ile_liste.Show End Sub Private Sub ke_Click() kayit_isl_1.Show End Sub Private Sub ksga_Click() kayit_isl_2.Show End Sub Private Sub ui_Click() unvan_isl.Show End Sub Private Sub MDIForm_Load() End Sub Private Sub s_i_l_Click() sorgu_ile_liste.Show End Sub Private Sub tkl_Click() Liste1.Show End Sub 580
(KAYIT_ISL_1 formunun ekran grnts) KAYIT_ISL_1 Formunun kodlari asagidaki gibidir; Private Sub temizle() 'buradaki fonksyonun amaci asagidaki kodlari 'ogu kez tekrarlamamaktir 'Bu kodlar agrildiklarinda form elemanlarinin 'ii bosaltilir. ad.Text = "" soyad.Text = "" adres.Text = "" telefon.Text = "" mail.Text = "" End Sub Private Sub ad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then soyad.SetFocus End If End Sub Private Sub adres_Change() If KeyAscii = 13 Then telefon.SetFocus End If End Sub Private Sub Command1_Click() 'Ado nesnesi tazelenir Adodc1.Refresh 581
Private Sub Form_Activate() 'Form Aktif hale geince kursor text1 nesnesine odaklanir. Text1.SetFocus End Sub Private Sub Form_Load() 'Form yklendiginde Adodc1 nesnesi yenilenir. Adodc1.Refresh End Sub Private Sub kayit_degistir_Click() 'Daha nceden sql sorgusu ile databaseden ekilen veriler 'Adodc1 nesnesinin ierigindedir.Form elemanlarinin datafield degerleri 'adodc1 nesnesinin iinde barindirdigi tablonun alanlarina baglanmistir 'Adodc update edilir ve degisikliker form nesnelerinden alinip adodc1 'recordsetine yani kaynaga yazilir Adodc1.Recordset.Update 'kayit degistirme ve kayit silme butonlari pasif edilir kayit_degistir.Enabled = False kayit_sil.Enabled = False 'Form temizlenir temizle End Sub Private Sub kayit_sil_Click() 'Adodc1 in iinde bulundurdugu kayit silinir. Adodc1.Recordset.Delete 'Adodc1 gncellenir degisiklikler uygulanir. Adodc1.Recordset.Update 'Form elemanlari temizlenir. temizle End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Text2 text kutusunda iken kullanici Enter'a basarsa 'kursor text2 nesnesine odaklanir Text2.SetFocus End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 584
(Liste1 formunun ekran grnts) Liste1 formunun kodlari ve kod aiklamalari asagida incelenebilir . Private Sub cikis_Click() Unload Me 'Form Unload edilir. End Sub Private Sub Command1_Click() 'Adodc1 nesnesinin recordsource ayari yapilir 'Asagidaki SQL sorgusunun anlami tm kayitlar dir. Adodc1.RecordSource = "SELECT * FROM telefon" 'DataGrid1 nesnesi gncellenir. Set DataGrid1.DataSource = Adodc1 End Sub
585
(filtre_ile_liste formunun ekran grnts) FILTRE_ILE_LISTE Formunun kodlari ve kod aiklamalari asagida incelenebilir. Private Sub cikis_Click() 'Form Unload edilir. Unload Me End Sub Private Sub filtrele_Click() 'Recordsetin Filter zelliginden yararlanilarak ad alanin 'Text1'e yazilan metine gre filtrelenmesini saglar Adodc1.Recordset.Filter = "ad = '" & Text1.Text & "'" 'Degisikligi kullaniciya yansimasi iin gridin 'Datasource zelligi Adodc1 nesnesi ile bagdasir. Set Grid.DataSource = Adodc1 End Sub
586
ActiveX nbilgi:
Data
Object
Ile
Yapilan
rnek
Uygulama
Programin amaci ActiveX Data Object ile veri girisi , veri silme, arama, veri dzenleme gibi islemleri ve recordset nesnelerini, baglanti nesnelerinini alisma prensibine isik tutmaktir. Programin alismasi iin kitap ile verilen ek program CD sindeki ilgili klasr altinda bulunan veritabani.mdbdosyasinin bir ODBC Sistem DSN i ile baglanmasi gerekmektedir.DSN ismi ACTIVEX olmalidir. Program biri MDI formu (bkz Resim 1) olmak zere alti formdan olusmaktadir. Bu formlarin basite kullanim amalari ANA_FORM Programin ana formu filtreli_liste Filtreli listeleme formu genel Genel kayit islemleri rnegi (Arama,Silme,Degistirme) Listele Tm kayitlarin listelenmesi rnegi sorgu_ile_liste Sorgunun listelemede kullanilmasina dair rnek yeni_kayit Veritabanina yeni kayit girme amali form
ANA Form Aiklamasi
587
(Formun Ekran Grnts) Formun kodlari ve kodlarinin aiklamalari asagida incelenebilir; Private Sub cik_Click() End 'program sonlandirilir. End Sub 'Bu kisimdaki kodlar formlarin aktif hale gemesi iindir. Private Sub fl_Click() filtreli_liste.Show End Sub Private Sub gki_Click() genel.Show End Sub Private Sub MDIForm_Load() 'ailista baglanti connection nesnesi olusturulur. 'Burada dikkat edilmesi gereken baglantinin "baglanti" anahtari 'ile "ACTIVEX" isimli sistem dsn yapisi ile iliskilendirilmis oldugudur. 'uid = kullanici adini , pw ise sifreyi simgeler 588
(Formun ekran Formun kodlari ve kodlarin aiklamalari asagida incelenebilir. Private Sub temizle() 'Prosedr form elemanlarini temizlemede kullanilir. ad.Text = "" soyad.Text = "" adres.Text = "" mail.Text = "" telefon.Text = "" End Sub Private Sub ad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Eger kullanici ad text'inde iken enter tusuna basarsa 'kursor soyad text'ine konumlanir. soyad.SetFocus
grnts)
589
Private Sub kaydet_Click() 'kayit isimli recordset Yeni kayit ekleme modunda ailir kayit.AddNew 'form nesnelerinin ierigi alanlara yerlestirilir. kayit.Fields("ad") = Trim(UCase(ad.Text)) kayit.Fields("soyad") = Trim(UCase(soyad.Text)) kayit.Fields("adres") = Trim(UCase(adres.Text)) kayit.Fields("mail") = Trim(mail.Text) 590
Private Sub mail_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Eger kullanici mail text'inde iken enter tusuna basarsa 'kursor telefon text'ine konumlanir. telefon.SetFocus End If End Sub Private Sub soyad_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Eger kullanici soyad text'inde iken enter tusuna basarsa 'kursor adres text'ine konumlanir. adres.SetFocus End If End Sub Private Sub telefon_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Eger kullanici telefon text'inde iken enter tusuna basarsa 'kursor kaydet nesnesine konumlanir. kaydet.SetFocus End If End Sub
Genel Formu Aiklamasi Genel formu kullanicinin girilen kayitlar arasindan ad ve soyad bilgileri sayesinde aradigi kaydi bulmasini ve istedigi kaydi degistirmesi, silmesi gibi islemleri yapmasini saglar.
591
(Formun ekran grnts) Kaydi sil ve Kaydi Degistir butonlari ilk olarak pasiftir , kullanici bir ad ve soyad bilgisi girer ve ara butonuna bastiginda eger kayit bulursa bu iki buton aktif hale geecektir. Formun kodlari ve kodlarin aiklama lari asagida incelenebilir; Private Sub temizle() 'temizle prosedrnn amaci agrildigi anda 'asagidaki form nesnelerinin iini bosaltmaktir. ad.Text = "" soyad.Text = "" adres.Text = "" mail.Text = "" telefon.Text = "" Text1.Text = "" Text2.Text = "" End Sub Private Sub ara_Click() 'Eger kayit isimli recordset aiksa kapatir 'nk asagidaki ayarlar recordset olusturulurken yapilmalidir. If kayit.State = 1 Then kayit.Close End If 'komut isimli Command nesnesi olusturulur ve sorgu dizay edilir. With komut .CommandType = adCmdText
592
'kayit isimli recordset nesnesi olusturulur. 'Ve konfigure edilir. With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With 'Eger kayit bulunamazsa form elemanlarinin iine 'recordset alanindaki bilgiler yazilmaz 'Eger kayit bulunamazsa ve form nesnelerinin iine 'alan bilgileri doldurulma istenirse hata olusur If kayit.RecordCount <> 0 Then ad.Text = kayit("ad") soyad.Text = kayit("soyad") adres.Text = kayit("adres") telefon.Text = kayit("tel") mail.Text = kayit("mail") 'Silme ve degistirme butonlari aktif edilir sil.Enabled = True degistir.Enabled = True Else 'Form Elemanlari temizlenir. temizle End If 'kayit recordseti kapatilir. kayit.Close End Sub Private Sub cikis_Click() Unload Me 'Form unload edilir. End Sub Private Sub degistir_Click() 'komut isimli command nesnesi olusturulur ve konfigure edilir. With komut .CommandType = adCmdText .CommandText = "SELECT * FROM TELEFON WHERE(AD='" Trim(UCase(Text1.Text)) & "' AND SOYAD='" Trim(UCase(Text2.Text)) & "')"
& &
(Formun Ekran Grnts) Formun kodlari ve kodlarinin aiklamalari asagida incelenebilir. Private Sub temizle() 'form elemanlarinin ierigi temizlenir. filtre_.Text = "" 595
596
(Formun Ekran Grnts) Formun kodlari ve kodlarinin incelemeleri asagida incelenebilir; Private Sub Command1_Click() 'Eger kayit isimli recordset aiksa kapatir 'nk asagidaki ayarlar recordset olusturulurken yapilmalidir. If kayit.State = 1 Then kayit.Close Set Grid.DataSource = kayit End If 'komut isimli command nesnesi olusturulur ve ayarlanir. With komut .CommandType = adCmdText .CommandText = Trim(sql.Text) Set .ActiveConnection = baglanti End With 'kayit isimli recordset olusturulur With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With 'grid nesnesi gncellenir. Set Grid.DataSource = kayit End Sub
597
Formun
kodlari
ve
kodlarin
aiklamalari
asagida
incelenebilir;
Private Sub Command1_Click() Unload Me 'Form unload edilir End Sub Private Sub filtrele_Click() 'Eger kayit isimli recordset aiksa kapatir 'nk asagidaki ayarlar recordset olusturulurken yapilmalidir. If kayit.State = 1 Then kayit.Close End If 'komut nesnesi olusturulur ve konfigure edilir. With komut .CommandType = adCmdText 598
599
Report :Yeni bir rapor sayfasi aar. Cross-Tab :apraz kayitsetleri iin yeni bir rapor sayfasi hazirlar. Mail Label :Yeni bir zarf etiketi sayfasi aar.Bu seenekle kayitlardaki isim ve adres gibi veriler kullanilarak posta etiketleri kolay bir sekilde hazirlanabilir. Open:nceden kaydedilmis bir rapor dosyasini getirir. Save:Aktif rapor dosyasini kaydeder. Save As:Aktif rapor dosyasini degisik bir yere veya degisik bir isimle kaydeder. Close:Aktif rapor dosyasini kapatir. Print Preview:Aktif rapor dosyasinin baski n izleme ekraninda grnmn saglar. Print Printer:Aktif raporu yaziciya gnderir. Export:Baska bir formatta kaydeder. Report Definition:Rapor yapisini yaziciya gnderir. Printer Setup:Windows Printer Setup dialog kutusunu getirir. Page Margins:Sayfa marj ayarlari iin kullanilir.
560
561
Formula Field :Rapora ierigi forml olan bir bilgi eklemek iin kullanilir. Special Field Page Number Field:Sayfa numarasi Record Number Field:Kayit sayisi Group Number Field:Grup sayisi Print Date Field:Rapor baski tarihi eklemek iin kullanilir. Subtotal:Ayni gruptaki fieldlari ieren toplam veya ortala ma eklemek iin kullanilir. Grandtotal:Tm raporu ieren toplam veya ortalama eklemek iin kullanilir. Summary:Bir gruptaki zet bilgiyi elde etmek iin kullanilir.Bu bilgi bir fieldin minimum maximum,ortalama,toplam,kayit sayisi gibi bilgiler olabilir. Group Section:Istenen bir fielde gre bir grup yaratmak iin kullanilir. Line:izgiyi eklemek iin kullanilir. Box:Drtgen eklemek iin kullanilir. Graphic:Grafik eklemek iin kullanilir. Object:Bir Windows nesnesi eklemek iin kullanilir. 4-FORMAT Font:Yazitipi Field:Bir alan Border and Colors:Kenarliklar ve renkler Graphic:Grafik Line:izgi 562
Visual Linking Expert:Iki tablein ayni ortak fieldlari zerinde bir baglanti yaratmak iin k ullanilir.Bylelikle ortak field yolu ile her iki tabledaki dataya da tek field ile ulasilabilir. Add Database to Report:Rapora database eklemek iin kullanilir.Birden fazla database den ortak rapor alinmak istendiginde bu yol kullanilir. Remove from Re port:Rapordan bir database veya table ikarmaya yarar.
Set Location:Bir database veya tablein pathini belirtmeye yarar.Fiziksel yer degisikligi oldugunda rapor database veya table nesnesinin yerini bulamayabilir.Bu durumda Set Location ile yer belirtilir. 563
Verify Database:Databasein yapisinda bir degisiklik oldugunda(field ekleme,fieldin ismini degistirme)Crystal Reportsun bu degisikligi rapora yansitabilmesi iin kullanilir. Verify On Every Print:Bir nceki her printtan nce isleme sokar.Isaretli olarak kullanim ii,isaretsiz olarak kullanim disidir.
Log On Server:Bir SQL Server databaseini kullanima sokar. Log Off Server:Bir SQL Server databaseini kullanim disi birakir. Show SQL Query:Kullanimda olan SQL server Databaseine bir SQL gndermek iin kullanilir. query
564
6-REPORT Select Records Expert:Seili fieldlarin istenen kisimlarini getirmek iin kullanilir.
Edit Record Selection Formula:Kayitlarin hepsi istenmiyorsa istenen kismi iin seim kriteri yaratmak iin kullanilir. Record Sort Order:Kayitlarin hangi fielda gre adan zye veya zden aya siralanacagi islemidir. Select Groups:Select Recordsdaki islemi grup iin uygular. Edit Group Selection Formula:Edit Record Selection Formuladaki islemi grup iin uygular. Group Sort Order:Recort Sort Orderdaki islemi grup iin uygular. Refresh Report Data:Databasee tazelenmesini saglar. tekrar sorgu gndererek verilerin 565
Report Title:Rapor basligini girmek iin kullanilir. Set Print Date:Rapor baski tarihini ayarlamak iin kullanilir. 7-WINDOW Tile Vertically:Pencereleri dikey dsemek iin kullanilir. Tile Horizontally:Pencereleri yatay dsemek iin kullanilir. Cascade:Pencereleri basamaklamak iin kullanilir. Arrange Icons:Ikon halindeki pencereleri dzenlemek iin kullanilir. Close All:Tm pencereleri kapatmak iin kullanilir. 8-HELP Contents:Help konularini ekrana getirir. Search:Bir help konusunu aramak iin kullanilir. Using Help:Help in nasil kullanilacagini anlatir. Register/Chance Adress:Kisisel kayit adresi iin kullanilir. Technical Support Requset:Teknik doldurma ekranini getirir. About Crystal Reports for Visual srm,retici,firma,v.b.bilgileri verir. destek istemek iin istek formu
Basic:Crystal
Reports
hakkinda
566
567
DOSYA ISLEMLERI
Bu blmde dosyala kayit yapma, yapilan bu kayitlari dzeltme, silme yazdirma gibi konulari inceleyecegiz. Bunu bir rnekle aiklaya biliriz. rnegin bu, ktphane kayitlarini tutan bir program olabilir. Programda her bir islem iin ayri bir form aip, daha sonra bunlari birlestirelim.
568
Formdaki textboxlara girilen bilgilerin her seferinde hard diske yazilmasi iin, bilgiler random tipli dosya aildiktan sonra Field deyimi ile belirlenip, Record tipli degisken dosyaya Put deyimi ile yazdirilir. Bir visual basic projesinde bas uzantili Modle dosyasida bulunabilir. Bu dosya program kodlari iierir. Projeya modl dosyasi eklemek iin,Project mensndeki Add Modle komutu kullanilir. Ekrana Add Modle dialog kutusu gelir. Burada modle seenegi seilip, a tiklanirsa ekrana asagidaki gibi bir pencere gelir.
569
Bu pencerede Object liste kutusunda General,Prog liste kutusunda Declarations seenegi seili iken gerekli tanimlamalar yapilir. Tanimlama satirlari Type deyimi ile baslar, End type deyimi ile biter. Degiskenler tanimlanirken uzunlaklarida belirtilir.Bu tanimlarin projenin diger form ve modllerinde kullanilmasi iin Global deyimi ile tanimlanmasi gerekir.burada kayit tipli degisken adi kayitbilgisi, global zellikli degisken adi ise alanlar olarak seilmistir. Burada tekrar formun kod sayfasina dnelim. Kod sayfasinda ilk yapilaacak is bilgi kaydedilecek olan dosyayi Open deyimi ile amaktir.
Sekilde grdgmz gibi open deyimi ile ailan dosyaya kayit.dat ismi veriliyor. Takibinde for random ile dosyanin rastgele erisimli oldugu dosyanin numarasi ve byte olarak tuttugu yer belirtiliyor. Dosya numarasi nne # karakteri konularak yazilir. Ayrica dosya numarasi proje iinde dosyanin ismini temsil eden sayisal degerdir. Random dosyalara kayit yazarken her kayda bir kayit numarasi verilir. O ana kadar dosyada ka kayit oldugunu bulmak iin, dosyanin byte olarak uzunlugu, bir kayit uzunluguna blnr. Her kayit isleminden sonra, kitap numarasi bi,r attirildiktan sonra text1 e yazdirilir. Yukardaki sekilde formun aktivate ine yazilmis ilk satir, text1 e kitap numarasi yazidiktan sonra ikinci satirda krsrn zaten yazilmis olan kitap numarasi isimli textbox a degil, kitapadi ismli ikinci textbox a gitmesini saglar.
570
Form kapatilirken open deyimi ile ailan dosyanin da kapatilmasi gerekir. Formun unload kismina close #1 seklinde yazilarak kapatilir.
571
Bu formda ilk textboxa arayacagimiz kitap numarasini girdikten sonra girilen kitap numarasina ait bilgiler, diger textboxlarda grntlenecek. Yani bunlara disardan bilgi girisi olamayacak bunun iin textboxlarin tabstop zelligi false olmali.
572
573
Kayit dzeltme
Kitap numarasi istendikten sonra dosyadan okutup ekrana yazdiracagiz. Fakat kullanici bu sefer textboxlara mdahale edebilecek. Formdaki arama dgmesinin islvi, kitap numarasi girildikten sonra, tiklandiginda kitap numarasina ait bilgilerin ekrana yazilmasini saglamaktir. Form zerinde istenilen degisikler yapildiktan sonra kaydet dgmesi ile dosyaya yazdirilir.
574
Men hazirlama
Program alistiginda hazirladigimiz formlari dzenli bir sira ile gnderilmek iin, bir men hazirlamamiz gerekiyor. Bunu yeni bir form zerine her form iin dgme koyarak yapabilecegimiz gibi, mdi form olusturarak da yapabiliriz. MDIForm, project mensnn ADD MDIForm seeneginden ailir.Ekrana ADD MDIForm dialog kutusu gelir.
575
Alt menleri hazirlarken, nexten nce sol ok tusuna basilmali. Bu ok ile kayit artik dosya mensnn bir alt mens. Eger hazirlayacagimiz formlar baska bir proje iinde olsaydi, onlari bu forma dahil etmek iin, Project mensnn Add File seeneginden yararlanacaktik. Su halde ekleme isini formun kod sayfasina yazacagiz.
576
CARI.FRM
Private Sub Combo1_Change() Text5.Set Focus End Sub Private Sub Combo1_Keypress(KeyAscii As Integer) If keyascii = 13 Then Text5.Setfocus End Sub Private Sub Combo1_Click() Unload Me End Sub Private Sub Combo2_Click() On Error Goto 50 If Text1.Text = Or Text1.Text = Or Text2.Text = Or Text2.Text = Then Msgbox rn kodu adini tam olarak girmelisiniz.,vbOKonly,Text ile For Windows : Goto 100 If Text3.Text = Then Text3.Text = If Text4.Text = Then TAR$ = DATE$ GUN$ = Mid$(TAR$, 4, 2) 578
Grafik arayzn VB de Chart zelligini tasarim aninda grerek zerindeki Chart kontrolne sag komutu seilir. Bylece asagidaki degistirilebilir.
kontrol salar. Chart kontrolnn bir ok degistirmemiz mmkndr. Bunun iin form tusla tiklanir, ailan pencereden Properties ailan pencerelerden istenildigi gibi zellikler
582
583
Bu kontrol kullanabilmek iin Project-Components menleri ile ailan pencereden Microsoft Char Control seenegi isaretlenir veya Browse dgmesi ile MSCHRT20.OCX dosyasi bulunup projeye eklenir. Chart kontrol ile bir grafik olusturmak iin yapilmasi gereken islemler syle siralanabilir. ChartType ile grafigin tipini belirlemek. Kontrol zerinde ka ayri grafigin gsterilecegini ColumnCount ile belirlemek. Her bir grafige ait ka veri oldugunu RowCount zelligi ile belirlemek. Data zelligi ile her bir noktanin degerini belirlemek. Chart kontrol ile bir grafigin olusturulmasini bu adimlarla zetliyabiliriz. Chart zellikleri (Properties) ChartType Grafik tipini belirlemek iin bu zellik kullanilir. Alacagi degerler ve isimleri asagida belirtilmistir.
584
Charttype=0,VtVhChartType2dBar
Charttype=1,VtVhChartType2dBar
Charttype=2,VtVhChartType3dLine
585
Charttype=3,VtVhChartType2dLine
Charttype=4,VtVhChartType3dArea
Charttype=5,VtVhChartType2dArea
586
Charttype=6,VtVhChartType3dStep
Charttype=7,VtVhChartType2dStep
Charttype=8,VtVhChartTypeCombination 587
Charttype=9,VtVhChartType2dCombination
Charttype=14,VtVhChartType2dPie
Charttype=16,VtVhChartType2dXY 588
589
ColumnLabel, RowLabel Grafikte her verinin neyi temsil ettigini belirten metin bu zelliklerle belirlenir. Column veya Row zelligi ile degistirilmek istenen nokta seildikten sonra bu iki zellikle o iki noktanin zellikleri belirtilebilir. ShowLegend Kart zerinde birden fazla grafik gsterilcekse, hangi rengin hangi grafige ait oldugunu belirten gstergelerin gsterilmesi iin bu zellik true yapilmalidir.
AllowDynamicRotation Bu zelligin default degeri truedir hibir koda gerek kalmadan 3 boyutlu grafikleri dndrebilir. Bu zellik false yapilirsa dndrme islemi iin kullanici ekstradan kodlar yazmasi gerekir. Bu zellik true iken kullanici ctrl tusunu basili tutarak grafigi fare yardimiyla dndrebilir.
590
AutoIncrement Data zelligi ile grafik zerindeki noktalarin degerlerini belirlerken nce Column ve Row zelligi ile hangi noktanin degerini verecegimizi belirtiyorduk. Istenirse bu zelligi true verilirek her data atamasindan sonra yeni noktayi belirlemeye gerek kalmadan bir sonraki noktaya gemesini saglayabiliriz. 591
veriliecek
degerler
ile
593
formlarini ve gelen siparisleri grntleyebilir. Ayrica Word araciligi ile satis raporlari hazirlayabilirler.
bilgilerini
personeli, Oracle ya da SQL sunucularinda depolanmis envanter bilgilerinden yararlanarak retim ve fiyatlandirma kararlarini daha iyi bir sekilde alabilirler.
Bu kontrol elemani araciligi ile OLE'yi destekleyen tm programlar arasinda baglanti kurmak, bu baglanti sonucunda istenilen veri transferi yapmak mmkndr. Dolayisiyla bir programa eklenmesi gereken bazi blmleri eklemek yerine bu isi tam anlamiyla yapan programlara baglanti kurmak suretiyle kolayca halledilebilir. OLE nesnesini form zerine aldiginizda standart OLE diyalog kutusu karsimiza otomatik olarak ikar:
Bu pencerede OLE'yi destekleyen programlar yer almaktadir. Bunlardan herhangi biri seildigi zaman o program ile direkt baglanti kurularak programin kaynagina ulasilir. Bu listedeki programlardan biri seilerek o 595
596
598
599
3. Imge denetimini kullanarak etiketin altinda, formun sol tarafinda bir grnt nesnesi olusturulur. Bu nesne elektronik tarayicida taranmis ve bmp dosyasi olarak kaydedilmis olan fotografi grntleyecektir.
4. TextBox denetimi kullanilarak, grnt nesnesinin sag tarafindan bes tane metin kutusu nesnesi olusturulur.
Bu metin kutulari, yapilan uygulamanin veri tabaninda bulunan filmin orjinal adi, trke adi ve blm sayisini ieren bir Access veri tabani ile baglanacaktir. Asagidaki sekilde veri tabani gsterilmektedir.
5. Data denetimi kullanilarak, metin kutusu nesnelerinin sagina bir veri nesnesi eklenir. Kayitlarda gezinmek iin kullanilmaktadir.
600
6. Veri nesnesi altina bir komut dgmesi eklemek iin CommadButton denetimi kullanilir. Bu komut dgmesi programdan ikmak iin
kullanilmaktadir. 7. Formun nesneleri iin su ayarlar yapilir: zellik Ayarlar Caption "yzklerin efendisi iki kule" Caption "Haftalik Izleyen Kisi Sayisi" Font Verdana, Kalin, 16 Punto ForeColor mavi Imge1 BorderStyle 1-Fixed Single Stretch True Picture C:\Program File\Microsoft Visual Stdio\Vb98\rnek Data1 Caption "Filimler" Connect Access DatabaseNeme C:\Program File\Microsoft Visual Stdio\Vb98\rnek\vtb1 ReadOnly True RecordSource Artists Text1 DataSource Data1 DataField Alan1 Text (bos) Text2 DataSource Data1 DataField Alan2 Text (bos) Text3 DataSource Data1 DataField Alan3 Text (bos) Nesne Form1 Label1
601
Command1 Caption "ik" 8. ik komut dgmesini ift tiklayin ve Command1_Click olay yordamina End yazilir. Bu program bildirisi, ik dgmesi tiklandigi zaman uygulamayi kapatacaktir.
9. Yapilan uygulama kaydedilir. Artik OLE denetimi uygulamamiza Excel alisma sayfasi ve grafigi eklenebilir. 10. Uygulama iin hazirlanan Excel alisma sayfasi:
kullanilarak
11. OLE denetimi tiklanir ve uygulamamizin formunun zerinde genis bir drtgen izilir. Drtgeni izip farenin dgmesini biraktiginizda InsertObject iletisim kutusu ekrana gelir.
602
InserObject (Nesne Ekle) iletisim kutusunda, uyulamaya baglanabilecek ya da karsilastirilabilecek nesnelerin bir listesi bulunur. 12. Insert Object iletisim kutusunda Create From File (dosyadan olustur) seenegi tiklanir. Iletisim kutusunda bir nesne yol adi grnr. Programiniza var olan bir dosyayi eklemek istediginizde, Create From File (dosyadan olustur) seenegi seilir.
603
13. Baglantili bir nesne olusturmak iin Link (bagla) onay kutusu seilir. Link onay kutsu seildiginde, seilmis olan dosyanin resmi OLE nesnesine yklenecektir. Dosya baglantili bir nesne olacagindan, Visual Basic uygulamasinin disinda ver olmaya devem edecek ve bu dosya zerinden yapilan degisiklikler, olusturulan programa yansiyacaktir. 14. Programa baglamak istenilen Excel dosyasini bulmak iin Browse (gzat) seenegi tiklanir. Uygulamamiza koyulacak Excel dosyasinin yeri belirlenir ve gerekli islemler yapilip onay verildiginde, Excel alima sayfasi dosyasinin bir resmi OLE nesnesinde grnr. 15. OLE denetimi yeniden tiklanir ve ekranin diger ksesine bir drtgen izilir. Farenin dgmesi birakildiginda Nesne Ekle (Insert Object) iletisim kutusu ekrana gelir. 16. Nesne Ekle iletisim kutusu kapatilir. nk OLE nesnesine alisma sayfasinin sadece bir kismi (Excel grafigi) yerlestirilecektir. Bir dosyanin belirli bir kismini yerlestirebilmek iin, yerlestirilmek istenilen kisim kopyalanir ve Past Special (zel Yapistir) komutunu kullanarak OLE nesnesinin iine yapistirilir.
604
17. Excel alisma sayfasini gelinir ve grafik seilir ve kopyalanir. D aha sonra tekrar Visual Basic ortamina geri gelinir ve ekrana atigimiz drtgenin iine farenin tusu tiklanir ve ikan pencereden Paste Special seenegi seilir. Ardindan Baglanti Yapistir seenegi seilir ve tatmam tiklandiktan sonra grafigimiz artik istenilen yere eklenir. 18. Uygulanma baslatildiginda Excel dosyalarina olan baglantilarin gncellemesini saglamak iin program kodu girilmesi gerekmektedir. From_Load olay yordaminin Code penceresine : OLE1.Update OLE2.Update Program bildirileri yazilir. Bu bildiriler, Excel dosyalarinda yapilan degisiklikleri Visual Basic uygulamalarina yklemek iin kullanilir.
Uygulama kaydedilerek alistirilabilir ve yapilan baglantilar incelenebilir. Form zerindeki "Yzklerin Efendisi Haftalik Toplam Kisi Sayisi" olan blm tiklanir. Karsimiza hazirlanan Excel alisma sayfasi ailir. Eklenmis olan nesne, alisma sayfasina bagli oldugundan, Visual Basic zgn alisma sayfasi zerinden degisiklikler yapmamiza ve bu degisiklikleri gene zgn dosyaya kaydetmeye olanak saglar.
Visual Basic Word 97 Exel 97, Microsoft Exel 95, Microsoft Exel 5.0 PowerPoint 97 Project 97, Microsoft Project 95 Outlook 97, Microsoft Outlook 98 (VBScript diliyle gelistirilen zel
606
Workbook(s)
Worksheet(s)
Range
Chart
607
608
Selection
Range Window
610
Belgenin ailmasi iin; Open metodu kullanilir. Open metodu ile Documents kolleksiyonundan belirtilen bir nesne ailir: Set WordDoc = documents\mektup.doc") Documents.Open (FileName="c:\my
Belgelerin yaratilmasi ve kayit edilmesi iin; Add metodu kullanilir. Documenrs.Add Add Metodu yeni bir document nesnesi yaratir. Bylece Word ortamina bir belge eklenmis olur. Ardinda istenilen zellikler kullanilarak belge islenir. rnekte bir belge yaratilmakta ve st sinirina bir deger atanmaktadir: Dim myDoc As Document Set myDoc = Documents.add myDoc.PageSetup.TopMargin = InchesToPoints(1.25)
611
Nesnelerini
Grmek
iin
Object
Browser
1. Yeni bir proje ailir. 2. Project mensndeki References komutu tiklanir. Sisteminizde bulunan herhangi bir nesne ktphanesine ynelik basvurulari projeye katmaya olanak veren References iletisim kutsu ekrana gelir. Projeye basvurular eklemek derlenmis programi daha fazla genisletmez ancak, programa ne kadar fazla basvuru eklenirse, Visual Basic'in programi derlemesini o kadar uzamis olur. Bu nedenle, Visual Basic istege bagli olarak basvurulari Automation nesnesine ekler. 3. Microsoft Word 8.0 Object Library baslikli basvurunun yanindaki onay kutusu seilir. 613
4. Iletisim kutusunu kapatmak ve basvuruyu projeye eklemek iin Ok tiklanir. 5. View mensndeki Object Browser komutu tiklanir.
614
6. Project/Library liste kutusu aildiktan sonra Word nesne ktphanesi tiklanir. 7. Classes liste kutusundan Application nenesi tikla nir.Application ile ilgili yntem ve zelliklerin listesi, Members liste kutusunda ailir. Bunlar alisma sayfasindaki bilgileri islemek iin Word'n sagladigi komutlardir. 8. Memebers kutusundan CheckSpelling yntemi tiklanir. Objcet Browser'in altinda CheckSpelling yntemine ait sz dizimi grnr. Bu yntem Word'n Visual Basic'ten erisebilecek bir islevi olan, azim denetimini harekete geirir.
615
9. Objcet Browser'in st kismindaki soru isareti kismi tiklanir. Office 97 kurulum programi alistirildiginda Visual Basic for Application yardim dosyasi yklendiyse , CheckSpelling yntemi iin bir yardim yntemi programlama ortaminda ailir.
616
Bu yardim dosyasi, Word nesne ktphanesinde bulunana zellik ve yntemlerin nasil kullanilacagi konusunda ayrintili bilgi verir. 10. CheckSpelling yntemi hakkinda gerekli bilgiler okunduktan sonra Object Browser kapatilir.
Bir sonraki alistirmada, bir Visual Basic metin kutusundaki yazim hatalarini denetlemek iin Word yazim denetisini kullanan bir uygulama yaratacaksiniz. Hazirlayacaginiz program tamamen Visual Basic iinde olacak ve Automationi araciligiyla uzaktan Word islevini kullanacak. NOT : Bir sonraki alistirmada, sisteminizde Word 97 ya da Office 97nin ( Word 97yi ierir ) ykl oldugu varsayilmistir. zel bir yazilim denetisi hazirlayin. 1. Project mensndeki References komutunu tiklayin. Microsoft Word 8.0 Object Library basvurusunun yaninda bir onay isareti bulundugundan emin olduktan sonra OKi tiklayin. Microsoft Word 8.0 Object Library, Word nesne uygulamasi tarafindan erisime ailan nesne, yntem ve zelliklere erismemizi saglar. Bu, dersin basinda eklemis oldugunuz nesne ktphanesi basvurusudur. NOT : Nesne ktphanesi basvurulari, References komutu araciligiyla her yeni projeye eklenmelidir. Siradaki islemimiz ise yazim denetisi iin bir form yaratip, program kodunu yazmaktir. 2. Daha kk ve dikdrtgen grnmne gelene kadar formu kltn.
618
4. Formun ortasinda genis, drt satir yksekliginde bir metin kutusu olusturmak iin TextBox denetimini kullanin. Bu metin kutusu kullanicinin yazim hatalarini denetleyecegi metni saklayacak.
5. Metin kutusu nesnesinin altinda iki komut dgmesi olusturmak iin CommandButon denetimini kullanin, Birinci komut dgmesi Word baslatip metin kutusundaki metnin yazimini denetlemek amaciyla CheckSpelling yntemini harekete geirmek iin, ikinci komut dgmesi ise programi kapatmak iin kullanilacaktir.
Ayar zel Yazim Denetisi Metin kutusuna szck yada girip Yazim Denetimini tiklayin True 2-Vertical (Bos) Yazim denetisi Son
szckler
619
7. Command1_Click olay yordamini amak iin, Yazim Denetimi komut dgmesini ift tiklayin. Olay yoramina sonraki sayfadaki program kodunu girin:
Bu bildiriler, olay yordaminda bir Word Automation nesnesi yaratir, Word baslatir, Word nesnesinin bazi zelliklerini ayarlar, bazi 620
621
2. Metin kutusuna seni ok seviyorum (I lovve you so mucch) yazin. NOT : Sizin bilgisayarinizdaki ykl Word Ingilizce ise Ingilizce metni, Trke ise Trke metni yazin. 3. Yazim denetimi dgmesini tiklayin. Visual Basic bir Automation nesnesi yaratir ve Word baslatir. Bir sre sonra, Word yazim denetimi (Spelling) iletisim kutusu ekrana gelir ve ikinci szcgn szlkte olmadigini bildirir. Ekraninizin asagidakine benzer olmasi gerekir.
622
Private Sub Command1_Click( ) Dim x1 As Object Excel iin nesne yarat Dim loanpmp dnen degeri bildirir Tm alanlar deger ieriyorsa if Text1.Text <> And Text2.Text <> And Text3.Text <> Then nesneyi yarat ve pmtyi agir Set x1 =CreateObject (Exel.Sheet) Loanpmt =x1.application.worksheetFunction.Pmt (Text1.Text) \ 12, Text2.Text, Text3.Text) MsgBox Aylik deme & Format ( Abs (Loanpmt), #.= #TL), , Ipotek x1.Application.quit Set x1 =Nothing Else MsgBox Tm alanlar doldurulmalidir, , Ipotek 623
624
5. OK dgmesini tiklayin ve degisik degerlerle birka hesaplama daha yapin. 6. Bitirdiginizde formun baslik ubugundaki Close dgmesini tiklayin. Dilerseniz Code penceresindeki program koduna da bakabilirsiniz.
625
Simdi Outlook Automationin nasil alistigini grmek iin programi baslatin. NOT : Asagidaki adimlari tamamlamak iin Outlook 97 ya da Outlook 98in bilgisayarinizda ykl olmasi gerekir. Mektup gnderme projesi ayrica Outlook 8.0 Object Libraryye nemli basvuru ierir. Automationla Outlook kullanan uygulamalar yaratirsaniz, References komutuyla projenize Outlook 8.0 Object Libraryyi eklemeyi unutmayin. MektupGnder Programini alistirin. 1. Sabit diskinizdeki \AaVb6\Ders14 klasrndeki MektupGnder.vbp projesini ain. Code projesini ain ve Command1_Click olay yordamini grntleyin. Kullanilan sanal e-posta adresini ( maria@xxx.com, casey@xxx.com ve mike_halvalson@classic.msn.com ) gerekleriyle degistirin. Birden fazla e-posta adresi kullanmak isterseniz, kullanmak istediginiz satirdan nce karakterini kullanin. Tm Outlook iletileri iin en az bir To alani gerekir.
2. 3.
626
5.
komutunu
tiklayin
ve
mektup
gnder
6.
Metin kutusuna bir ileti yazin . Bu metin e -posta iletinizin gvdesi olarak gnderilecektir. Bu bilgiyi ayrica programinizin iinden de girebilirsiniz. (Visual Basic programinizdan e-posta gndermek iin arabirime gereksiniminiz yoktur.)
7.
Simdi iletiyi gndermek iin iletiyi gnder dgmesini tiklayin. Visual Basic Automationi Outlook Outbox klasrnde bir mektup iletisi olusturmak iin kullanilir. Ileti Outlookun internet servis saglayiciniza baglanana kadar Outbox klasrnde kalir. ( internete bagli yada yerel agda alisiyorsaniz Outlook iletiyi hemen gnderir.) Ileti gnderildikten sonra, Outlook iletiyi Outbox klasrnden kaldirir ve kopyasini Sent Items klasrne yerlestirir, bylece gndeerdiklerinizin bir kaydi bulunur. MektupGnder tiklayin. programinin baslik ubugundaki Close dgmesini
8.
627
10. Outboxtaki iletiyi ift tiklayin. Outlook iletiyi aar ve ekranda grntler. Grdgnz gibi Visual Basic iletiyi ynlendirdiginiz gibi yaratir ve glen bir yz resmi ekler (\AaVb6\Ders14 klasrnden).
11. Ileti ara ubugundaki Send dgmesini tiklayarak iletiyi gndermek zere isaretlemesini saglayin.
Outboxin
12. Simdi iletiyi gnderebilir yada silebilirsiniz. Deneme iletisini silmek istiyorsaniz, iletiyi sein ve Dele basin. Iletiyi gndermek iin Tools mensnden Check For New Maili sein.
629
3. Sunuyu alistirmak iin komut dgmesini tiklayin. Progra m sunudan sunuya gemek iin Ara ubuguna basmanizi tavsiye eder ve baslamaya hazir olup olmadiginizi sorar.
4. Sunu gsterisini baslatmak iin Yesi tiklayin. Visual Basic PowerPoint nesnesini yaratir ve sunuyu baslatarak ilk sunuyu ykler.
630
5. Sunudaki her grnty ara ubugu ile birinden digerine geerek inceleyin. 6. Bitirdiginizde, PowerPoint baslik ubugundaki Close dgmesini tiklayin ve Visual Basice dnn.
7. Son olarak SunuGster baslik ubugundaki Close dgmesini tiklayin. Visual Basici kullanmaya simdilik ara vermek iin File mensnde Exiti tiklayin. Save As iletisim kutusunu grrseniz Yesi tiklayin.
631
Microsoft Visual Basic 6.0 14-Web Iin Dinamik HTML Sayfalari Tasarlamak
Dynamic hypertext markup language(DHTML),World Wide Web Consortium tarafindan olusturulan Microsoft bilesen nesne modeli (COM) ve zelliklerine dayanan gelismis bir Internet teknolojisidir. DHTML Page Designer Internet Programciligi ya da Web sayaf tasarimi hakkinda pek fazla deneyiminiz olmasa bile Web uygulamalari yaratabilmenizi saglar.
Dinamik HTML
DHTML Internet Explorer 4.01 ve daha sonraki srmlerine dahil edilen bir Internet teknolojisidir. DHTML ile bir Web uygulamasinin kullanici arabirimini grntlemek ve geleneksel olarak bir Internet sunucusunun gerektirdigi hesaplama islemlerini gereklestirmek iin Internet Exploreri kullanan bir HTML tabanli uygulama yaratabilirsiniz. Yarattiginiz uygulama bir Internet ya da yerel ag baglantisinin istemci tarafinda bir HTML dosyasi ve dinamik baglanti ktphanesi (DLL) olarak saklanir. Diger bir deyisle DHTML teknolojisi Internet sunuculara erisim saglayan Web uygulamalari olusturmanizi saglar ama fiziksel olarak son kullanicinin bilgisayarinda yer alirlar. Dagitilan dinamik yaklasimlar DHTML programlarini sunucuda bulunan geleneksel Web uygulamalarindan daha iyi tepki verir hale getirir,nk DHTML uygulamalarinin bilgileri ynlendirmek,verileri saklamak ve istekleri yerine getirmek iin uzak bir bilgisayara ulasmalari gerekmez. Bir DHTML uygulamasinda yerel gzatici birok yordam isleme islemlerini yapar,sayfanin dzenini degistirir ve DHTML sayfalarinin arkasindaki kodu sunucudan bilgileri yenilemesini istemeden alistirir. Bu uygulamanin hizini arttirir,web sunucularinin is ykn azaltir ve (ogu durumda) son kullanicilarin Internet ya da yerel agdan yklemis olduklari bilgilerle evrimdisi olarak alisabilmelerini saglar. Visual Basic 6 Professional Edition,Dynamic HTMLi Visual Basic uygulamalarinizla btnlestirmenizi saglayan DHTML Page Designer adi verilen zel bir dzenleme bileseni sunar. DHTML Page Designerla kendi Web uygulamalarinizi bastan yaratabilir ya da var olan HTML sayfalarini DHTML zellikleri ekleyerek zellestirebilirsiniz. Bir programlama dili olarak DHTML,en iyi Microsoft Visual Basic Scripting Editionin bir uzantisi olarak dsnlebilir ve bu visual basic diliyle ok ortak yn vardir. DHTML, Visual Basicle tam olarak uyumlu degildir nk nceki HTML standartlariyla,zellikle de Internet Explorerin nceki srmlerinde ki nesne modeliyle uyumlu kalmasi gerekir. Sonu olarak,bazi Visual Basic denetimleri,zellikleri,yntemleri,olaylari ve anahtar szckleri DHTML tarafindan desteklenmez. DHTML Page Designer dilin zorluklarini HTML ieriklerini benzer nesne modeliyle ve geleneksel Visual Basic gelistirme ortamiyla sunarak kolaylastirir.
633
Diger bir farklilik iki dille birlestirilen dosya adi bitisleridir:HTML sayfalari .htm dosyalarinda ve Visual Basic formlari .frm dosyalarinda saklanir.
Bir form gibi bir HTML sayfasi metin,grafikler,dgmeler,liste kutulari,ActiveX denetimleri ve veri islemek ve ikti grntlemek iin basvurulan diger nesneleri ierir. Ama bir HTML sayfasini olusturmak iin kullanilan temel denetimler dizisi Visual Basic 6 ara kutusundakilerden farklidir. DHTML Page Designer,kullanici arabirimindeki grevleri HTML zelliklerinde belirtilen kurallara gre yapan geler adi verilen biraz farkli programlanabilir nesnelerle sunar. Bu gelerin her birinin Visual Basic nesnelerindekilerden farkli olan kendine zg yntemleri,zellikleri ve olaylari vardir. rnegin,DHTML Button gesi daha ok Visual Basic CommandButton denetimi gibi grnp,alismasina ragmen,Command1_Click olay yordami yerine,Button1_Onclick olay yordamini alistirir.
634
3. Project penceresinde Designers klasrn ain. Projedeki (DHTMLPage1) varsayilan HTML sayfasi Designers klasrnde grnr. Bir tasarimci (designer) uygulamanizin kullanici arabiriminin metin,denetimler,diger gelerini ieren tek bir HTML sayfasidir. (Microsoft terminolojisinde,bir tasarimci Visual Basic uygulamanizin bir parasini yaratan zel bir aratir. Bu kitapta tasarimcilari DHTML uygulamalari ve ActiveX veri nesneleri yaratmak iin kullanacaksiniz.) Uygulamaniza birden fazla HTML sayfasi dahil etmek istiyorsaniz,project mensndeki AddDHTML page komutuyla Designers klasrne ek tasarimcilar ekleyebilirsiniz. 4. Designers klasrndeki DHTMLPage1 tasarimcisini tiklayin ve Project penceresindeki View Object dgmesini tiklayin. Visual Basic programlama ortaminda DHTML Page Designeri grntler. Varsayilan ayar olarak Page Designer tam boyutunda ailmadigi iin,onu simdi bytmeli ve Project,Properties ve Form Layout pencerelerinin kapladigi alani kltmelisiniz. 5. Fareyi isareti boyutlandirma isaretisine dnsene kadar Project penceresinin sol kenarinin zerine getirin ve pencere sinirini program ortaminda kapladigi alani kltmek iin saga srkleyin. Simdi DHTML Page Designeri genisleteceksiniz. 6. Fareyi Page Designerin sag alt kenarinin zerine getirin. Fare isaretisi boyutlandirma isaretisine dnstgnde,Page Designeri asagidaki gibi grnene kadar genisletin: 635
7. Varsayilan sayfa,DHTMLPage1 Page Deignerin sag blmesinde grnr. (Geerli olarak sayfa bostur.) Sol blmede belgenizin HTML kodunun aga grnm aiklamasi bulunur. HTML sayfaniza metin,denetimler ve biimlendirme efektleri ekledike, setiginiz stiller ve kullandiginiz aralar bu blmedeki hiyerarsik yapiya yansitilir. Page Designerdaki iki blmenin zerinde,HTML sayfanizdaki geleri biimlendiren, konumlandiran ve dzenleyen dgmeleri ieren biimlendirme ara ubugu bulunur. Page Designerin sol tarafinda,HTML sayfalariniza programlanabilir geler olarak ekleyebileceginiz asil DHTML denetimlerini ieren ara kutusu bulunur.
DHTML sayfasi zellikleri hazirlanan sayfanin Visual Basic projesi iinde ya da bir HTML dosyasi olarak kayit edilmesini saglar.
636
sayfanizda
birka
stil
daha
kullanarak
alistirmalar
5) Belgedeki sonraki bos paragrafi P() tiklayin ve Heading 2 stiliyle biimlendirin. Belgenizdeki metin gelerine biimlendirme stilleri uyguladika,Page Designerin biimlendirme seimlerini iki karakterlik bir kodla belirttigine (H1,H2 vb.) ve aga grnm blmesinin alt kismina tasidigina dikkat edin.(Daha nce HTML ile alistiysaniz,bu baslik imleri size tanidik gelecektir.)
6) Belgedeki biimlendirin.
sifiri
sein
(0,0,0)
ve
Heading
stiliyle
8) Sansim 7 Hakkinda metnini sein (HTML sayfasinin altinda ) ve Heading 4 stiliyle biimlendirin. NOT: Kesfettiginiz varsayilan biimlendirme stillerinden baska Page Designerdaki Font Size ve Font Name ailir liste kutularini HTML sayfanizin yazi tipini degistirmek iin kullanabilirsiniz. Ayrica ara ubugundaki Bold,Italik ve Underline dgmelerini yazi tipi stilini ve Left,Center ve Right dgmelerini sayfanin hizalamasini degistirmek iin kullanabilirsiniz. Karakterleri Ayirmak Iin SPAN Imlerini Kullanmak
639
2) Belgedeki ikinci 0i sein ve Page Designer ara ubugundaki Wrap Selection In SPAN dgmesini tekrar tiklayin. 3) Belgedeki nc 0i sein ve Page Designer ara ubugundaki Wrap Selection In SPAN dgmesini son kez tiklayin. Aga grnm blmesinde metin iminin yaninda yarattiginiz SPAN imlerinin belirtisi olarak bir (+) simgesinin belirdigine dikkat edin. 4) SPAN imlerini grmek iin aga grnm penceresinde arti simgesini tiklayin. NOT: HTML sayfalarinizdaki SPAN imleriyle ayrilan gelerin yani sira,paragraflari DIV imiyle birbirine baglayabilirsiniz. Bir DIV imi karmasik bir islemde esitli geleri ayni stilde biimlendirmek istediginizde yararlidir.
640
Num niteligi (bir kme adi gibi) sayiya da uygulanir. Ama SPAN imleriyle belirtilen dizilimlere de bireysel IDler atayabilirsiniz. 7. Ilk SPAN sayisini tiklayin ve ona ID Num1e atayin. 8. Ikinci SPAN sayisini tiklayin ve ona ID Num2yi atayin. 9. nc SPAN sayisini tiklayin ve ona ID Num3 atayin. 10. Kazanma basligini tiklayin ve ona ID Resulti atayin. Son metin basligi (Sansim 7 Hakkinda) simdilik bir ID niteligi gerektirmez. Sonraki alistirmada bunu bir kpr olarak biimlendireceksiniz. Baska bir HTML sayfasina kpr yaratmak Web uygulamalariniz birden fazla HTML sayfasi sunacaksa,Page Designer ara ubugundaki Make Selection Into Link dgmesi aklinizda tutmak istediginiz yararli bir biimlendirme araci olacaktir. Make Selection Into Link dgmesi,kullanic i kpry tikladiginda Internet Explorerdaki geerli sayfayi degistirerek yeni bir HTML sayfasi ykleyerek seili metni kpr olarak biimlendirir. Bir metin seimini kpr olarak biimlendirdikten sonra Properties penceresinde metin gesinin href zelligini kullanarak gerekli baglantiyi (bir URL ya da yerel yol adi) belirleyebilirsiniz. Sansim 7 Hakkinda metnini kpr olarak biimlendirmek iin asagidaki adimlar izlenir: 1. Sayfadaki son basligi semek iin aga grnm blmesindeki H4 tiklayin. Metni HTML sayfasinda biimlendirmeden nce semelisiniz. 2. Page Designer ara ubugunda Make Selection Into Link dgmesini tiklayin. Seili baslik sag blmede kpr olarak biimlendirilir. 3. Simdi HTML belgesinde baska bir satiri tiklayin. Imle kpry ieren satirdan uzaklastiginda kpr biimlendirmesi (alti izili
642
7. Kpr iin href zelligi girdisi C:\AaVb6\Ders22\Sansim.htm yazin ve Entera basin. WebSansim Projesini Kaydetme 1. File mensnde Save Project As komutunu sein.
olarak
3. Tasarimci dosyanizin (.dsr) adi soruldugunda WebSansim yazin. Burada ilk defa kullanilan tasarimci dosya,HTML sayfanizi ve tm biimlendirmesi ve denetimlerini ieren zel bir dosyadir. 4. Kod modl dosyanizi WebSansim yazin. (.bas) adlandirmaniz istendiginde
Bir DHTML uygulamasinda,.bas dosyasi gzatici bir sayfadan digerine geerken nemli bilgileri kaydetmek ve geri almak iin bir mekanizma olan PutProperty ve GetProperty islemlerini yneten islevleri ierir. DHTML Uygulamasini alistirma DHTML uygulamaniz gvenli olarak sabit diskinize yklendiginde, Internet Explorerla alistiracaksiniz.
643
Normalde,Internet Explorerin HTML sayfanizi gsterme biiminde ok az biimlendirme farkliliklari grrsnz. Bu noktada,uygulamaniz yarimdir,programla iletisim kuramazsiniz ama yarattiginiz biimlendirme ve kpr efektlerini gzaticinin nasil grntledigini grebilirsiniz. NOT: Gzaticinizin address metin kutusundaki garip yol adini grdnz m?Visual Basic DHTML uygulamanizi bellekte derlerken,sabit diskinizde program alisirken saklamak iin geici bir dosya yaratir. Grdgnz yol adi Visual Basicin dosyayi saklarken kullandigi geici saklama konumudur. 2. Internet Exploreri kapatmak iin Internet Explorerin baslik ubugundaki close dgmesini tiklayin. Internet Explorer kapanir ama uygulamaniz alismaya devam eder,nk Internet Explorer basit bir gzaticidir,programin kaynagi degildir. 3. DHTML uygulamasini durdurmak iin Visual Basic ara ubugundaki End dgmesini tiklayin. Bir sre sonra program kapanir ve Page Designer programlama ortaminda tekrar grnr.
644
Sansli.htm Yardim Dosyasini Yaratmak Iin Word Kullanma 1. Visual Basic gelistirme ortamini simge durumuna kltn ve bilgisayarinizda Microsoft Word 97i baslatin. Microsoft Word Start meny tiklayip,Programs klasrn gsterip Microsoft Word 97 klasrn tiklayarak baslatabilirsiniz. 2. Word baslayip yeni bos bir belge grndgnde yazacaginiz metni yazin ve gsterildigi gibi biimlendirin. Simdi bu belgeyi kaydedeceksiniz,bylece grntlenebilir. bir HTML belgesi olarak WebSansim uygulamasi tarafindan
3. Word File mensnde,Save As HTML komutunu tiklayin. 4. Save As iletisim kutusu grndgnde,C:\AaVb6\Ders22 klasrn belirleyin ve HTML belgenizin yol adi olarak Sansim yazin. Dosyayi Word 97 biiminde kaydetmeden devam etmek isteyip istemediginiz sorulabilir ya da Web aralarinin yeni srmlerini yklemek iin Internete baglamak istiyorsaniz ilk nce Yesi ve ikincisinde Noyu tiklayin. 5. World File mensnde,Wordten ikmak iin Exit komutunu tiklayin.
645
Simdi WebSansim programini etkin bir kpryle nasil alisacagini grmek iin alistiracaksiniz. 6. Visual Basicin ekrani kaplamasini saglayin. NOT: Bu ynergeleri tam olarak takip ediyorsaniz,programi alistirmadan nce hyperlink nesnesinin href zelligini C:\AaVb6\Ders22\sansim.htme degistirmelisiniz. Bylece yarattiginiz HTML dosyasini aar. Href zelligi,bu kisimdaki programlari kolayca ykleyip alistirabilmeniz iin C:\AaVb6\Ders22\sansim.htme gnderilmistir. 7. Gerekiyorsa hyperlink 1 nesnesinin href zelligini degistirin ve sonra Visual Basic ara ubugundaki start dgmesini DHTML programini alistirmak iin tiklayin. 8. Websansim sayfasi Internet Explorerda,bagli sayfayi grmek iin Sansli 7 Hakkinda kprsn tiklayin. 9. Websansim HTML sayfasina dnmek iin Back dgmesini tiklayin. 10. Internet Explorer baslik ubugundaki close dgmesini tiklayin. 11. Visual Basic ara ubugundaki End dgmesini tiklayin. Microsoft Word (ya da baska bir HTML dzenleyici yada szck islemci) kullanmak Visual Basicteki DHTML Page Designera yardimci bir kaynaktir.
646
NOT: Visual Basic ara kutusu,DHTML ara kutusu geleri ve Visual Basic ara kutusu denetimleri arasinda geis yapmanizi saglar. geler ve denetimler arasinda geis yapmak iin sirasiyla ara kutusundaki DHTML ve General dgmelerini tiklayin.
DHTML Ara Kutusunu Belgelendirmek Bir DHTML uygulamasinda ara kutusu denetimlerinin nasil kullanildigiyla ilgili daha fazla bilgi iin MSDN Library evrimii yardiminin index sekmesinin HTML Intrinsic Controls yazin. NOT: Asagidaki bilgiler DHTML ara kutusu geleri tarafindan saglanan en nemli zelliklerin ve olaylarin bir kaini sunar. (Tm liste iin,her genin Properties penceresini ve kod penceresindeki procedur ailir ,liste kutusu denetlenir.) Button
647
648
TextArea TextArea gesi DHTML sayfasinda ok satirli girdi ve iktiya izin veren daha byk bir metin kutusu yaratir. Gerekirse TextArea gesi gizli satirlara erisim saglamak iin kaydirma ubuklari sunar. Value zelligi metin kutusunda grnen metni saklar. Rows zelligi genin yksekligini satir cinsinden ayarlayabilmenizi saglar ve Cols zelligi genin genisligini karakter cinsinden ayarlamanizi saglar. TextField gesi gibi TextArea gesi de metin kutusunun ierigi seildiginde OnSelect olayinda ve metin kutusundaki metin degistirildiginde OnChange olayini alistirir. PasswordField PasswordField DHTML sayfasinda bir parolayi yada kullanicinin girdigi nemli bilgiyi gizleyen yada maskeleyen bir kutusu yaratir. Value zelligi parola kutusuna girilen metni saklar. Properties penceresi ile tasarim zamaninda gizli bir varsayilan parola belirleyebilir yada alisma zamaninda kullanicinin parolasini almak iin value zelligini kullanabilirsiniz. PasswordField gesi parola kutusunun ierigi seildiginde OnSelect olayini ve parola kutusundaki metin degistirildiginde OnChange olayini kullanir. Option Option gesi DHTML sayfasinda bir seenek dgmesi yaratir. Visual Basicde her dgmeyi formdaki bir frame denetiminin iine yerlestirerek beraber alisan bir grup seenek dgmesi yaratabilirsiniz. Ama DHTML Page Designerin bir frame denetimi yoktur. Seenek dgmelerinin biri DHTML sayfasinda gruplandirmak iin, properties
649
HorizontalRule HorizontalRule gesi DHTML sayfasina yatay bir izgi ekler. izginin kalinligini Size ve rengini Color zelligi ile ayarlayabilirsiniz. izginin uzunlugunu Width zelligi ile ayarlanir. FileUpload FileUpload zelligi DHTML sayfasinin kullanicilarin kendi yerel sabit disklerinden Internet sunucusuna bir dosya yklemek iin kullanabilecekleri bir metin kutusu ve komut dgmesi ekler. Kullanici FileUpload gesini tikladiginda OnClick olayi ve metin kutusundaki metin seildiginde OnSelect olayi alistirilir. HiddenFile HiddenFile gesi DHTML sayfasina kullanici tarafindan grlemeyen bir metin kutusu ekler. Bu metin kutusu programinizdaki veriler iin geici bir saklama konumu oldugundan yararlidir. Ayrica HiddenFiled gesini Submit islemi alistirildiginda Internet sunucusuna bilgi vermek iinde kullanilabilir. Value zelligi gizli metnin ierigini saklar ve tasarim yada alisma zamaninda ayarlanabilir. InputImage InputImage gesi DHTML sayfasina resim ekler. Scr zelligi grnt kutusunda yer alan resmin yol adini yada URL adresini belirler. Bu temel islevselligin yani sira, InputImage gesi kullanicinin yklenen resmi girdigi iin bir mekanizma olarak kullanmasina izin verir. List List zelligi bir DHTML sayfasina kayan bir liste kutusu eklemek iin kullanilir. List gesi Viual Basicteki ListBox denetimine benzer. Size zelligi karma kutuda bir seferde grlebilen ge sayini belirler ve Length zelligi ListBoxin yksekligini belirler. alisma zamaninda select zelligi
651
Boyutlandirma isaretisiyle ara kutusu gelerini Visual Basic formunda bir denetimde yaptiginiz gibi yeniden boyutlandirabilirsiniz. geleri sayfada tam olarak konumlandirabilir ya da diger gelere ve gzatici penceresine gre greceli olarak yerlestirebilirsiniz. NOT: Tam konumlandirma,sayfaya yerlestirdiginiz genin tam olarak belirlediginiz konumda grnecegi anlamina gelir. Bagil konumlandirma genin sayfanin boyutu degistirildiginde komsu gelere gre yer degistirilmesine izin verir. Tasarim zamaninda properties penceresinde zellikleri ayarlayarak ara kutusu gelerini zellestirebilirsiniz. Kullanilabilecek zellikler genin trne gre degisir. Bazi ara kutusu geleri,geyi farenin sag dgmesiyle tiklayip,properties kutusunu tikladiktan sonra properties pages iletisim kutusunu doldurarak zellestirebileceginiz properties pages ierirler. Bir ara kutusu gesini silmek iin grnm blmesinde nesne adini tiklayin ve dele basin. Websansim Uygulamasina geler Eklemek Programi zellestirmeyi bitirdiginizde,evir dgmesini tikladiginizda rastgele sayilar grntleyen bir hizmet programiniz olur. Sayfada bir ya da daha fazla yedi grnrse,multimedia MCI denetimi .Wav dosyasiyla retilen alkis sesiyle kazandiginiz ilan edilir. DHTML Uygulamanizdaki Dosyalari Yeniden Adlandirma
652
2. File mensnde,Save Project As komutunu tiklayin. 3. C:\AaVb6\Ders22 klasrne gein,BenimDHTML7 entera basin. 4. Project penceresindeki designers penceresini DHTMLPage1 tasarimini ain. yazin ain ve ve
5. File mensnde,Save Websansim.dsr As komutunu tiklayin. 6. Save As iletisim kutusunda,BenimDHTML7 yazin ve entera basin. 7. Project penceresindeki modules klasrn ain ve ModDHTML modln tiklayin. 8. File mensnde,Save WebLucky.bas As komutunu tiklayin. 9. Save As iletisim kutusunda BenimDHTML7 yazin ve entera basin. NOT: Proje (.vbp),tasarimci (.dsr) ve modl (.mod) dosyalarina ek olarak,bir DHTML uygulamasi kullandiginiz tasarimci iin HTML kodlari ieren bir .dsx dosyasi ve HTML kodlari ve diger ikilik sistem bilgileri ile bir .dca dosyasi ierir. Sayfadaki Bir Metin gesini Silme Page Designerda herhangi bir geyi aga grnm yada tasarim blmesinde seip del tusuna basarak silebilirsiniz. Sayfadaki ilk bos satiri (Blank1) silmek iin asagidaki adimlari izleyin. 1. Aga grnm blmesinde Blank1 gesini tiklayin. 2. Del tusuna basin.
653
Sayfaya Bir Button gesi Eklemek Simdi, bir kumar makinasini baslatmak ve rasgele sayi grntlemek iin DHTML sayfasina bir Button gesini ekleyeceksiniz. 1. Ara kutusundaki Button gesini ift tiklayin.
654
2. Bu ActiveX denetimini ara kutusuna eklemek iin OKyi tiklayin Multimedia MCI denetimini sonraki ara kutusundaki General blmesinde grlr. Sayfada Bir Multimedia MCI Denetimi Yaratma ActiveX denetimleri sayfada diger denetimler gibi izilir. Bu denetimlerin Visible zelligi olmadigi iin, program alistiginda grnmelerini istemiyorsaniz, sol kenar boslugunun disina srkleyebilirsiniz. Uygulamaniza Multimedia MCI denetimi eklemek iin asagidaki adimlari izleyin: 1. Ara kutusundaki Multimedia MCI denetimini tiklayin. Page designer sayfasinin ortasinda yeni bir denetim yaratir. Denetim iin aga blmeye de girdi ekler. 2. Multimedia MCI denetimi blmenin sol kenarindan disari tasinincaya kadar sol OK tusuna basilir. Denetimi grnmn disina tasimak onu grnmez yapar. 3. Degisikleri kaydetmek iin, Visual Basic ara ubugundan Save Project dgmesini tiklayin. DHTML geleri Iin Olay Yordamlari Yaratmak DHTML sayfanizdaki geleri ve ActiveX denetimlerini programli olarak, Visual Basic uygulamalarinda oldugu gibi olay yordamlari ve iyi seilmis program komutlariyla denetleyebilirsiniz. DHTML olay yordamlari yazarken karsilasacaginiz en byk farklilik olay ve nesne adlarinin ogunu degismis olmasi, bylece grenmek iin biraz alistirma yapmayi gerektirmesidir. Ama If...Then...Else,For...Next ve Do...Loop gibi tanidik yapilar aynidir. DHTMLPage_Load Olay Yordamini Yaratma Bu olay yordami genellikle Visual Basicteki Form_Load olay yordamina, DHTMLPage_Load olay yordaminin sayfa her yenilendiginde tekrar alistirilmasi disinda denktir.
656
1. Code penceresini grntlemek iin project penceresindeki View Code dgmesini tiklayin. 2. Code penceresindeki object ailir liste kutusunu tiklayin ve DHTMLPage nesnesini tiklayin. DHTMLPage_Load olay yordami Code penceresinde grnr. 3. Asagidaki program kodunu yazin: Baslik iin alti izgili stili ayarla LuckyHead.Style.textDecorationUnderline=True sayilarin rengini maviye ayarla Num.Style.Color=blue rastgele sayi olusturucusunu baslat Randomize bozuk para yiginini grntle Image1.src=C:\proje\..\paralar.wmf Multimedia MCI denetimini dzenle ve alistir MMControl1.Notify=False MMControl1.Wait=True MMControl1.Shareable=False MMControl1.DeviceType=WaveAudio MMControl1.FileName=C:\AaVb6\Ders22\alkis.wa v MMControl1.Command=Open Property Bagdeki daha nceki kazanmalari belirlemek iin GetProperty islevini kullan.(HTML sayfasi ykleme ve geri ykleme islemleri sirasinda degerini koruyan bir saklama yeri).Sansim 7 Hakkinda Kprsne ya da diger Web sayfalarina geisler sirasindaki kazanma sayisini bu kodla kaydedebilirsiniz.
657
0 ve 9 arasindaki rasgele sayilar Rnd islevi tarafindan yaratilir,Int islevi tarafindan yuvarlanir ve innerText zelliginin sirasiyla Num1,Num2 ve Num3 geleri tarafindan sayfaya kopyalanir. InnerText zelligi sayfadaki var olan metin iin belirlediginiz metin bagimsiz degiskenin yerini alarak metin gesinin yerini degistirir. InnerText zelligi bir genin degerini de temsil edebilir. Bu islevsellik sayfada yer alan rasgele sayilardan birinin 7 olup olmadigini belirlemek iin if bildirisinde kullanilmistir. Yedi grnrse, Multimedia MCI denetimindeki Prev ve Play bagimsiz degiskenleri kullanilarak zaferi ilan eden .wav dosyasi alinir. Alkisi baslattiktan sonra, GetProperty islevi ile Kazanma degeri yerel x degiskenine kopyalanir. Sonra formdaki Kazanma sayisi Result gesinde arttirilir. Son olarak, arttirilan kazanma sayisi PutProperty islevindeki Property Baga kopyalanir. BenimDHTML7 Uygulamasini alistirma 1. Internet Exploreri baslatmak ve DHTML sayfasini yklemek iin Visual Basic ara ubugundaki start dgmesi tiklanir. 2. Sayfada bir yada daha fazla yedi grnene kadar evir dgmesini tiklayin. Oyunu kazandigimizda, alkis.wav dosyasi alistirilir. 3. Kazanma toplaminizi bes yada alti yapmak iin birka kez daha tiklayin. Her yedi grldgnde toplaminiza baska bir kazanma eklenir. 4. Ekrani yenilemek ve DHTMLPage1_Load olay yordamini alistirmak iin Internet Explorer ara ubugundaki Refresh dgmesini tiklayin. 5. Son olarak programdaki kpry tiklayin ve gzaticinin Back dgmesini tiklayarak sayfa yenilendiginde dogru Kazanma sayisini listelendigini dogrulayin. 6. BenimDHTML7 uygulamasiyla alistirmalar yapmayi bitirdiginizde , Internet Explorerin baslik ubugundaki Close
660
rnek:
661
662
663
664
Amalar: Hata Hata Hata Hata Hata Hata denetimini tanimlamak. denetim aralarini tanimlamak. denetim deyimlerini aiklamak. denetimin kullanildigi alanlari aiklamak. kodlarini aiklamak. olustugunda yapilacak islemleri aiklamak.
Hata Denetimi
Hata denetimi (troubleshooting) programda olusan alisma zamani ve diger kodlama hatalarinin tanimlanmasi (teshis) ve giderilmesi iin yapilan alismalardir. Visual Basic, programlarin yazilmasi derlenmesi ve alistirilmasi) sirasinda karsilasilan hatalara karsi gelistirilmis bir hata bulma ve dzeltme (debugging) olanagina sahiptir.
665
Derleme (compile) hatalari, programi yazarken yapilan hatala rdir, rnegin For olmadan kullanilan Next deyimi, bir tirnak ya da dogru yere konmamis bir virgl gibi. Program yaziminda dilin bilesenlerinin uygun olarak kullanilmamasi, diger bir degisle szdizim (syntax) hatalari da derleme sirasinda ortaya ikar.Visual Basic bu tr hatalarin aninda ve alismadan nce ve zlmesine iliskin ok sayida araca sahiptir.
alisma zamani hatalari (run-time error) ise program alistigi sirada ortaya ikar Olmayan bir dosyayi amaya kalkmak ya da sabit diskte yer kalmamasi gibi... Bu hatalar programin gelistirme srecinde anlasilmazlar. Ancak programin test edilmesi asamasinda ya da programcilar tarafindan 666
Ipucu : Iyi bir programcinin Visual Basic hata giderme olanaklarini ok iyi biimde bilmesi gerekir. Programi iyice tespit edip, hata vermesi durumunda hata bulma ve giderme aralari kullanarak sonuca gidebilir.
Option Explicit deyiminde modl tanimlama kisminda mutlaka yer verilerek; degiskenlerin uya zorlanmasi ve bylece degisken tanimlamasindan ve yanlis kullanimlarindan Kk hatalarin en aza indirilmesi. 667
Otomatik Tamamlamalar
Visual Basic kod ortami iinde; kod yazarken birok konuda yardimci olur. Bu dzenlemeler; yazilan kodlarin otomatik olarak yazim denetiminin yapilmasi, nesnelerin zelliklerinin otomatik olarak listelenmesi yazilmasi durumunda parametrelerinin otomatik olarak ekrana gelmesi gibi bunun disinda Visual Basic, program kesildikten sonra (debug modda) fare ile zerine gidilen degiskenin degerini de gsterir. Bu zelliklerin ogu varsayim olarak aktiftir. Eger aktif degilse Tools mensnden Options me nsnden dzenlemelerle saglanir. NOT Birok programda oldugu gibi Visual Basic 6.0'da da programin ortam dzenlemelerinin yapilmasi Tools menusundan Options komutu ile yapilir. Options ile tisim kutusu ok sayida sekmeye sahiptir. Bu sekmelere tiklanarak istenilen alanlarda degisiklikler yapilabilir.
668
Bunun disinda hata bulundugunda hatali kodun rengini belirlemek iin Options menusunun Editr Format sekmesindeki dzenlemeler kullanilir.
Kod dzenlemeleri
Normal Text: Normal kod satirlarinin rengini dzenler. Selection Text: Seilen kod satirlarinin rengini dzenler. Syntax Error Text: Szdizimi hatasi olan kod satirlarinin rengini dzenler. Foreground : Yazi rengi. Background : Zemin rengi Indicator: Gstergecin rengi Auto Syntax Check ile yazilan kodlarin yazim denetimi otomatik olarak yapilir.(Sekil-4). Auto List Members zelligi nesnelerin zelliklerinin otomatik olarak listelenmesi saglanir {Sekil-5). Auto Ouick Info zelligi ile bir deyimin yazilmasi durumunda parametrelerinin ekrana gelmesi saglanir {Sekil-6). Auto Data Tips zelligi de ok yararlidir. Bu zellik Program kesildikten sonra (debug modda) fare ile zerine gidilen degiskenin degerini gsterir(Sekil-7).
669
670
671
alisma zamani (run-time) hatalarina karsi herhangi bir nlem alinmazsa program hata verir ve kesilir. Diger bir aidan; bu durum kullanicilar karsisinda dslebilecek en kt durumlardan birisidir. Mu nedenle alisma zamani hatalarina karsi belli nlemler daha nceden alinmalidir. Bu hatalarin tanimlanip nlemlerini daha nceden alinmasi islemi hatalarin tuzaklanmasini ortaya ikarir.
Tuzaklanabilir Hatalar
Tuzaklanabilir hatalar (trappable errors) program alisirken olusur (bazi hatalar tasarim zamaninda da olusur). Bu hatalar 1 -1000 arasinda hata kodu dndrrler. Bu hata kodlari On Error deyimi ve Err nesnesi ile birlikte ele alinarak hatalarin degerlendirilmesi ve progra min uygun biimde ynlendirilmesi saglanir. Tuzaklanabilir hatalar Kod 3 5 6 7 9 10 11 Mesaj Return without GoSub (GoSub'siz Return) Invalid procedure cali (geersiz procedure agirmasi) Overflow (tasma) Out of memory (bellek yetersiz) Subscript out of range (dizi disi) This array is fixed r temporarily locked (dizi sabit ya da kilitli) Division by zero (sifira blme) 672
673
Debug ara ubugunun kullanilmasi iin programin kesilmesi gerekir. Kesme (break) islemi hata sonucunda ya da manuel olarak da yapilabilir.
Programin kesilmesi ya da Break dgmesine tiklanarak program debug moda alinir. Iste bu durumda programci Visual Basic hata giderme aralarini kullanir. Hata giderme aralarinin basinda degiskenleri ve programdaki belli yerleri izleyebilecegimiz pencereler gelir.
674
675
Sekil-9 Anlik izleme Watch Window Watch Window ise projedeki ifadelerin izlenmesi iin kullanilir. Watch Window penceresi zerinde Add Watch komutu ile istenen ifade Watch Window'a eklenir. Expression ve Value stununda ift tiklanarak degisiklik yapilabilir.
676
677
On Error Deyimi
Hata olusumunda; mesaj vermek ve programin kontroln saglamak iin belli bir program parasinin isletilmesini saglanabilir. Bu islem iin hata kontrolyle ilgili olarak bir program blogunun yazilmasini saglanir.
678
Ardindan programlarin hata kontrol blmlerinde bu procedure agirilir: HataKontrol: Hatalar 'hatalar procedure'i agirilir Resume Next End Sub
NOT
Projeye byle bir modl eklemek iin Project mensunden Add Modle komutu kullanilir.
Resume Deyimi
Programin alismasi sirasinda; alisma zamani hatasi ile karsilasildiginda "hata kontrol" kismina sapilir. Hata kontrol kisminin Isletilmesinin ardindan hata mesaji verilir. Sonra ise ya program ke silir ya da hatali deyim atlanir. Iste Resume deyimi hatali deyimin atlanarak programin isletimine devam etmesini saglar. Yapisi: Resume Resume Next Resume satir Resume deyimlerinin islevleri sunlardir:
681
Resume : Program kontrol hata olusan deYiminden devam eder. Resume Next : Program hata olusan satirdan bir sonraki satira dner. Bylece hata ggslenmis olur. Resume satir : Program satir ile belirtilen satir ya da etikete geri dner. Belirtilen satir hata kontrolnn yapildigi procedure iinde olmalidir. Sub Buttonl_Click () On Error GoTo HataKontrol A = 2 B = 0 Sonu = A/B Exit Sub HataKontrol: Select Case Err.Number Case 11: Mesaj = "Sifira blnme hatasi olustu!! End Select MsgBox Mesaj Resume Next End Sub
Err Nesnesi
alisma zamani hatalari {run-time errors) bakinda bilgi verir. Err nesnesinin varsayilan zelligi Number'dir. alisma zamani hatasi olustugunda Err nesnesi hatayi temsil eden hata bilgisini ierir. Exit Sub, Exit Function, Exit Property ya da Resume Next deyiminin ardindan Err nesnesinin degeri sifirlanir. Bunun disinda Err nesnesi sifirlanmak istenirse Clear metodu kullanilir. Asagidaki rnekte Err nesnesinin Clear ve Raise metotlan kullanilmaktadir. Clear metodu hata degerini silerken, Raise metodu istenilen hata degerini olusturmaktadir: Private Sub command4_click() Dim Mesaj hata denetimi. On error Resume next Err.clear Err.raise 6 Overflow hatasi. hata numarasinin denetimi if err.number <> 0 then Mesaj = hata # & str(err.number) & olusturuldu & err.source & chr(13) & err.description 682
gibi bir kodda x yerine asagidaki hata numaralarini kullanarak hatanin olusma sebebini program ierisinde grenip uygun kodlari yazabilirsiniz. Invalid procedure call or argument (Error 5) Bir fonksiyona geersiz bir deger girildiginde bu hata olusur. rnegin Sqr(-l) ifadesi bu hatayi olusturur. nk negatif sayilarin kk olmaz. Overflow (Error 6) Bu hata genellikle bir degiskene sinirlan disinda bir deger atandiginda meydana gelir. rnegin Integer olarak tanimlanmis bir degiskene 1000000 sayisi atanirsa bu hata olusur. Out of memory (Error 7) Bellek bittiginde bu hata meydana gelir. Windows altinda ok fazla programi alistiriyorsaniz bazilarini kapatmayi deneyin. Yazdiginiz Modle veya Prosedr ok uzun oldugunda bu hata meydana gelir. Bunlarin uzunlugu 64K boyutunu geemez. Kodunuzu farkli prosedrlere dagitin. Subscript out ofrange (Error 9) Dizi iinde var olmayan Erisilmek istenen eleman muhtemelen ya byktr yada kktr. etmelisiniz. Eger belirtilen dizi elemani degisken adinin dogrulugunu bir elemana erisim yapilmak istenmistir.
dizi araliginda tanimlan alt veya st sinirdan Bu durumda dizinin sinirlarini kontrol
bir degisken olarak tanimlanmissa o zaman kontrol etm elisiniz. eleman sayisini
Bir dinamik dizi tanimlamissiniz fakat dizinin belirtmemissiniz. Bu durumda da bahsi geen hata meydana gelecektir:
684
Division by zero (Error 11) Bir sayi sifira blnyorsa bu hata meydana gelir: Bu durumda ifadedeki degiskenlerin degerlerini kontrol edin. Type mismatch (Error 13) Degisken veya zellige atanan deger dogru tipte degildir. rnegin tamsayi olarak tanimlanmis bir degiskene string bir ifade aktarildiginda bu hata mesajiyla karsilasilir. Resume without error (Error 20) Resume deyimi sadece hata yakalayici deyimlerinden sonra kullanilabilir. Hata yakalama kodu disina Resume deyimi kullanmissiniz. Deyimi hata yakalama araligina alin yada silin. Herhangi bir hata olmamasina karsin sizin kodunuz hata yakalama blmn giriyorsa bu hata olusur. Bu ogunlukla hata ayiklama kodundan nce Exit Sub yazmamanizdan kaynaklanir. Hata olmadigi halde hata ayiklama kodu devreye giriyordur. Out of stack space (Error 28) Stack alani programlarin kullandiklari nemli bir hafiza blgesidir. ok sayida Functon, Sub veya Property agrisi yapildiginda, zelliklede kendi kendini 685
Bu hata iki kontroln Change olaylarinin birbirlerini degistirmelerinden de meydana gelebilir. Change olayina yazdiginiz kodu kontrol edin.
srekli
Sub, Function, or Property not defined (Error 35) Tanimlanmamis bir zellik veya prosedr meydana gelir. agirdiginiz prosedr tanimlayin. agrildiginda bu hata
Prosedrn ismi yanlis yazilmis olabilir. Ismin dogrulugunu kontrol ederek bir yanlislik varsa dzeltin. Istenilen prosedr baska sinirlan iinde tanimlanmista olabilir. Bir modl iinde Private olarak tanimlanan prosedrler o modln disindaki prosedrler tarafindan agrilamazlar. Error in loading DLL (Error 48) Ulasilmak istenen dosya bir Windows DLL dosyasi degildir.
Ulasilmak istenen DLL dosyasi baska bir DLL dosyasina ihtiya duyuyor fakat bu DLL dosyasi bulunamiyordur. Bad DLL calling convention (Error 49) ogunluklada DLL dosyasindan agirdiginiz bir fonksiyonun parametreleri orjinal parametrelerle ayni tipte olmadiginda bu hata olusur. Declare 686
olusur.
688
Put vaya Get deyimleri ile birlikte kullanilan kayit numarasi sifir veya dah kk olamaz. Bu durumda verilen kayit numarasi kontrol edilmelidir. Too many files (Error 67)
Bu hata genellikle anda ailabilecek dosya limitinin asilmasi durumunda meydana gelir. Bu durumda aik olan bazi dosyalar kapatilmali veya config.sys dosyasinda yer alan files deyiminin karsisindaki sayisal deger artirilmali ve bilgisayar yeniden baslatilmalidir. Files=60 gibi. Bu hata ana dizinde 512 den fazla dosya olustugunda da meydana gelir. Ana dizinde olusturulabilecek maximum dosya sayisi 512'dir. Dosyayi farkli dizinlere kaydetmeyi deneyin veya ana dizindeki bazi gereksiz dosyalari farkli dizine kaydedin. Permission denied (Error 70) Write protect diskete yazarken bu hata olusur. Disketin protegini ain Bir agda alisiyorsaniz o dizinde kaydetme hakkiniz olmayabilir.
Erismeye alistiginiz kayit veya dosya baska bir kullanici tarafindan kilitlenmis olabilir. Diger kullanicinin kapatmasini bekleyin. Eger program ag altinda alisacak sekilde tasarlaniyorsa bu hatayi tesbit edip, kayit kilidi ailana kadar beklemeyi saglayacak kodu yazin. Disk not ready (Error 71) olusur. 689 Diskete yazan komutlarda srcde disket bulunmazsa bu hata
Nesne degiskenlere Set degimini kullanmadan atama yapamazsiniz. Esitligin basina Set koyun. Dim x As Node x = TreeViewl . Selectedltem atamasi geersizdir. Set x = TreeViewl.SelectItem seklinde kullanilmalidir. Can't use character device names in file names (Error 320) Bir dosya ismine AUX, CON, COM1, COM2, LPT1, LPT2, LPT3, I_PT4,NUL gibi isletim sistemine zel degimleri vermezsiniz. Object already loaded(Error 360) Kontrol dizisi olarak tanimlanan kontrol elemani zaten yklenmis. alisma zamaninda bir dizi olarak tanimlanmis ve load deyimiyle yklenmek istenen kontol elemani daha nceden yklenmis oldugundan dolayi bu hata mesaji karsimiza ikacaktir. 690
Load
Textl(5)
Yukaridaki satir 5 numarali bir Text kutusu olusturmaya alismaktadir. 5 numarali text kutusu zaten varsa bu hatayi olusturur. Argument not optional or invalid property assigmnent(Error 449) Fonksiyon parametreleri eksik verilmistir. Mesela left(ifade,adet) deyimi iki adet parametreye ihtiya duyar, bunlardan birisi yazilmazsa yukaridaki hata meydana gelecektir. Error loading from fle(Error 31037) Muhtemelen FileNumber olarak verilen dosya numarasi geersizdir. Dosya Binary modda ailamiyor olabilir. Dosya zarar grms olabilir.
Error saving to file (Error 31036) Dosyaya kayit yapilamiyor. Verilen dosya numarasi geersiz olabilir. Ulasilmak istenen dosya Binary modda ailamiyordur. Disk veya diskette yeterli bos yer bulunmamaktadir.
Tasarim Zamani Hatalari Programlar yazilirken hatalar yapilmissa VB o programi alistirmayi reddedecektir. Hata giderilinceye kadar program alistirilamaz. Asagida ok karsilasilan mesajlari verdik. Bunlari izleyerek hatayi gidermeye alismalisiniz.
A procedure of that name already exists Olusturulmak prosedr vardir. Istenen prosedrn ismini tasiyan baska bir
691
End If without block If If kullanilmadan End If kullanilmis. Herbir End If mutlaka bir If deyimine karsilik gelmelidir. Bu durumda If-End If blok yapisini kontrol etmelisiniz. End Select without Select Case Seiect Case kullanilmadan End Select kullanilmis. End Select deyimi mutlaka Select Case deyiminden sonra gelmelidir. Select Case without End Select Select Case kullanilmis fakat End Select kullanilmamis. Blogun sonuna End Select koyun. Exit Do not within Do...Loop Exit Do ifadesi Do..Loop deyimi Iinde degildir. Exit Do deyimi sadece Do...loop deyimi iinde kullanildigi zaman geerlidir. Exit For not within For...Next Exit ifadesi For-Next deyimi iinde degildir. Exit For deyimi sadece For-Next dngs iinde kullanildigi zaman geerli olur. Exit Function not allowed in Sub or Property 692
Bir Property sonlandirmak iin End Property ifadeleri kullanilmalidir. Property sonunda End Property kullanmamissiniz, Expected End With With deyimini kullanmissiniz fakat End With deyimi ile sonlandirmamissiniz. For without Next For kullanilmis fakat bunun sonunda bulunmasi gereken Next kullanilmamis. Her bir for deyimine karsilik mutlaka Next deyimi bulunmalidir. Eksik olan Next deyimlerini uygun yerlere yazmalisiniz. Label not defned Goto deyimi ile degiminden kullandiginiz etiketi yazin. 693 ynlendirilmis etiket bulunamiyor. Goto
Syntax Error Bu hata Visual Basic'in herhangi bir ifadesinin yanlis yada eksik yazilmasi durumunda meydana gelir. Yazdigini ifadeyi kontrol edin. zellikle ( i ve I) harflerini kullanmayin. Variable not defned Tanimlanmamis bir degisken kullanildigi zaman bu hata meydana gelir. Bu durumda bahsi geen degisken iinde bulunulan prosedrde Dim veya Static deyimi ile tanimlanmalidir. Duplicate declaration in current scope Bir degisken ayni yerde iki defa tanimlanirsa bu hata olusur. Tanimlardan birini silin. Too many dimensions Diziler en fazla 60 boyutlu olabilirler. Daha byk yapilan bir tanimlama yukaridaki hata me sajina neden olacaktir.
yazarken
karsilasilan
unuttugu 694
Kullanici degisken tanimlarken tanimlamalardan birisini zaman asagidaki mesaj penceresi ile uyarilir:
Degiskenler tanimlanirken tek tek tanimlanabilecegi gibi aralarina "," konulmak suretiyle tek satirda da tanimlanabilir. Yukarida verildigi gibi son degisken iin "," kullanilmis fakat degisken tanimlanmamistir. Mesajin anlami: Der/eme hatasi, for x=l to 100 ifadesi forx=l to
Mesajin
anlami:
Derleme
if x=1 ifadesi yazilip bir sonraki satira geilmek istenirse yani then unutulurca asagidaki mesaj penceresi ile kullanici uyarilacaktir:
695
Mesajin anlami: Der/eme hatasi Then veya Goto:bekleniyordu For x=1 ifadesi yazilip enter tusuna basildiginda asagidaki mesaj penceresi ile kullanici uyarilacaktir:
"Command1.Caption=" gibi bir ifadenin sol tarafi yazilip sag tarafi yazilmadan enter tusuna basilirsa asagidaki gibi bir mesaj penceresi ile kullanici uyarilacaktir:
Mesajin anlami; Derleme hatasi deyim:bekleniyordu Program yazmak; belli bir kodlama kurallan ya da diger ortam kurallarina bagli oldugu iin programin gelismesi sirasinda belli hatalar yapilir. Bu hatalarin bulunup giderilmesi hata giderme alis masini olusturur. Visual Basic, programlarin yazilmasi {derlenmesi ve alistirilmasi) sirasinda 696
Immediate Window. Program kesildikten sonra; procedure iinde bir degiskenin ya da bir ifadenin seilerek degerinin ne olduguna bakilmak istenirse o zaman anlik izleme penceresi kullanilir. Watch Window.Watch Window ise projedeki ifadelerin izlenmesi iin kullanilir.
697
700
Parametrelerden biri iki farkli tipte deger alabiliyorsa bunu As Any olarak tanimlamaniz gerekir. Hangi parametrenin Any olarak tanimlanmasi gerektigine ancak dosyadaki bilgileri okuyarak anlayabilirsiniz. rnegin bir parametre hem string ierebiliyor ve hem de Null ierebiliyorsa bu parametre Any olarak tanimlanmalidir. Yaptiklari islere gre API'lerin bulunduklari dosyalar ise sunlardir:
DLL Advapi32.dll Comdlg32.dll Gdi32.dll Kernel32.dll Lz32.dll Mpr.dll Netapi32.dll Shell32.dll User32.dll DLL Version.dll Winmm.dll Winspool.drv Fonksiyonlari Sifre ve Kayit dosyasi islemleri gibi gelismis bir ok API'ler Diyalog pencereleri ile ilgili API'ler Grafik API'leri ekirdek Windows API'leri 32 bit sikistirma API'leri Multiple Provider Router Apileri 32-bit Network API'leri 32-bit Shell API'leri Kullanici arabirimi API'leri Fonksiyonlari Versiyon islemleri API'leri Multimedia API'leri Print spooler API'leri
701
Yukaridaki text dosyasinda bulunan tanimlari daha uygun bir formatta gsteren bir program da WINAPI dizini altinda bulunur. Bu dizindeki APILOAD.EXE programini alistirirsaniz text dosyasinin i indeki API, tip tani mi ve sabitleri dzenli bir yapida grebilirsiniz.
702
APILOAD.EXE dosyasi ile API Viewer programini alistirdigimizda yukaridaki gibi bos bir pencere gelir. File-Load Text File menleri ile WIN32API.TXT dosyasini bu programa ykleyin.
Programin st kisminda bulunan ComboBox araciligi ile hangi bilgilerin g sterilecegini belirleyebilirsiniz. Bu listede seenek bulunur. Constants: Sabitleri, Declares: API tanimlarini, Types: Tip tan imlarini listeler.
Programda, pencerenin orta kismindaki listeden bir ismi ift tikladiginizda ona ait tanim alttaki pencerede listelenir. Bu tanimi VB'ye 703
Windows ve Sistem hakkinda Bilgi Veren API ler Bos bellek miktarini grenmek
Declare Sub GlobalMemoryStatus Lib "kernel32" (IpBuffer As MEMORYSTATUS) Bu API Windows altinda kullanilabilecek bellek hakkinda bilgi verir. Fonksiyonun kullandigi MEMORYSTATUS asagidaki gibi tanimlanmistir. Bu iki tanimi bir mo dl i ine veya formun general declarations kismina yazmaniz gerekir. (Formda tanimlarsaniz Declare ve Type ifadelerinin basina Private yazmayi unutmayin.) Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type dwMemoryLoad: Bellegin kullanim yzdesini verir. dwTotalPhys: Toplam fiziksel bellek(RAM) miktarini byte olarak verir. dwAvailPhys: Fiziksel bellekteki bos miktari byte olarak verir. RNE K: rnek olarak bir Timer araciligi ile bellegin durumunu srekli gsterecek program yapalim. Option Explicit Private Declare Sub GlobalMemoryStatus Lib "kernel32" (IpBuffer As MEMORYSTATUS) Private Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long 704
RNEK: GetSystemlnfo Option Explicit Private Declare Sub GetSystemlnfo Lib "kernel32" (IpSystemlnfo As SYSTEM_INFO) Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long IpMinimumApplicationAddress As Long An y lpMaximumApplicationAddress As Long Any dwActiveProcessorMask As Long dwNumberOfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End Type Private Sub Form_Load() Show Cls Dim s As SYSTEM_INFO 706
Lib
"User32"
()
As
RNEK: GetKBCodePage
Option Explicit Private Declare Function GetKBCodePage Lib "User32" () As Integer Private Sub Form__Load () Show Print GetKBCodePage() End Sub
Modern Inkey$
Ilk iki kusak BASICten bildigimiz Inkey$ fonksiyonu olduka kullanisli bir fonksiyondu ve bir isi yaparken kullanicinin bir tusa basip basmadigini grenebiliyorduk. Mesela bir islemi, kullanici bir tusa basincaya kadar devam ettirmek iin VB de kullanabileceginiz bir komut yoktur. Bu is iin kodunuzu bir kontroln key veya mouse olaylarindan birine yazmaniz gerekecektir. Ancak GetlnputState A-Pl'sini Inkey fonksiyonundan daha gelismis bir fo nksiyon olarak kullanabiliriz. nk bu API klavye haricinde mouseun da tiklanip tiklanmadigini bildirir.
Declare Function GetlnputState Lib "User32" () As Integer Fonksiyondan geri dnen deger O degilse klavye basilmis veya mouse ile kliklenmistir. Ancak bu aktif olan program hangisi olursa olsun o olayi algilayacaktir. Ayrica klavyedeki btn tuslari algilar. Asagidaki rnekte kullanici bir tusa veya mouse'a basincaya kadar dng iinde kalinacaktir. Private Declare Function GetlnputState Lib "User32" () As Integer Private Sub Timer1_Timer() Dim i Print "basladi" While GetlnputState () = O Wend Print "ok" End Sub 709
nSize:
Fonksiyondan geri dnen deger Windows yolunun uzunlugudur. RNEK: GetWindowsDirectory Option Explicit Private Declare Function GetWindowsDirectory Lib "Kernel32" Alias "GetWindowsDirectoryA" (ByVal IpBuffer As String, ByVal nSize As Integer) As Integer Private Sub Form_Load() Show Dim WYol as String, uz WYol - String (145, Chr(32)) uz - GetWindowsDirectory(WYol, Len(WYol)) Print Left(WYol, uz) End Sub
710
Option Explicit Private Declare Function GetSystemMetrics Lib "user32" (ByVal nlndex As Long) As Long Sub Form_Load () List1.AddItem "O Ekranin yatay genisligi=" & GetSystemMetrics(0) List1.AddItem "l Ekranin dikey genisligi=" & GetSystemMetrics(1) List1.AddItem "2 Dikey kaydirma ubugundaki okun boyutu=" & GetSystemMetrics(2) List1.AddItem "3 Yatay kaydirma ubugundaki okun boyutu=" & GetSystemMetrics(3) List1.AddItem "4 Pencere basliginin yksekligi=" & GetSystemMetrics(4) List1.AddItem "5 Boyutlandirilamayan pencerelerin yatay kenarlik kalinligi=" & GetSystemMetrics(5) List1.AddItem "6 Boyutlandirilamayan pencerelerin dikey kenarlik kalinligi=" & GetSystemMetrics(6) List1.AddItem "7 Dialog kutularinin yatay kenarlik kalinligi=" & GetSystemMetrics(7) List1.AddItem "8 Dialog kutularinin dikey kenarlik kalinligi=" & GetSystemMetrics(8) List1.AddItem "9 Yatay kaydirma ubuklarindaki kaydirma kutusunun yksekligi^" & GetSystemMetrics(9) List1.AddItem "10 Yatay kaydirma ubuklarindaki kaydirma kutusunun genisligi=" & GetSystemMetrics(10) 712
717
Src Boyutu
Windows 95 OSR2 versiyonundan sonra geerli olan GetDiskFreeSpaceEx Api'si araciligi ile sistemdeki bir srcde bulunan toplam alan, bos alan ve bir ag sz konusu ise aktif kullanicinin kullanabilecegi bos alan grenilebilir. 719
RNEK: GetDiskFreeSpaceEx Option Explicit Option Explicit Private Type uzunsayi 720
WCmd: O verilerek en stteki formun handle numarasi, 2 verilerek bir sonraki formun handle numarasi grenilmek istendigi bildirilir. Fonksiyondan geri dnen deger O ise ya listede baska form kalmamistir yada hatali komut girilmistir. D nen deger O degilse bu deger istenen formun handle numarasidir. O halde biz bu API'yi kullanarak o anda alisan btn formlarin handle numara larini (hWnd) grenebiliriz. Ilk formun handle numarasini al Aktif_pencere_hwnd = GetWindow (Form1.hWnd, 0) While Aktif_pencere_hwnd <> O Sonrakinin handle numarasini al Aktif_pencere_hwnd = GetWindow (Aktif_pencere_hwnd, 2) deger O ise liste bitti. Wend
dnen
Byle bir yapiyla btn formlarin handle numaralarini grenmek mmkndr. Handle numarasini ne yapacagiz diye bir soru akliniza gelebilir. Daha nce de bahsettigimiz gibi Windows kontrolleri o kontrole verdigi handle numarasi ile tanir. Bir ok API de bu numara ile isleme gire r. Simdi bu numarayi kullanarak formun basligini bulacak ve degistirecek API'leri verelim.
Bu API'yi kullanarak Task Manager'in ( Grev Yneticisi'nin) daha gelismisini yapabilirsiniz. Formunuzun General-Declarations kismina yukaridaki API'nin tanimlarini yerlestirin. Ve form zerine bir liste kutusu yerlestirin.
Option Explicit
Private Declare Function GetWindowTextLength Lib "User32" Alias "GetWindowTextLengthA" (ByVal hWnd As Integer) As Integer Private Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal IpString As
724
Bu kodla o anda sistemde alisan btn formlarin basliklarini bir listeye yazdiril- maktadir. Listenin DblCIick olayina App.Activate List1.Text satirini yazarak ilgili formu aktif hale de getirebilirsiniz. Ancak her form aktif hale getirilemedigi (gizli formlar gibi) iin bundan nce bir hata yakalayici da kullanmaniz gerekir. On Local Error Resume Next App.Activate baslik
725
Private Sub List1_DblClick () On Local Error Resume Next AppActivate List1.Text SendKeys "% " 'Alt bosluk tusu ile kontrol kutusunu a SendKeys "{ENTER}" 'nceki boyut seenegi End Sub App.Activate ile aktif hale getirilen formun pencere seklinde bir degisiklik olmaz, yani form minimize ise aktif hale gelir ancak yine minimize konumundadir. Formu ekranda gstermek iin aktif hale getirilen uygulamaya Alt-Bosluk ve Enter tuslarini gndererek "nceki Boyut" seeneginin seilmesini ve formun ekranda gsterilme sini sagliyoruz. Grldg gibi App.Activate metoduyla bu isi yapmak olduka ilkel ve yavas. Tahmin ettiginiz gibi bu isi de yapacak bir API var. ShowWindow.
&H01: Formun koordinatlari degistirilmez. Yani x ve y parametreleri gz ardi edilir. &H02: Formun boyutlari degistirilmez. Yani cx ve ey para metreleri gz ardi edilir. &H80: Form gizlenir. &H40: Form gsterilir. &H10: Form aktif hale getirilmez. rnegin forml formunu en stte tutmak iin: SetWindowPos forml.hWnd, -l, O, O, 0,0, &hlO Or &h40 Or &hl Or &h2 En stte kalma zelligini kaldirmak iin de: SetWindowPos forml.hWnd, -2, O, O, O, O, &hlO Or &h40 Or 8ihl r &h2 Bir formu gizlemek iin: SetWindowPos Forml.hWnd, O, O, O, 100, 100, &H80 Or &H1 r 81H2 gstermek iin ise: SetWindowPos Forml.hWnd, O, O, O, 100, 100, &H40 Or &H1 Or &H2 729
Private Declare Function FlashWindow Lib "User32" (ByVal hWnd As Integer, ByVal blnvert As Integer) As Integer Sub Timer1_Timer() Call FlashWindow(Forml.hWnd, True) End Sub
Windowsu Kapatmak
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Windowsu kapatmak veya bilgisayari yeniden baslatmak iin bu API kullanilabilir. uFlags parametresi ile ne yapilmak istendigi bildirilir. Bu parametreye asagidaki degerlerden biri verilebilir. 0: Aktif kullaniciyi kapatir ve yeniden baslar. 1: Windowsu kapatir ve Bilgisayarinizi Kapatabilirsiniz ekrani ikar. 2: Bilgisayari yeniden baslatir. 3: 1 degeri gibidir. Farkli bilgisayarin gcnde keser. olarak bilgisayar destekliyorsa,
730
Yapmaniz gereken ncelikle CreateEllipticRgn, CreatePolyPolygonRgn, CreateRectRgn gibi bir API ile sekli olusturmak ve burdan elde edeceginiz seklin handle numarasini SetWindowRgn API'sinde kullanmaniz. Private Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (ByVal XI As Long, ByVal Yi As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long 731
732
Private Type POINTAPI x As Long y As Long End Type Private Sub Form_Load() Dim sekilHandle As Long Dim p(1 To 9) As POINTAPI Show ScaleMode = 3 p(l).x p(2).x p(3).x p(4).x p(5).x p(6).x 733 = = = = = = 100: 250: 350: 550: 550: 350: p(l).y p(2).y p(3).y p(4).y p(5).y p(6).y = = = = = = 100 0 0 100 200 300
734
Bir timer olayina yazacaginiz kodla formun seklini srekli degistirip animasyonlar da yaptirabilirsiniz.
Kontrol-System Mens
736
Eger formunuzun bir kontrol kutusu var ise bu kutuya yeni seenekler ekleyebilirsiniz. Bu is men ubugundaki menlere eleman eklemekten daha karisiktir. Windows kontrol menusunu (buna API'lerde System menusu de deniyor) men ubugundaki menlerden ayri olarak grr. Ve bu mendeki seeneklerin tanimlanmis islemleri vardir. Simdi verecegimiz API'lerle bu menye yeni elema nlar ekleyebileceginiz gibi var olan standart seeneklerin islevlerini de degistirebilirsiniz. Digerlerinde oldugu gibi system menusu zerinde de islem yapabilmek iin bu mennn handle numarasini grenmemiz gerekir.
738
Evet buraya kadar hi bir problem yok. Simdi programi alistirin ve kontrol penceresinin yukaridaki hale geldigini grn. Ekledigimiz menlerden birini seerseniz hi bir aksiyon gremeyeceksiniz. nk henz olay alt programini yazma dik. Yazalim. Ama nereye ? Bu seenekleri VB saglamadigi iin bu seeneklere ait olay alt programlarini da saglamayacakt ir. O halde biz s rekli olarak mennn seilip seilmedigini kontrol etmemiz gerekiyor. Do gal olarak bu kontrol yapmamizi saglayacak k omutlari da VB saglamiyor. Is yine basa (API'lere) d syor. nce Windows bir olay oldugunda nasil davranir onu anlamaya alisa lim.
739
Type MSG hwnd As Long message As Long wParam As Long lParam As Long time As Long pt As POINT End Type
hWnd: Mesajin ait oldugu pencerenin handle numarasi time: Mesajin alindigi zaman message: Alinan mesajin numarasi. Bu numaraya bakilarak mesajin hangi sinifa ait oldugu grenilebilir. Bu deger &H112 ise bu bir system menusu mesajidir. Yani system menusu ile ilgili bir is lem yapilmistir. Wparam,IParam: Message parametresi mesajin sinifi hakkinda bilgi verir ancak islem hakkinda bilgi vermez. Mesajla ilgili islem bu iki paramet re ile grenilir. Bu iki parametrenin alacagi degerin anlami tamamen Message parametresine baglidir. Mesaj bir system menusu mesaji ise (message = &H112 ise) Iparam parametresinin dsk seviyeli iki byte'i mousun x koor dinati, yksek 740
Declare Function DispatchMessage Lib "User32" Alias "DispatchMessageA" (IpMsg As MSG) As Long IpMsg: Gnderilecek mesaj. Bu mesaj GetMessage API'si ile aldigimiz mesaj olmalidir. Geri dnen deger mesaji isleyen prosedrn gnderdigi degerdir ve genellikle bir anlami yoktur. rnegimizi bu sekilde yeniden dzenleyelim. Dim a, msgl As MSG 741
Bylece mesaj bir system menusu mesaji ve bizim ekledigimiz seeneklere ait bir olaysa yazdigimiz kod alisiyor, degilse mesaji islenmek zere pencereye gnderiyoruz. Kodumuz bu hali ile sadece bir defa kontrol ediyor. Halbuki ekledigimiz seenegin ne zaman seilecegi kullaniciya baglidir. Dolayisi ile mesajlari srekli olarak kontrol etmemiz gerekir. Bu islem iin bir modl iindeki Startup zelligi ile be lirlenen bir alt programi kullanabiliriz. Bunun iin bir modl iine Main isimli bir altprogram olusturun ve Option/Project mensndeki Start Up Form seenegini Sub Main olarak degistirin. Bylece program buradan alismaya baslayacaktir. Burada bir While-Wend dngs iinde yukaridaki kontrol yapabiliriz. Ne zamana kadar, GetMessage API'sinden O yani quit mesaji gelinceye kadar. rnegimiz iin form zerine bir Common Dialog kontrol yerlestirin ve Project mensnden yeni bir modl ekleyin. Ve Project-Project Properties menleri ile ailan pencereden Startup Object olarak Sub Main sein. RNEK : System Menusu 'Bu kisim Modle iine yazilacak. Option Explicit Type POINT X As Integer y As Integer End Type Type MSG hwnd As Long message As Long wParam As Long IParam As Long time As Long pt As POINT End Type 742
Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" (IpMsg As MSG) As Long Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, IParam As Any) As Long Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal bRevert As Integer) As Integer Dim msgl As MSG
Sub main() Dim a, hnd, X Forml.Show hnd = GetSystemMenu(Forml.hwnd, False) X = AppendMenu(hnd, O, &H10, "Hakkinda") X = AppendMenu(hnd, O, &H20, "alistir") f bu &H10 ve &H20 sayilarini daha sonra kullanacagiz While GetMessage(msgl, Forml.hwnd, 0, 0) <> 0 If msgl.message ="&H112 Then 'WM_SYSCOMMAND ise menu Else a = DispatchMessage(msgl) 'Mesaji isle End If Wend End Sub Sub menu() * Dim a Select Case msgl.wParam-Case &H10: a = MsgBox("System Menusu rnegi. " + Chr(lO) + Chr(13) + "Cihan CAN Nisan 2003, Hendek/SAKARYA", 64, "Visual Basic") Case &H20: Forml.CommonDialogl.Action = l If Forml.CommonDialogl.filename <> "" Then a = Shell(Forml.CommonDialogl.filename, 1) End If Case &HF020: Forml.WindowState = 1 DoEvents a = DefWindowProc(Forml.hwnd, msgl.message, msgl.wParam, msgl.IParam) Case Else: a = DispatchMessage(msgl) 743
Geri dnen deger O ise handle numarasi verilen men veya pozisyonu verilen men yoktur. Aksi takdirde geri dnen deger mennn handle numarasidir. Bu API ile herhangi bir mennn alt menlerinin handle numarasini grenebiliriz. Bir men asagidaki durumlardan birinde olabilir.
744
1- Men ubugu zerindeki me nler (Menl, Men2) formunuzun alt menleridir. Dolayisiyla bu menlerin handle numarasini grenmek iin hMenu yerine men ubugunun handle numarasini vermeniz gerekir. Dim MnCHandlefMnHandle MnCHandle = GetMenu (Forml.hWnd) 'Menu ubugunun hwnd si Print "Menu ubugunun handle numarasi"; MnCHandle MnHandle = GetSubMenu (MnCHandle, 0) Print "Menul'in alt handle numarasi"; MnHandle MnHandle = GetSubMenu (MnCHandle, 1) Print "Menu2'nin handle numarasi"; MnHandle Bir mennn alt menleri yoksa onun handle numa rasi olmaz. O menye bulundugu yerin handle numarasi ile ulasilir. Yani Men2'nin handle numarasi onun alt menlerine ulasmak iin kullanilir. MenZ'ye ulasmak iin ise men ubugunun handle numarasi kullanilir. 2-Eger handle numarasi grenilecek menu, menu ubugu zerindeki mennn alt menusu ise (AltMenul, AltMenu2) hMenu yerine men ubugu zerindeki mennn (Menul) handle numarasini vermemiz gerekir. Dim MnCHandle, AMnHandle, MnHandle MnCHandle = GetMenu(Forml.hWnd) 'Menu ubugunun hwnd si Print "Menu ubugunun handle numarasi"; MnCHandle MrIHandle = GetSubMenu (MnCHandle, 0) Print "Menul'in handle numarasi"; MnHandle AMnHandle = GetSubMenu(MnHandle, 1) Print "AltMenu2'nin handle numarasi"; AMnHandle 3-Eger men bu mennn de bir alt menusu ise 2. Basamaktaki islem tekrar uygulanir. Grldg gibi bir altmennn handle numarasini grenmek iin ondan nceki menlerin handle numaralari grenilebilir. Burada menlerin alt men sayilarini bildigimiz iin nPos yerine gerekli degeri verebildik. 745
746
Wflags: Bu parametre O veya &H400 degerlerinden birini alarak nPosition parametresinin nasil kullanacagi belirlenir. HBitmapUnchecked: HBitmapChecked: Menu isaretsiz iken kullanilacak resim. Men isaretli iken kullanilacak resim. Bu degerler yerine O verilirse Windows orjinal resimleri kullanir.
Geri dnen deger O degilse islem basarilmistir. RNEK: rnek olarak menlere resim ekleyecek bir program yazalim. rnegimiz iin asagidaki formu ve menleri hazirlayin. Ayrica iki Image kontrol iine de uygun resimleri yerlestirin. "Yeni Resim" baslikli dgmeleri ve alt menleri birer dizi olarak tasarlayin.
747
RNEK : Menu API Option Explicit Private Declare Function SetMenuItemBitmaps Lib "User32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer, ByVal hBitmapUnchecked As Integer, ByVal hBitmapChecked As Integer) As Integer Private Declare Function GetMenu Lib "User32" (ByVal hWnd As Integer) As Integer Private Declare Function GetMenuCheckMarkDimensions Lib "User32" () As Long Private Declare Function GetMenuItemID Lib "User32" (ByVal hMenu As Integer, ByVal nPos As Integer) As Integer Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Integer) As Integer Private Declare Function SetMenu Lib "User32" (ByVal hWnd As Integer, ByVal hMenu As Integer) As Integer Private Declare Function CheckMenuItem Lib "User32" (ByVal hMenu As Integer, ByVal wIDCheckltem As Integer, ByVal wCheck As Integer) As Integer Private Declare Function GetSubMenu Lib "User32" (ByVal hMenu As Integer, ByVal nPos As Integer) As Integer Private Sub coramandl_click() Dim anamenuhandle, menuhandle Dim x, menusay, bas, son, i anamenuhandle = GetMenu(Forml.hWnd) menuhandle = GetSubMenu(anamenuhandle, 0) menusay = GetMenuItemCount(menuhandle) If Optionl Then bas = 0 son = menusay - 1 Else bas = Val(Textl) - 1 748
750
Bu adimlarda grldg gibi bir dosyayi amak iin gerekli API var. Bu APl'leri sirasi ile verelim.
Dosya silinecek Dosya bulunamazsa kutusu gsterilecek. Dosyanin bulunamadigina dair bir diyalog kutusu gsterilecek.
Geri dnen deger -1 ise hata olusmustur. Bu hatanin ne oldugu ise Ipof para metresinin nErrCode alt degiskeni ile grenilir. Aksi takdirde geri dnen deger ailan veya olusturulan dosyanin Handle numarasidir. Ve bu deger dosyayla ilgili islem yaparken kullanilir. Ofstruct yapisi olusturulan dosya hakkindaki bazi bilgileri ierir. Yapi bir modl ierisinde su sekilde tanimlanmalidir. Type OFSTRUCT cBytes As Integer fFixedDisk As Integer nErrCode As Long Reservedl As Long 752
nErrCode: LzOpenFile fonksiyonundan dnen deger -1 ise bu parametre ile olusan hata kodu grenilebilir. Bu degiskenin alabilecegi bazi degerler ve anlamlan syledir. NerrCode &H0002 &H0003 &H0004 &H0005 &H0008 &HOOOB &HOOOF &H0013 &H0015 &H0017 &H001B NerrCode &H0020 &H0036 &H0041 &H0050 Anlami Dosya bulunamadi Yol bulunamadi ok fazla sayida aik dosya var. (Bir ka dosyanin kapatilmasi veya Config.Sys dosyasindaki FILES sayisinin artirilmasi gerekir) Erisim engellendi (Readonly dosya olabilir) Bellek yetersiz Geersiz Format Geersiz src harfi Write protect hatasi Src hazir degil CRC hatasi Sector bulunamadi A n l a mi Dosya baska bir uygulama tarafindan violation ) kullaniliyor(Sharing Network okunamiyor Networka erisim engelleniyor Olusturulmak istenen dosya zaten var
Dim kaynakh Dim ofs As ofstruct Dosyayi a, dosya bulunamazsa hata mesaji ver 753
hfDest: Hedef dosyanin handle numarasi. Bu iki handle numaras i da LzOpenFile ile a ilan ve olusturulan dosyalarin handle numaralaridir. Bu API kaynak dosyayi aarak hedef dosyaya kopyalar. Fonksiyondan geri dnen deger dosyanin uzunlugudur. D nen deger O dan kk ise hata olusmustur. Ve olabilecek hata kodlarindan bazilari syledir. Hata kodu -1 -2 -3 -5 -8 Anlami Kaynak dosya handle numarasi yanlis Hedef dosya handle numarasi yanlis Kaynak dosya formati geerli degil Bellek yetersiz Kaynak dosyanin sikistirilmasi iin kullanilan algoritma desteklenmiyor
Dosyalari Kapatmak
Declare Sub LZClose Lib "\windows\system\lz32" (ByVal hfFile As Long) hfFile: Kapatilacak dosyanin handle numarasi
RNEK: Sikist irilmis bir dosyay i a mak iin gerekli olan bu API'yi verdikten sonra sikistirilmis bir dosyayi a mak iin bir rnek program yapalim.rnegimiz i-in formunuzun zerine bir CommonDialog ve bir komut dgmesi yerlestirin. 'RNEK : LzOpenFile, LzCopy, LzClose
Option Explicit
754
Private Type OFSTRUCT cBytes As Integer fFixedDisk As Integer nErrCode As Long Reservedl As Long Reserved2 As Long szPathName As String * 128 End Type Private Sub Command1_Click () Dim kaynakh, hedefh, size As Long Dim dl, d2 Dim ofs As OFSTRUCT, ofsh As OFSTRUCT CommonDialog1.filename = "*.??_" CommonDialog1.DialogTitle = "Sikistirilmis dosyayi sein" CommonDialog1.ShowOpen dl = CommonDialog1.filename CommonDialog1.filename = dl CommonDialog1.DialogTitle = "Yeni ismi girin" CommonDialog1.ShowSave d2 = CommonDialog1.filename 'Sikistirilmis dosyayi a kaynakh = LZOpenFile(dl, ofs, 0 Or &H2000) 1 Hedef dosyayi olustur hedefh - LzOpenFile(d2, ofsh, &H1000) 'Kaynak dosyayi hedef dosyaya a size = LZCopy(kaynakh, hedefh) Print "Toplam "; size; "byte" 'Dosyalari kapat LZClose (kaynakh) LZClose (hedefh) End Sub
756
WaveOutCaps yapisindaki dwFormats parametresinin alabilecegi degerler ve anlamlari sunla rdir. Bir src bunlardan bir ogunu ayni anda destekleyebile cegi iin bu degerler AND islemine tabi tutularak hangilerinin desteklendigi grenilebilir. &H1: &H2: &H4: &H8: &H10: &H20: &H40: &H80: &H100: &H200: &H400: &H800: 11.025 kHz, 11.025 kHz, 11.025 kHz, 11.025 kHz, 22.05 kHz, 22.05 kHz, 22.05 kHz, 22.05 kHz, 44.1 kHz, 44.1 kHz, 44.1 kHz, 44.1 kHz, Mono, 8-bit Stero , 8-bit Mono , 16-bit Stero , 16-bit Mono , 8-bit Stero , 8-bit Mono , 16-bit Stero , 8-bit Mono , 8-bit Stero , 8-bit Mono , 16-bit Stero , 16-bit wChannels parametresinin alabilecegi
WaveOutCaps yapisindaki dwSupport parametresinin alabilecegi degerler ve anlamlari sunlardir. Bir src bunlardan bir ogunu ayni anda destekleyebile cegi iin AND islemine tabi tutularak hangilerinin desteklendigi grenilebilir. 758
&
Bu rnekte ilk ses srcs hakkinda bilgi aldik. Sisteminizde birden fazla ses i isi iin kullanilabilecek birim olabilir. Genelde modemlerin de ses k ikis srcleri vardir. Bunlar hakkinda da bilgi almak iin asagidaki satirdaki O sayisini 1,2,3 seklinde degistirebilirsiniz. Call waveOutGetDevCaps(0, Ipc, Len(Ipc))
Burada dikkat edilmesi gereken bir konu var. Lpdwvolume parametresi gerekte 32 byte'lik isaretsiz bir uzun tamsayi tipidir. Ancak VB'de byle bir tip olmadigi iin bu parametre mecburen isaretli olarak tanimlanmistir. Yani bu sayinin 32. Biti isaret biti olarak kabul edilecekt ir. Burada yapmaniz gereken aritmetik islemler olacaktir. Hexadesimal sayilari kullanabilirsinz. negin iki hoparlr de maximum seviyeye getirmek iin 32 bitin tmnn 1 olmasi gerekir. Bununda decimal karsiligi 4294967295'dir. Bu sayiyi bir long tipine atayamazsiniz nk o tipin sinirlarini asar. Ancak &HFFFFFFFF atamasi yaparsaniz problem ikmaz. Atadiginiz degiskenin degerine bakarsaniz pozitif bir sayi atamis olmamiza ragmen sonucun negatif oldugunu grrsnz. nk atadigimiz sayinin en yksek seviyeli biti 1dir ve bu VB tarafindan negatiflik isareti olarak kabul edilecektir. Genelde problem &H7FFFFFFF sayisindan daha byk sayilarda ikar. nk bu degerden daha byk degerlerde 32. Bit 1dir ve bu degerden daha byk degerler negatif degermis gibi isleme girer. RNEK: rnek olarak iki Slider kontrol ile ses kartinin sol ve sag ses ayarlarini yapacak bir program yazalim. RNEK : WaveOutGetVolume, WaveOutsetVolume Option Explicit Const MAXPNAMELEN = 32 Private Type WAVEOUTCAPS wMid As Integer ' retici ID numarasi wpid As Integer ' rn ID numarasi vdriverversion As Long ' Src versiyonu 'szpname As String * MAKPNAMELEN ' rn ismi dwFormats As Long ' Destekledigi formatlar wchannels As Long ' Destekledigi kanal sayisi (stero,mono) dwSupport As Long ' Src tarafindan desteklenen zellikler End Type Private Declare Function waveOutGetNumDevs Lib "winmm" () As Long Private Declare Function waveOutGetDevCaps Lib "winmm" Alias "waveOutGetDevCapsA" (ByVal udeviceid As Long, IpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long 761
Kapasitesi grenilecek birimin numarasi. Bu parametrenin alacagi degerlerler 0 ile sistemde ykl ses srcs sayisinin bir eksigi arasindadir. WAVEINCAPS tipinden tanimlanmis degiskenin uzunlugu.
usize: 763
Global Const MAXPNAMELEN=32 'rn isminin maximum uzunlugu Type WAVEINCAPS wMid As Integer 'retici ID Numarasi wpid As Integer 'rn ID Numarasi vdriverversion As Long 'Src versiyonu szpname As String 'rn ismi dwFormats As Long 'Destekledigi formatalar wchannels As Long 'Destekledigi formatlar kanal sayisi(stero,mono) End Type Yapi iindeki wMid ve Wpid alt degiskenleri srcnn retici ve rn numarala ridir. Programin alismasi aisindan bir nemli degildir. Ancak zel bir ses kartinin kendine has bazi zelliklerini kullanacaksaniz bu degerlerle karti taniyabilirsiniz. Vdriverversion, szpname, dWFormats ve Wchannels parametrelerinin anlamlan WAVEOUTCAPS yapisinda oldugu gibidir. Fonksiyondan dnen degerlerin anlamlan syledir. 0: Hata yok 2: udeviceid parametresi ile verilen src yok. Sistemdeki src sayisindan daha byk bir numara vermissiniz. 6: Sistemde ykl src yok
764
Udeviceid :Kapasitesi grenilecek birimin numarasi. Bu parametrenin alacagi degerlerler 0 ilesistemde ykl ses srcs sayisinin br eksigi a-rasmdadir. Usize LpCaps :MIDIOUTCAPS tipinden tanimlanmis degiskenin uzunlugu. :Bu parametre MIDIOUTCAPS kullanici tanimli tipinden bir degiskendir. Ve ses kayit srcsnn kapasitesi bu tipte tanimlanmis degisken ile geri dner, MIDIOUTCAPS yapisini general-declarations kisminda syle tanimlamalisiniz.
Type MIDIOUTCAPS wMid As Integer 'retici ID numarasi wpid As Integer 'rn ID numarasi vdriverversion As Long 'Src versiyonu szpname As String * MAKPNAMELEN 'rn ismi wTechnology As Long 'Sesleri olusturmak iin kullanilan yntem wVoices As Integer 'Ses sayisi wNotes As Long 'Nota sayisi wChannelMask As Long 'Kullanilan kanallar dWSupport As Long 'Desteklenen fonksiyonlar End Type Yapi iindeki wMid, wpid, Vdriverversion ve szpname parametrelerinin anlamlari WAVEOUTCAPS yapisinda oldugu gibidir. WVoices Wnotes DWSupport :Desteklenen ses sayisi bu degiskende geri dner. :Desteklenen nota sayisi bu degiskende geri dner. :Bu degiskenden dnen degerin ilk bitinin anlami vardir. Bu bitler ve anlamlari syledir. 1:Ses ayari yapilabiliyor 2: Sol-sag ses ayari ayri ayri yapilabiliyor. 4: Patch-Caching destegi var. WTechnology :Bu degiskenden dnen degerin alacagi degerler ve anlamlari syledir. 1: MIDI dosyalari iin ikis portu var 3: Sesler kare dalga sentezi yntemiyle olusturuluyor. 4: Sesler FM sentezi ile olusturuluyor. 5: MIDI haritalayicisi yntemiyle olusturuluyor. 765
766
Global Const MAXPNAMELEN=32 Type AUXCAPS wMid As Integer 'retici ID numarasi wpid As Integer 'rn ID numarasi vdriverversion As Long ' Src versiyonu szpname As String * MAKPNAMELEN 'rn ismi wTechnology As Long dwSupport As Long 'Desteklenen fonksiyonlar End Type
Yapi iindeki wMid, wpid, Vdriverversion ve szpname parametrelerinin anlamlan WAVEOUTCAPS yapisinda oldugu gibidir.
Declare Function AuxGetVolume Lib "winmm" (ByVal udeviceid As Long, lpdwvolume As Long) As Long
Ses seviyesini degistirmek iin:
Declare Function AuxsetVolume Lib "winmm" (ByVal udeviceid As Long, ByVal dwVolume As Long) As Long
Bu iki API'ninde kullanimi ses ikis seviyesi iin verdigimiz WaveOutSetVolume ve WaveOutGetVolume API'leriyle aynidir.
Resim Isleme
VB'de resimleri gstermek iin Picture ve Image kontrolleri, paralara ayirarak islemek iinse PicClip nesnesi bulunmaktadir. rnegin bir resmin negatif grntsn olusturmak veya bir resim nesnesi zerinde birden fazla resmi ayni anda gstermek iin PaintPicture metodu vardir. Bu metod aslinda BitBlt Apisinin Vb'deki halidir.BitBlt Apisini kullanarak sadece kendi formunuzda degil, ekranin tamaminda islemler yapabilirsiniz.
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
Parametrelerin anlamlari ve alabileceklekri degerler ise syledir:
hSrcDc
hDestDc
numarasi
: Islenen resmin gsterilecegi kontroln hDC : Resmin gsterilecegi kontrol iindeki koordinatlar.
768
X, Y
dwRop
uygulanacak islem.
rnegin picture1 iindeki resim tiklaninca tersi renge girmesi iin Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_Load() Picture2.Picture = Picture1.Picture End Sub Private Sub Picture2_Click() Dim t Picture2.ScaleMode = 3 'Pixel t = BitBlt(Picture2.hDC, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, Picture2.hDC, 0, 0, &H550009) End Sub
&H330008: Kaynak resmin tersi alinarak hedefe kopyalanir. &H1100A6: Kaynak resim ile hedef resim OR islemine tabi
tutulur ve sonucun tersi (NOT islemi) alinarak hedefte gsterilir.
Sub Picture2_Click() Dim t Picture1.ScaleMode = 3 'Pixel t = BitBlt(Picture1.hDC, 0, 0, Picture1.ScaleWidth, _ Picture1.ScaleHeight, Picture2.hDC, 0, 0, &H8800C6)
769
&HCC0020: Kaynak resim hibir isleme tabi tutulmadan hedefte gsterilir. &H660046: Kaynak resim ile hedef resim XOR islemine tabi tutularak hedefte gsterilir.
Bu API kullanilirken kaynak resmin AutoRedraw zelligi True yapilmalidir. Aksi takdirde kaynak resim ekranda grlmedigi srece dogru sekil zerinde islem yapilmayacaktir. Bu API kullanilarak resimler zerinde yukaridaki islemler gereklestirilebilirken bir kontrol zerinde birden ok resim gstermek iinde kullanilabilir. RNEK: rnegin ICON gsteren bir programimiz olsun. Seilen dizindeki iconlari form zerinde gstersin. Bir form zerinde en az elli tane icon gsterilebilir. Form zerine 50 tane PictureBox yerlestirip iconlari bunlarin iinde gstermek sistem kaynaklari aisindan hide uygun bir yntem degildir. Bu noktada BitBlt API'sini kullanarak bir PictureBox kontrol iinde istedigimiz kadar resimi gsterebiliriz. rnegimiz iin asagidaki formu olusturun. Form zerine biri byke (Picture2) digeri daha kk (Picture1) iki PictureBox'da yerlestirin. Kk olan PictureBox'un (Picture1) AutoreDraw zelligimde True yapin.
Option Explicit Public Declare Function BitBlt Lib "gdi32" _ (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
770
772
StretchBlt
BitBlt API'si kaynak resimdeki resimin bir parasini zerinde islem yaparak hedef nesneye ayni boyutta kopyalayabilir. Resim zerinde byltme veya kltme yapamaz. VB'de Image nesnesinin Stretch zelligi ile resmi kontroln boyutlarina sigdirabiliyorduk. Ancak bu resim zerinde islem yapamayacagimiz iin zerinde klterek veya bylterek islem yapacagimiz resimler iin StretchBIt API'sini kullanabiliriz.
Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long nSrcWidth, nSrcHeight :Resim parasinin orjinal boyutlari
773
Diger parametreler BitBlt API'sinde oldugu gibidir. RNEK: Formun PrintForm zelligi ile formunuzu yazicidan ikardiginizda tam ekran bir formun yazicidan ok kk iktigini greceksiniz, bunun sebebi yazici znrlgnn ekran znrlgnden ok byk olmasidir. Tam ekran bir formu yazicidan tam sayfa olarak ikarmak iin bu API'den faydalanabiliriz. Formun zerindeki grntg PrintScreen tusu ile alabilirsiniz. Daha sonra bunu bir PictureBox iinde gstererek yaziciya gnderebiliriz. rnegimiz iin programiniza yeni bir form daha ekleyin. Ilk forma istediginiz seyleri koyduktan sonra bir komut dgmesi daha yerlestirin. Ve ikinci forma AutoReDraw zelligi true olan bir PicturBox yerlestirin.
RNEK : StretchBlt
'Birinci form Sub Form_Load() Form1.WindowState = 2 'maximize Form1.Print "Formu yazicidan ikarmak iin PrintScreen tusuna basiniz ve komut dgmesini tiklayiniz" End Sub Sub Command1_Click() Form2.Show End Sub 'Ikinci Form Private Declare Function StretchBlt Lib "GDI32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long Sub Form_Load() Show Dim X Printer.ScaleMode = 3 'Pixel Picture1.Picture = Clipboard.GetData() DoEvents Printer.Line (O, 0)-(0, 0) 'Yazdirma isleminin baslamasi iin X = StretchBlt(Printer.hdc, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, &HCC0020) Printer.EndDoc Unload Me End Sub
774
Ekran Yakalama
VB btn nesneler iin bir hDC numarasi sunmaz. VB'de Form, Common Dialog, PictureBox ve Printer nesneleri iin hDC zelligi ile bu numara grenilebilir. Ancak diger nesneler iin o nesnenin handle numarasi kullanilarak GetDC API'si ile hDC numarasi grenilebilir (hDC numarasi alinabilir demek daha dogru bir terim. Formun hDC zelliginde de anlattigimiz gibi bu numara srekli degisen bir numaradir), Bylece ListBox, TextBox, Label gibi nesnelerede resim ekleyebilirsiniz.
Fonksiyondan geri dnen deger kontrole verilen hDC numarasidir. Bu deger 0 ise islem basarilamamistir (Handle numarasi verilen kontrol mevcut olmayabilir). Bu fonksiyonla hDC numarasi alinip islendikten sonra diger uygulamalar tarafindan kullanilabilmesi iin ReleaseDC API'si ile serbest birakilmalidir.
Declare Function releasedc Lib "User32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
hWnd, hDC : Nesnenin handle ve hDC numaralari. Geri dnen deger 1 ise islem basarilmistir. RNEK: rnek olarak listbox'a resim ekleyecek bir program yapalim. rnegimiz iin asagidaki formu olusturun.
775
Option Explicit Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Sub Form_Load() Dim i For i = 1 To 15 List1.AddItem Space(5) & i Next End Sub Sub Command1_Click() Dim t, hd, i, w, h, w1, h1 Picture1.ScaleMode = 3 'pixel w = Picture1.ScaleWidth h = Picture1.ScaleHeight Form1.ScaleMode = 3 'pixel Form1.FontSize = List1.FontSize h1 = Form1.TextHeight("X") w1 = h1 * h / w For i = 0 To List1.ListCount - 1 hd = GetDC(List1.hwnd) t = StretchBlt(hd, 0, i * h1, w1, h1, Picture1.hdc, 0, 0, w, h, &HCC0020) 'srccopy t = ReleaseDC(List1.hwnd, hd) Next End Sub 776
Public Declare Function DrawIcon Lib "user32" Alias "DrawIcon" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Hdc :Ikonu izdireceginiz kontroln (form, picturebox vb) hdc numarasini. x ve y :Koordinatlarini (pixel olarak). Hlcon :izdirmek istediginiz iconun handle numarasini girin.
RNEK: VB6.EXE dosyasindaki ikonlari bir picturebox iinde gstermek iin asagidaki kodu kullanabiliriz.
Option Explicit Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
779
780
DIGER APILER
Listelere Yatay Kaydirma ubugu
Liste kutusundan tretilmis kontrollere (ListBox, FileListBox, DirectoryListBox) dikey kaydirma ubugu kendiliginden eklenir ancak bu kontrollere yatay kaydirma ubugu eklemek iin VB bir yntem saglamaz. SendMessage API'si ile ListBox'lara yatay scroll bar eklemek mmkndr. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long hWnd :Mesajin gnderilecegi kontroln handle numarasi
wMsg :Gnderilecek mesajin numarasi. ListBoxlar iin bu paramtrenin &H415 olmasi yatay scrollbar eklenecegini belirtir. wParam : Mesajla ilgili ilk parametre. Yatay kaydirma ubugu iin bu parametre kaydirma ubugunun uzunlugunu belirler. O verilirse yatay kaydirma ubugu varsa kaldirilir. IParam :Mesajla ilgili ikinci parametre.
RNEK: rnek iin form zerine bir ListBox koyun ve asagidaki kodu yazin. SendMessage Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 781
Listede Arama
Yine SendMessage apisi araciligiyla liste kutusundan bir metnin bulunmasi istenebilir. Ikinci parametreye LB_FINDSTRING degeri, son parametreye de aranmasi istenen metin girilirse geriye elemanin listedeki numarasi dner. RNEK: Kullanicinin girdigi bir elemani listede buldurup semek iin: Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const LB_FINDSTRING = &H18F Sub Command1_Click() Dim aranan aranan = InputBox("Aranacak eleman") List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(aranan)) End Sub RNEK: Kullanicinin bir text kutusuna yazarken o elemana en yakin elemani semesi iin: Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const LB_FINDSTRING = &H18F Private Sub Text1_Change() '1 yazarken seilmesini sagla List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text)) End Sub Sub Command1_Click() List1.AddItem = InputBox("Eklenecek eleman") End Sub
782
Fare Kapani
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long Farenin hareketlerini ClipCursor API'si ile bir pencere iine hapsedebilirsiniz. IpRect :Asagidaki RET yapisinda tanimlanmis degisken. Bu degiskenin alt degiskenleri ile farenin hareket edebilecegi pencerenin koordinatlari belirlenir, Type RECT left As Long top As Long right As Long bottom As Long End Type RNEK: rnek olarak fareyi formumuza kilitleyecek ve serbest birakacak bir program yapalim. rnegimiz iin iki tane komut dgmesini formunuzun zerine yerlestirin.
Option Explicit
Public Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long Private Type rect left As Long top As Long right As Long bottom As Long End Type
783
Fareyi Oynatma
SendKeys metodu ile klavyeyi taklit ederek bir programa tus gnderebileceginizi biliyorsunuz. SetCursorPos apisini kullanarak da fareyi hareket ettirebilirsiniz. Public Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long Buradaki x ve y parametreleri farenin gidecegi koordinatlari gsterir. Call SetCursorPos(1000, 500)
Dim ver ver = getDeviceCaps(Printer.hDC, 0) Print "Yazici versiyonu="; Print ((ver And &HFF00) / &H100) & "." & (ver And &HFF) 784
nlndex=2: Birimin ne oldugu hakkinda bilgi verir. Bu durumda geri dnen degerler ve anlamlari ise syledir. 0: 1: 2: 3: 4: 5: 6: Vektr Plotter Raster Display Raster printer Raster Camera Character Stream,PLP Metafile, VDM Display File
Dim tek, s tek = getDeviceCaps(Printer.hDC, 2) Select Case tek Case 0: s = "Vektr Plotter" Case l: s = "Raster Display" Case 2: s = "Raster printer" Case 3: s = "Raster Camera" Case 4: s = "Character Stream,PLP" Case 5: s = "Metafile, VDM" Case 6: s = "Display File" End Select Print s nIndex = 4 nIndex = 6 :Yatay boyut (mm) :Dikey boyut (mm)
Print "Yatay:"; getDeviceCaps(Printer.hDC, 4); " mm" Print "Dikey:"; getDeviceCaps(Printer.hDC, 6); " mm" nIndex = 8 :Yatay znrlk (pixel)
nIndex = 10 :Dikey znrlk (pixel) Print getDeviceCaps(Printer.hDC, 8) & "x" & getDeviceCaps(Printer.hDC, 10) & " piksel" nIndex = 12 :Her pixel iin kullanilan bit sayisi nIndex = 14 :Renk yzeyi sayisi Print " Renk Sayisi:"; getDeviceCaps(Printer.hDC, 14); getDeviceCaps(Printer.hDC, 12) nlndex = 22 :Donanimin destekledigi font sayisi Print "Font Sayisi:"; getDeviceCaps(Printer.hDC, 22) RNEK: Yazici ve ekran hakkinda bilgi verecek bir program yazalim. 785
Fonksiyondan geri dnen deger okunan karekter sayisini verir. RNEK: Win.ini dosyasinin [Windows] kismindaki "Device="satiri ile geen yazicinin ismini grenelim. Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Sub Form_Load() Dim X As String, t As Integer, s X = String(255, 0) t = GetPrivateProfileString("windows", "device", "", X, Len(X), "win.ini") If t = 0 Then s = "Bilinmiyor" Else s = Left(X, t) End If MsgBox "YAZICI:" & s End Sub
Registry islemleri
787
Bir basligi ift tikladiginizda ise ona ait alt basliklar (anahtarlar) ailacaktir. Alt anahtarlar hiyerarsik bir yapidadir ve klasr yapisini andirir.
Bu alt basliklarin altinda ise bazi anahtarlar ve bu anahtarlarin degerleri bulunur. Setiginiz alt baslik altindaki bu anahtarin degerini yukaridaki pencerenin sag tarafinda grebilirsiniz. Iste bu degerleri okuyabilmek iin bazi API'ler bulunur.
788
IpSubKey parametresine ailacak alt anahtarin yolu verilir. rnegin "System\CurrentControlSet\Services\RemoteAccess" phkResult parametresi ile ailan anahtara ait handle numarasi geri dner. Bu handle kullanilarak RegQueryValueEx araciligi ile istenen anahtarin degeri okunur ve islem bittikten sonra yine bu handle numarasi kullanilarak RegCloseKey ile alt basliklar kapatilir. Fonksiyondan geriye dnen deger 0 ise islem basarilmistir. Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long hKey parametresine RegOpenKey ile ailan alt basligin handle numarasi verilir. Bu numara RegOpenKey apisinin son parametresi ile belirlenen degiskenle geri dner. IpValuename parametresine degeri grenilecek anahtarin ismi verir. IpReserved parametresi adindan da anlasilacagi gibi ilerisi iin ayrilmis bir parametredir herhangi bir anlami yoktur ve degeri 0 olmadilir. IpType parametresine, okunacak anahtarin hangi trde bilgi ierdigini belirleyen asagidaki degerlerden biri verilir. REG_BINARY REG_DWORD REG_SZ 'string
IpData parametresi ile istenen anahtarin degeri dner. IpcbData parametresi ise dnen degerin uzunlugunu verir. 789
RNEK: HKEY_LOCAL_MACHINE ana basligi altindaki System\CurrentControlSet \Services\RemoteAccess alt basliginda bulunan Remote Connection anahtarinin degeri bilgisayarin internete bagli olup olmadigini bildirir. Eger bu anahtarin degeri O degilse internet baglantisi aktif demektir. Yukaridaki apileri kullanarak bu degeri registry'den okuyabiliriz. Option Explicit Private Const HKEY_LOCAL_MACHINE = &H80000002 Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Private Sub Form_Load() Dim hKey As Long, IpData As Long, nSizeData As Long Dim alt, anahtar alt = "System\CurrentControlSet\Services\RemoteAccess" anahtar = "Remote Connection" 790
Egik Yazma
CreateFontindirect apisini kullanarak belli bir aiyla yazi yazdirabilirsiniz. RNEK: 270 derecelik bir aiyla yukaridan asagiya yazdirma: Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Const LF_FACESIZE = 32 Private Type LOGFONT IfHeight As Long lfWidth As Long IfEscapement As Long IfOrientation As Long lfWeight As Long Ifltalic As Byte IfUnderline As Byte IfStrikeOut As Byte IfCharSet As Byte IfOutPrecision As Byte 791
RNEK: 10'ar derece araliklarla yazdirilmis 360 derecelik bir yazi Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long Private Const LF_FACESIZE = 32 Private Type LOGFONT IfHeight As Long lfWidth As Long IfEscapement As Long IfOrientation As Long lfWeight As Long Ifltalic As Byte 792
793
796
797
Siz de yazacaginiz programlari buraya yerlestirmek isteyebilirsiniz. Bu islem iin Shell_NotifyIcon APIsi kullanilir. Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
dwMessage
Bu parametreye verilecek asagidaki degerlerden biriyle islemin tr belirlenir. 0:Uygulama System Tray'a yerlestirilirken bu parametreye 0 degeri verilir. 1:System Tray'a yerlesmis uygulama zerinde bazi degisiklikler yaptiginizda bu degisikliklerin etkili olabilmesi iin API bu degerle yeniden agrilir. 2:System Tray'a yerlesmis bir uygulama kaldirilmak istendiginde bu parametreye 1 verilir. Ayni zamanda programiniz sona ererken de Shell_NotifyIcon API'sini 1 degeriyle tekrar agirarak System Tray'dan kaldirildigini bildirmeniz gerekir.
InData
NOTIFYICONDATA yapisindan tanimlanmis bu tiple, uygulamaya ait bazi zellikler belirlenir. Asagidaki NOTIFYICONDATA yapisini formunuzda tanimlamaniz ve bu tipten bir degisken kullanmaniz gerekir. Type NOTIFYICONDATA cbSize As Long hwnd As Long uID As Long uFlags As Long uCallbackMessage As Long hlcon As Long szTip As String * 64 End Type Bu tipte bulunan parametrelerin anlamlari sunlardir: 798
HIcon
szTip
v IpData parametresine yukaridaki tipten bir degisken tanimlanarak gerekli -zellikler ayarlandiktan sonra dwMessage parametresine 0 verilerek Shell_NotifiyIcon API'si agrilir. Bylece uygulama System Tray'a yerlesmis olur. Option Explicit Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Private Type NOTIFYICONDATA cbSize As Long hwnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type Dim tray As NOTIFYICONDATA 'Global Degisken Private Sub Form_Load() tray.cbSize = Len(tray) tray.hwnd = Form1.hwnd tray.uID = vbNull tray.szTip = "Bizim Uygulama" + Chr(0) tray.uCallbackMessage = &H200 tray.uFlags = 7 tray.hIcon = Form1.Icon 'system traya ekle Shell_NotifyIcon 0, tray Hide 'formu gizle End Sub 799
MouseMove olayina yazilacak kodla X parametresinin yukaridaki degerleri kontrol edilir ve buna uygun islem yaptirilir. Ama ncelikle Formun ScaleMode zelligine 3 degeri verilerek Pixel modu aktif hale getirilmektedir. nk normalde X parametresi koordinat ifade eden bir parametredir ve VB ile Windows'un koordinat birimleri farklidir. Pixel modu aktif hale getirilerek her iki birim esitlenmelidir. Private Sub Form_Load() '............. ScaleMode = 3 'Pixel End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case X Case &H202 'Sol tusla tiklandiginda yapilacak islem Case &H203 'ift tiklandiginda yapilacak islem Case &H205 800
802
Ana mennn ismini MnMenu olarak belirleyin ve Visible zelligini kaldirin. Bylece bu men formda gzkmeyecektir. Ayrica Uygulama mensnn ismini MnUygulama olarak verin, Visible zelligini kaldirin ve Index zelligine 0 verin. Bylece bu meny dizi olarak tanimlamis olucagiz. Dizi olarak tanimladigimiz bu menden, program alisirken yenilerini Load komutu ile ykleyip, belirlenen her bir uygulama iin bi men olusturacagiz. RNEK: System Tray Uygulama si Option Explicit Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, IpData As NOTIFYICONDATA) As Long Private Type NOTIFYICONDATA cbSize As Long hwnd As Long uID As Long uFlags As Long uCallbackMessage As Long hicon As Long szTip As String * 64 End Type Dim tray As NOTIFYICONDATA Private Sub Command1_Click() On Local Error GoTo iptal 803
System Tray'a yerlesmis simgeyi ift tiklarsaniz veya sag fare tusu ile tiklayip ailan menden Ayarlar komutunu seerseniz formumuz ekranda grlecek ve menye ekleyeceginiz uygulamalarinizi listeye ekleyebilmenizi
saglayacaktir. Listeye eklediginiz uygulamalar menye eklenecektir. System Tray'a yerlesmis simgeyi sag fare tusu ile tiklarsaniz setiginiz uygulamalarin listelendigi men ailacaktir.
Listeden
setiginiz
bir
uygulama
alistirilacaktir.
806
17-NEDEN IIS?
IIS'ten bahsetmeden nce kisaca PWS(Personel Web Server) ile ilgili birka noktaya deginme geregi hissediyorum: 1. PWS, hepimizin bildigi gibi Windows 98 zerinde alismaktadir. Windows ME ile beraber PWS gelmemektedir. Birka makina zerinde yapilmis olan denemelerde Windows 98 CD'si ierisinde yeralan PWS'yi Windows ME zerinde kuruldugunda hibir problemle karsilasilmiyor.Ancak dzgn alistiramayan ve problem yasayanlarin varligini biliniyor. 2. Belki de ogumuz ilk ASP kodlarini PWS zerinde yazmistir. Ancak Windows 98 ve PWS bize gerek server ortamini saglamadiklari iin ogu zaman yazdigimiz kodlari servera gnderdigimiz zaman alismadigini, hata verdigini grmszdr. 3. Windows 98 bir server isletim sistemi olmadigi iin, kullandigimiz bilesenler (component) ile ilgili hatalar ve problemler olusabilmektedir. 4. Eger ASP ile sadece hobi olarak ugrasmiyorsaniz, alistiginiz ortamlarda Windows 2000 Server ile mesgul olacaksiniz demektir. Bu nedenle Windows 2000 Server zerinde alismak yararli olacaktir. 5. Server zerinde alisacak olan ASP kodlarinin tm gelistirme asamasinda benzer bir ortamda alismak size olusabilecek hatalari daha kolay grme, aninda zmler retebilme gibi avantajlar saglayacaktir. Yazdiginiz kodun IIS zerinde nasil bir tepki verecegini programlamayi tam olarak bitirmeden grme sansina sahip olabileceksiniz. Yukarida yazilan sebeplerden dolayi tm arkadaslara kodlarini, eger imkanlari msaitse Windows 2000 Server zerinde veya en azindan Windows 2000 Professional Edition zerine IIS kurarak (kurulum sirasinda default olarak yklenmez) yazmalarini tavsiye ediyorum.
807
IIS linki zerine ift tiklayarak veya "Details" linkine basarak IIS ierisinde yer alan bilesenleri (server ve servisler) grebilir, ihtiyaciniz olanlari isaretleyerek kurulmalarini saglayabilirsiniz. Sira ile bunlardan bahsedelim:
808
Common Files : IIS'in alisabilmesi iin gerekli dosyalar. Bu dosyalarin mutlaka kurulmasi gerekmektedir. Documentation : IIS, Web ve FTP serverlar zerinden publish (yayin) ile ilgili yardimlari ve rnekleri ieren dkmanlar. File Transfer Protocol (FTP) Server : Dosya upload ve download is lemleri iin gerekli olan servis. Frontpage 2000 Server Extensions : Frontpage ve Visual Interdev araciligi ile web siteleriniz zerinde islem yapabilmenizi saglayacak olan ara. Internet Information Services Snap-In : IIS iin gerekli olan ynetim arabirimi. Internet Services Manager (HTML) : Browser araciligi ile IIS'i ve web sitelerinizi ynetmenizi saglar. NNTP Service : Ailimi Network News Transfer Protocol olan NNTP servisi vasitasiyla server zerinden haber gruplari yayinlayabilirsiniz. SMTP Service : Ailimi Simple Mail Transfer Protocol olan SMTP servisi araciligiyla server zerinden mail gnderebilirsiniz. Bu servis ile sadece mail gnderebilirsiniz, mail alabilmek iin bir mail server'a ihtiyaciniz vardir. 809
IIS'E ERISIM
Web-FTP sitesi tanimlamak ve ayarlarini yapmak iin IIS'e birka farkli yoldan ulasabilirsiniz : 1. Start/Settings/Control Panel/Administrative Tools/Internet Services Manager yolunu izleyerek, 2. Start/Programs/Administrative Tools/Internet Services Manager yolunu kullanarak,
810
3. "My Computer"e sag tiklayip, " Manage" seenegine basarak ailacak olan "Computer Management" penceresinde "Services and Applications " blmnden IIS'e ulasabilirsiniz.
Genelde nc yolu kullanmayi tercih ediyorum, nk "Computer Management " penceresi vasitasiyla IIS ile ugrasirken erismem gerebilecek hemen tm aralara ulasabiliyorum (Event Viewer, Local Users and Groups, Services, DNS servisi gibi).
811
Bu penceredeki seenekler yardimiyla yapilacak olan ayarlar, o makina zerinde yer alan tm siteler iin geerli olacaktir. Internet Information Services : Internet Information Services blmnde Web ve FTP siteleri iin genel ayarlar, bant genisligi sinirlamasi ve dosya tipleri ile ilgili islemler gereklestirilebilir.
812
813
General : Performance: Web sitesinde yer alacak sayfa sayisini belirtilerek veya zel ayarlar yapilarak en iyi performans alinmasi saglanabilir. Client scripting : Frontpage Server Extensions tarafindan otomatik olusturulacak istemc i tarafli scriptler iin kullanilacak olan dil JavaScript veya VBScript olarak belirlenir.
814
815
Internet Information Services altinda Default Web Site, Administration Web Site ve yaptiginiz kuruluma gre Default FTP Site, Default SMTP Virtual Server, Default NNTP Virtual Server servislerini bulabilirsiniz. Default Web Site, IIS'in kurulumu esnasinda olusturulur. Ana dizin olarak "inetpub/wwwroot" klasr seilidir. Eger bu siteyi hibir ayarini degistirmeden korur ve tm web sitelerini "inetpub/wwwroot" klasr altina yerlestirirseniz http://IP_Adresi/klasr_adi seklinde ulasabilirsiniz. Default Web Site, otomatik olusturulmasina ragmen Microsoft tarafindan kullanilmasi pek tavsiye edilmemektedir. Administration Web Site'da yine IIS kurulumu esnasinda olusturulur. IIS ve olusturacaginiz tm web ve FTP sitelerinin ayarlarini makinanin basinda olmaksizin internet zerinden yapabilmenizi saglar. http://ip_adresi:port_numarasi/ seklinde ulasabilirsiniz. Her server veya IIS kurulumunda Administration Web Site iin port degismektedir. Port numarasini sag tiklayarak ailan menden "Properties" e basildiginda 816
Default SMTP Virtual Server ile serverdan herhangi bir mail server kurmaya gerek kalmadan mail gnderebilirsiniz. Bu servis ile SMTP araciligiyla mail gnderebilirsiniz, mail alamazsiniz. Default NNTP Virtual Server , server zerinden newsgroup hizmeti vermenizi saglar.
817
Ailacak olan " Welcome to the Web Site Creation Wizard" isimli sayfada "Next" tusuna basiyoruz. "Web Site Description" sayfasinda olusturacagimiz web sitesi iin bir aiklama giriyoruz. rnek : "Test Sitesi". Bu aiklama IIS'te grnecektir (Default Web Site gibi). Tekrar "Next" tusuna basiyoruz. "IP Address and Port Settings" sayfasinda web sitemiz iin IP, port ve header bilgilerini giriyoruz.
818
Enter the IP address to use for this Web site : Olusturdugumuz web sitesine ulasilabilecek olan IP adresini burada tanimliyoruz. Bu IP adresi, domainin DNS kayitlarinda yer alan IP adresi ile ayni olmalidir. TCP port this web site should use : Olusturdugumuz siteye hangi porttan ulasilacagini burada belirliyoruz. Varsayilan olarak bu deger 80 'dir. Normalde bu port degistirilmez. Host Header for this site : Olusturdugumuz siteye ulasilmasi iin gerekli olan bilgiyi buraya yaziyoruz. Bu genelde www.siteadi.com seklindedir. Eger www'den farkli bir header kullanmak istiyorsaniz ncelikle bunu DNS kayitlarina geirmeniz gerekir. Daha sonra da bu kisma yazabilirsiniz. r : test.siteadi.com Tekrar "Next" tusuna basiyoruz. "Web Site Home Directory " sayfasinda sitemizin yer aldigi klasrn harddiskteki tam adresini ister elimizle giriyoruz ister "Browse" tusu ile yerini buluyoruz. Adres kutusunun altinda yer alan "Allow anonymous access to this Web site" kutusu varsayilan olarak isaretlidir. Bylece internet zerinden herkes web sitenize ulasabilir. Tekrar "Next" tusuna basiyoruz. "Web Site Access Permissions" sayfasinda web sitesi zerinde nelerin alisabilecegini ve ziyaretilerin web sitesi zerinde yapabileceklerini belirliyoruz. 819
Read : Varsayilan olarak isaretlidir. Web sitesinde yeralan tm sayfalarin grntlenmesi iin gereklidir. Run scripts (such asp ASP) : Varsayilan olarak isaretlidir. Web sitesinde yer alan ASP sayfalarinin alisabilmesi iin gereklidir. Execute (such as ISAPI applications or CGI) : Olusturdugumuz web sitesinde CGI ve ISAPI uygulamalarinin alismasi iin bu kutuyu isaretliyoruz. Write : Olusturdugumuz web sitesinde ziyaretilere dosya yazma hakki vermek iin bu kutuyu isaretliyoruz. Dikkat : Normalde byle bir izin verilmez!. Browse : Olusturdugumuz sitenin klasrlerinde ziyaretilerin dolasabilmesini saglamak iin bu kutuyu isaretliyoruz. Bylece ziyaretiler sitede yer alan tm sayfalari ve resim gibi nesneleri grebilirler. Dikkat : Normalde byle bir izin verilmez!. Tekrar "Next" tusuna basarak sitenin olusturulma asamasindaki ayarlari bitiriyoruz. Son sayfada "Finish" butonuna tiklayarak basariyla web sitemizi olusturmayi tamamliyoruz.
820
Web Site Identification Description : Web sitesini olustururken verdigimiz ve IIS Manager'da grnen isim. IP Address : Web sitesine ulasilabilecek IP adresi burada tanimlanir. Makina zerinde birden fazla ve IP adreslerine sahip site tutulacak ise bunlara ait IP'ler tanimlandiktan sonra bu blmden ilgili IP adresi seilir. TCP Port : Web sitesine ulasilabilecek port numarasi. Varsayilan olarak 80'dir. Genelde bu port numarasi degistirilmez. Ancak zel durumlarda, zel 821
Performance tuning Gnlk beklenen hit sayisina gre web sitesinin performansini ayarlamak iin kullanilir. Beklenen hit sayisinin biraz zerinde ayarlanarak daha hizli bir sekilde siteye ulasilmasi saglanabilir. Ancak gnlk ziyareti sayisinin ok zerinde ayarlanmasi gereksiz bir sekilde server'in memory(hafiza)'sinin dolmasina ve serverin performansinin dsmesine neden olmaktadir. Enable bandwidth throttling Web sitesinin kullanacagi bant genisligini sinirlamak iin kullanilir. Saniyede Kilobyte cinsinden ne kadar bant genisligi kullanabilecegi belirlenir. Bu limit, eger genel olarak tanimlanmis limitin zerinde ise genel olan limit geerli olacaktir. Enable process throttling Web sitesinin maksimum CPU kullanimina sinirlama getirmek iin kullanilir. Birden ok web sitesinin tutuldugu serverlarda dzgn bir alismanin saglanmasi iin gerekli olabilir. Bylece hatali alisan bir web 823
824
Home Directory Bu blmde web sitesinine ait dosyalarin yer aldigi klasr bilgileri ve uygulama ayarlari ile ilgili blmler yer almaktadir.
825
When connecting to this source, the connect should come from Bu kisimda web sitesinin dosyalarinin nerede yer aldigi belirlenir. " A directory located on this computer" varsayilan olarak seilidir ve web sitesi taniminin yapildigi makinada varolan dosyalarin alistirilmasini saglar. "A share located on another computer" seenegi ile ayni network zerinde bulunan baska bir makinada yeralan dosyalarin tanimlanan web sitesinde alistirilmasi saglanir. "A redirecton to a URL" seenegi yardimiyla da web sitesi baska bir web sitesine ynlendirilebilir.
Local Path Bu seenek "A directory located on this computer" seenegi isaretli oldugunda grntlenir. Web sitesine ait olan dosyalarin yeraldigi klasr seilerek web sitesinin alismasi saglanir.
826
827
828
Applicaton Protection Web sitelerinin yaptigi islemlerin nasil gereklestirilecegi bu blmde belirlenir. Low(IIS process) isaretlendiginde tm islemler ayni sre ierisinde alistirilir. Medium(Pooled) seenegi isaretlendiginde islemler application bazinda ayri olarak yrtlr. High(Isolated) seenegi isaretlendiginde ilgili web sitesinin islemleri tamamen ayri olarak yrtlr. Configuration tusuna basildiginda Application Configuration isimli pencere grntlenir.
App Mappings Cache ISAPI applications Bu seenek isaretlenerek alistirilan ISAPI filtrelerinin cache'lenmesi ve daha sonraki kullanimlarda daha hizli islem yapilmasi saglanir.
829
Enable session state Varsayilan olarak isaretlidir. Web sitesinde session ile ilgili islemlerin yapilabilmesini saglar.
830
Enable buffering Varsayilan olarak isaretlidir. Bu seenek ASP sayfalarin isletilmesiyle ikan sonularin tamponlanmasini saglar. Seenek isaretlendiginde ASP sayfalari browser'a gnderilmeden nce tamponlanir. Bylece ayni istek tekrarlandiginda daha hizli yanit verilebilir. Ancak zaman zaman sayfalarin her istenildiginde tekrar retilmesi gerekebilir. Bu durumda bu seenekdeki isaret kaldirilir. Enable parent paths Bu seenek isaretlenerek ASP dosyalari ierisinde greceli yollarin kullanilmasi saglanabilir. Bulunulan klasrden st klasrdeki bir dosyaya " .." seklinde ulasilabilmesi saglanir. r : seklindeki bir yazim ile images klasrnde yer alan resim.gif dosyasi gsterilebilir. Varsayilan olarak isaretlidir. Default ASP language Web sitesinde ASP scriptlerinin yaziminda kullanilacak olan script dilinin belirlenmesi iin kullanilir. Varsayilan olarak VBScript tanimlidir. Genel olarak dnya apinda kabul grmstr. Farkli bir dil kullanilacaksa bu kisimdan degistirilebilir. Eger herhangi bir sayfada, sadece o sayfa iin baska bir dil kullanilacaksa sayfanin ilk satirinda yazilmalidir. ASP Script timeout ASP kodlarinin alistirilacagi zaman dilimini saniye cinsinden gsterir. Varsayilan olarak 90 saniyedir. Bu sre sonucunda ASP kodlarinin alismasi sonlanmis olmalidir. Eger sonlanmamis ise kodlarin alismasi durdurulur, browser'da ilgili hata mesaji gsterilir ve Event Log'a kayit eklenir. Sadece belirli bir sayfa iin farkli bir timeout sresine ihtiya varsa bu sayfa ierisinde Script.Timeout = xx seklinde belirtilebilir.
831
Debugging Flags Enable ASP server-side script debugging Bu seenek isaretlendiginde ASP sayfalarinin alismasi sirasinda Microsoft Script Debugger'da devreye girecektir. Microsoft Script Debugger kullanilarak kodlarda olusan hatalar incelenebilir. Ancak bu durumda ASP kodlari single-threaded (her bir is sirayla yapilir) olarak alisir ve performans kaybi yasanir. Bu sebeple bu islem normal uygulamalarda tavsiye edilmez. Uygulama gelistirme sirasinda kullanilabilir. Enable ASP client-side script debugging Bu seenek ASP 3.0 versiyonunda hibir etki yapmamaktadir ve daha sonraki srmler iin eklenmistir. 832
833
Enable Default Document Varsayilan olarak Default.asp ve Default.htm yeralmaktadir. Istege gre farkli dosyalar eklenebilir. Enable Document Footer Bu seenek isaretlenerek Web sitesinde yeralan herhangi bir dosya alistirildiginda sayfanin altinda HTML formatli bir mesajin grntlenmesi saglanabilir. sayfalari
834
Bu blmde web sitesi ve klasrlerine erisim ve gvenli erisim sertifikalari ile ilgili ayarlar belirlenebilir.
Anonymous access and authentication control Bu kis imda erisimleri iin yetkilendirme (authentication) ve anonim baglantilar (anonymous access) zellikleri ayarlanabilir. Bylece zel blmlere herkesin erismesi engellenebilir, erisebilecek kisiler tanimlanabilir. Herkesin web sitesine erisebilmesi isteniyorsa bir ayar yapma geregi bulunmamaktadir. Ancak belirli blmlere tanimlanmis kisilerin erismesi 835
Bu pencerede de grldg gibi web sitesine anonim ve yetkilendirilmis olarak 2 farkli erisim vardir. Yetkilendirilmis erisim genelde sadece belirli blmlerde kullanilir. Anonymous Access Varsayilan olarak bu seenek isaretlidir. Bu sekilde web zerinden sitesine gelen ziyaretilerin sayfalarinizi grntlemesi saglanir. Ziyaretiler, site ziyaretleri sirasinda IUSR_makinadi isimli kullanici ile baglanmis olarak grnrler. Bu kullanici IIS ile beraber sistemde olusturulmaktadir. Edit tusuna basildiginda Anonymous User Account isimli pencere grntlenir.
836
Bu ekranda resimde de grldg gibi anonim baglantilar iin IUSR_makinaadi kullanicisi seili durumdadir. Allow IIS to control password kutusu da varsayilan olarak isaretlidir. Bu ayarda bir degisiklik gereklestirilmedigi srece anonim baglantilar problemsiz olarak gereklesecektir. Anonim baglantilarin gereklestirildigi kullaninin adi degismis ise Username kismina yazilarak veya Browse tusu yardimiyla kullanici bulunarak degisiklik aktif hale getirilebilir. Aksi takdirde site dzgn alismayacaktir. Authenticated Access Genellikle yetkiye sahip belirli kisilerin ulasmasi istenilen web siteleri veya web sitesi blmleri iin kullanilir. Burada bahsedilen yetkilendirme NTFS dosya sistemi vasitasiyla saglanilan web sitesi, klasr veya dosya bazinda yetkilendirmedir. Yetkilendirme iin kullanilan kullanicilar Windows kullanicilaridir. Dolayisiyla yetkilendirilmis erisim iin ncelikle sistemde bu kullanicilarin tanimlanmasi ve ilgili klasrlerde gerekli haklarinin verilmis olmasi gerekmektedir.
Not : Kullanicilarin belirtilen alanlara web zerinden yetkilendirilmis erisimle ulasabilmeleri iin, ilgili makinaya logon yetkilerinin olmasi ve kullanici hesabinin aktif olmasi gerekmektedir. Bu yetkilendirme tr aktif edildiginde ziyaretiler web sitesine erismek istediklerinde kullanici adi ve sifre girilmesini isteyen bir pencere grntlenir. Istenilen bilgiler dogru girildiginde sayfa grntlenir. Aksi takdirde hata mesaji ieren sayfa ekrana gelir.
837
838
839
840
Message Type kismindan istege uygun seim yapilarak istenilen mesajlar grntlenebilir. Default'da birakildiginda varsayilan hata mesaji grntlenir. URL seildiginde web sitesinin bulundugu makinada herhangi bir klasr altinda yeralan dosyayi tanimlayabilmek iin ncelikli olarak dosyanin bulundugu klasr virtual directory olarak eklenmelidir. ( r: C:\test klasrnde yeralan my500.asp isimli dosyayi kullanmak iin test isimli bir virtual directory olusturulur ve adres /test/my500.asp olarak verilir.) File seildiginde makina zerinden direkt olarak ilgili dosya bulunabilir veya adresi yazilabilir.
841
Bu blm Frontpage Server Extensions (sunucu uzantilari) kullanilabilmesini ve ayarlarinin yapilmasini saglar. Frontpage Server Extensions yardimiyla web sitesindeki dosyalar direkt olarak sunucuya erisilerek, programcinin kendi makinasindaymis gibi dzenlenebilir. Dosyalarin FTP veya diger yntemlerle sunucuya gnderilmesi gerekmez. Bu zelligi kullanabilmek iin Frontpage Server Extensions'in sunucu zerine kurulmasi gerekir. Bu zelligin kullanilmasi direkt olarak dosyalara erisim oldugu iin gvenlik aiklari meydana getirebilir. ok gere kmedike kullanilmasi tavsiye edilmez.
842
Private Sub bilgisayartoplama_Click() On Error GoTo hata SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Form4.Text3.Text = 1 hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub Private Sub bolum_Click() Form1.Show 843
FORM 1
Private Sub bolum_kayit() Data1.Recordset.AddNew Data1.Recordset.bolum = Text1.Text Data1.Recordset.Update cevap = MsgBox("Olusturulan blmle ilgili para girisi yapmak istiyormusunuz.?", 4 + 32 + 256) If cevap = 6 Then Form2.Show Form2.Combo1.Text = Text1.Text Form2.Combo2.SetFocus Unload Form1 Else Unload Form1 End If End Sub Private Sub CommandButton1_Click() On Error GoTo hata SQL = "select * from bolum where bolum='" & Text1.Text & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast MsgBox "Bu Blm tanimli. Ltfen dikkat ediniz.!" Text1.Text = "" Text1.SetFocus hata: Select Case Err 847
Private Sub kaytdeg() SQL = "select * from parca where bolum='" & Text6.Text & "' and firma='" & Text7.Text & "' and model='" & Text8.Text & "'" Data6.RecordSource = SQL Data6.Refresh Data6.Recordset.MoveFirst Data6.Recordset.Edit Data6.Recordset.bolum = Combo1.Text Data6.Recordset.firma = Combo2.Text Data6.Recordset.model = Text1.Text Data6.Recordset.doviz1 = MaskEdBox4.FormattedText If Option1.Value = True Then Data6.Recordset.kur = 1 If Option2.Value = True Then Data6.Recordset.kur = 0 Data6.Recordset.Update MsgBox "Degisiklik Tamamlandi..!" Unload Form2 End Sub Private Sub kur_sapta() 848
FORM 3
Private Sub tarih_kontrol() On Error GoTo hata SQL = "select * from kur where tarih='" & Date & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Text1.Text = 1 MaskEdBox1.Text = Data1.Recordset.dolar MaskEdBox2.Text = Data1.Recordset.mark hata: Select Case Err Case Is = 3021 Text1.Text = 0 End Select End Sub Private Sub CommandButton1_Click() If MaskEdBox1.Text = "" Or MaskEdBox2.Text = "" Then Unload Form3 Else If Text1.Text = 0 Then Data1.Recordset.AddNew Data1.Recordset.dolar = MaskEdBox1.Text Data1.Recordset.mark = MaskEdBox2.Text Data1.Recordset.tarih = Date Data1.Recordset.Update MDIForm1.Show Else SQL = "select * from kur where tarih='" & Date & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Data1.Recordset.Edit Data1.Recordset.dolar = MaskEdBox1.Text Data1.Recordset.mark = MaskEdBox2.Text 852
FORM 4
853
Private Sub yazdir() On Error GoTo hata SQL = "select * from aktarma" Data4.RecordSource = SQL Data4.Refresh Data4.Recordset.MoveLast qq = Data4.Recordset.RecordCount DoEvents Printer.PaperSize = 9 Printer.Font = "Courier New Tur" Printer.FontSize = 8 GoTo K m: Printer.NewPage K: Printer.Print " "; Date Printer.FontSize = 10 Printer.FontBold = True If Text3.Text = 0 Then Printer.Print " PARA SATIS BILGILERI" If Text3.Text = 1 Then Printer.Print " PC SATIS BILGILERI" Printer.Print 854
860
Private Sub combo1_doldur() On Error GoTo hata SQL = "select * from bolum order by bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast say = Data1.Recordset.RecordCount Data1.Recordset.MoveFirst For i = 1 To say Combo1.AddItem Data1.Recordset.bolum Data1.Recordset.MoveNext Next i hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo1.Text <> "" Then Combo2.Clear Combo2.SetFocus End If End Sub Private Sub Combo1_LostFocus() On Error GoTo hata SQL = "select distinct firma from parca where bolum='" & Combo1.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Combo2.Clear Data2.Recordset.MoveFirst For i = 0 To a Combo2.AddItem Data2.Recordset.firma Data2.Recordset.MoveNext 861
FORM 6
863
Private Sub combo1_doldur() On Error GoTo hata SQL = "select * from bolum order by bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast say = Data1.Recordset.RecordCount Data1.Recordset.MoveFirst For i = 1 To say Combo1.AddItem Data1.Recordset.bolum Data1.Recordset.MoveNext Next i hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub CommandButton1_Click() If Combo1.Text = "" Then Combo1.SetFocus Exit Sub End If SQL = "select * from bolum where bolum='" & Combo1.Text & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Data1.Recordset.Delete MsgBox "Bolm adi silindi.!" Unload Form6 End Sub Private Sub CommandButton2_Click() Unload Me End Sub Private Sub Form_Activate() combo1_doldur Combo1.SetFocus 864
FORM 7
Private Sub dbgasaal() SQL = "select * from aktarma" Data3.RecordSource = SQL Data3.Refresh Data3.Recordset.MoveFirst End Sub Private Sub aktarma_bosalt() On Error GoTo hata SQL = "select * from aktarma" Data3.RecordSource = SQL 865
1) 3) 2)
Private Sub doldur1() On Error GoTo hata SQL = "select * from parca where tarih='" & MaskEdBox1.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveFirst hata: Select Case Err Case Is = 3021 Text1.Text = Text1.Text + 1 End Select 868
871
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub Command1_Click() RcSet.CancelUpdate YeniKayit = False Unload Me Set Form1 = Nothing End Sub Private Sub Command2_Click() verikaydet End Sub Private Sub Command3_Click() If Not Text3(1) = "" Then a = ShellExecute(Form1.hwnd, "Open", "mailto:" & Text3(1), "", "", 0) End Sub 872
End Sub Private Sub Text3_GotFocus(Index As Integer) If Index = 2 Then Command2.Default = False End Sub Private Sub Text3_LostFocus(Index As Integer) If Index = 2 Then Command2.Default = True End Sub FORM 2
FORM 3 876
Sub isimykle(isim As String, RecSet As ADODB.Recordset) Dim X As ListItem On Error GoTo Hata While Not RecSet.EOF If RecSet![cins] = "Bayan" Then Set X = Form4.ListView1.ListItems.Add(, , RecSet![adisoyadi], "bayan", "bayan") If RecSet![cins] = "Erkek" Then Set X = Form4.ListView1.ListItems.Add(, , RecSet![adisoyadi], "erkek", "erkek") If RecSet![cins] = "n" Then Set X = Form4.ListView1.ListItems.Add(, , RecSet![adisoyadi], "no", "no") If Not IsNull(RecSet![evtelefonu1]) Then X.SubItems(1) = RecSet![evtelefonu1] If Not IsNull(RecSet![evtelefonu2]) Then X.SubItems(2) = RecSet![evtelefonu2] If Not IsNull(RcSet![emailadresi]) Then X.SubItems(3) = RecSet![emailadresi] RecSet.MoveNext Wend 877
'yazici ayarlari Printer.ScaleMode = 6 Printer.FontName = "Times New Roman Tur" Printer.FontSize = 14 Y = 10: x1 = 5: X2 = x1 + 50: artim = 7 'Baslik Printer.CurrentX = 1 Printer.CurrentY = 2 Printer.Print "Adres-Telefon Belgesi" & " Format(Date, "Long Date") Printer.Line (0, 9)-(Printer.ScaleWidth, 9) 'Yazmaya Basla
" &
'///////////////////////////////////////////////////// '// For Each alan In RcSet.Fields // '// If Not IsNull(alan.Value) Then // '// Y = Y + artim // '// Printer.CurrentX = x1 // 878
'adi soyadi yaz If Not IsNull(RcSet![adisoyadi]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Adi Soyadi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![adisoyadi] End If ' ikinci adi yaz If Not IsNull(RcSet![fax]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Ikinci Adi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![fax] End If 'dogum tarihi If Not IsNull(RcSet![dogumtarihi]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Dogum Tarihi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![dogumtarihi] End If 'e-mail adresi yaz 879
Printer.Line (0, 140)-(Printer.ScaleWidth, 140) Printer.EndDoc Exit Sub son: MsgBox "Hata :" & Err.Description, 16 End Sub Sub veriykle() ' Listeden seilen kaydin diger bilgilerini gsteren alt program Dim kri As String On Error GoTo son kri = ListView1.SelectedItem.Text 'Kayit Arama Kriteri: Adi Soyadi RcSet.MoveFirst While Not RcSet.EOF If RcSet![adisoyadi] = kri Then GoTo Bitir RcSet.MoveNext Wend Bitir: Form1.Text4 = RcSet![adisoyadi] 'Ayrintilar formunda bulunan kaydin adi soyadini grntle Form1.Caption = RcSet![adisoyadi] 'ayrintilar formunun basligini bulunan kaydin adi soyadi yap 'ayrintilar formundaki etiketin basligini belirle Form1.Label14.Caption = "'" & Form1.Caption & "'" & " Hakkindaki Kisisel Bilgileri Bu Kisma Girin" Form1.Combo1.AddItem "" Form1.Combo1.AddItem "Bayan" Form1.Combo1.AddItem "Erkek" 'bulunan kaydin diger ayrintilarini form1(ayrinti formu) 'de bulunan text'lerde grntle If Not IsNull(RcSet![cins]) Then Select Case RcSet![cins] Case "Erkek": Form1.Combo1.ListIndex = 2 Case "Bayan": Form1.Combo1.ListIndex = 1 Case "n": Form1.Combo1.ListIndex = 0 883
If Not IsNull(RcSet![fax]) Then Form1.Text2(2) = RcSet![fax] If Not IsNull(RcSet![dogumtarihi]) Then Form1.Text3(0) = RcSet![dogumtarihi] If Not IsNull(RcSet![evtelefonu2]) Then Form1.Text1(2) = RcSet![evtelefonu2] If Not IsNull(RcSet![emailadresi]) Then Form1.Text3(1) = RcSet![emailadresi] If Not IsNull(RcSet![evtelefonu1]) Then Form1.Text1(1) = RcSet![evtelefonu1] If Not IsNull(RcSet![evadresi]) Then Form1.Text1(0) = RcSet![evadresi] If Not IsNull(RcSet![postakodu]) Then Form1.Text1(3) = RcSet![postakodu] If Not IsNull(RcSet![semt]) Then Form1.Text1(4) = RcSet![semt] If Not IsNull(RcSet![Il]) Then Form1.Text1(5) = RcSet![Il] If Not IsNull(RcSet![Ilce]) Then Form1.Text1(6) = RcSet![Ilce] If Not IsNull(RcSet![issemt]) Then Form1.Text2(4) = RcSet![issemt] If Not IsNull(RcSet![Istelefonu2]) Then Form1.Text2(1) = RcSet![Istelefonu2] 'blm If Not IsNull(RcSet![IsAdresi]) Then Form1.Text2(3) = RcSet![IsAdresi] If Not IsNull(RcSet![isil]) Then Form1.Text2(5) = RcSet![isil] If Not IsNull(RcSet![isilce]) Then Form1.Text2(6) = RcSet![isilce] If Not IsNull(RcSet![Istelefonu1]) Then Form1.Text2(0) = RcSet![Istelefonu1] If Not IsNull(RcSet![Not]) Then Form1.Text3(2) = RcSet![Not] Form1.Show 1 'Ayrintilar formunu gster Exit Sub son: 'hata Isyeyici MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub Form_Load() Dim BagStr As String On Error GoTo son 'hata olustugunda hata isleyicye git If App.PrevInstance Then End ' Programin Ikinci Defa alismasini nle With Baglanti .CursorLocation = adUseClient 884
894