You are on page 1of 952

IINDEKILER

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

848 849 849 849 852 855 869 879

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;

Microsoft Visual Basic 6.0

Microsoft Visual Basic 6.0 1-VISUAL BASICIN ZELLIKLERI


zellikle Windows ortaminda progaramlama gelistirme araci olarak kullanilan Visual Basic diger klasik proramlama dillerine gre farkli zelliklere sahiptir.Klasik programlama dilleri ise genellikle karakter tabanli isletim sistemlerinde kullanilan zellikle klavye agirlikli kullanici sistemine sahiptir. Text-mod ortamda Kullanicilar seim iin klavye kullanirlar. Kullanicilarin programin kontrolnde fazla bir etkisi olmaz. Her programin kullanici arabirimi birbirinden farklidir. oklu programlama genellikle olmaz. Ekrandan program iktisi almak yapilamaz. Windows ortaminda Kullanicilar seim islemlerinde genellikle fare kullanirlar. Menler,dgmeler,iletisim kutulari ile programlarda ortak arabirimlerin yaratilmasini saglar. Kullanicilar programin kontrolnde olduka etkindirler. Ayni anda birok programin alistirilmasi saglanir. Ekrandan iktilar alinir.

NESNEYE DAYALI PROGRAMLAMA


VB nesneye dayali (Object-Oriented Programming,OOP) bir programlama dilidir.ok sayida nesne hazir olarak VB iinde bulunur programcilar bu nesneleri istedikleri gibi kullanabilirler.OOP prensibe sahiptir: -Encapsulation:Nesne hakkindaki bilgiler ve islemler anlamina gelir. -Inheritance:Bir nesnenin baska bir nesne zerine kurulmasidir. -Polymorphism:Belli bir islemin birok nesne tarafindan kullanilmasidir.

OLAY -TEMELLI PROGRAMLAMA


Olay-temelli programlama ,klasik programlamanin aksine kullanicilarin islemlerine gre programin yanit vermesi temeline kurulu bir programlama sistemidir.Klasik programlama dillerindeki deyimlerin yani sira Visual Basicte nesneleri islemek iin metotlar ve zellikler kullanilir.VB de her nesnenin kendi zellikleri, metodlar ve olaylari vardir.Programlama hemen hemen bunlarin kullanilmasiyla olusur.

Microsoft Visual Basic 6.0


zellikler (properties) bir nesnenin renk,biim vb. niteliklerin temsil eder.Metodlar (methods) ise nesnenin islemlerini, olaylar (events) ise nesnenin sahip oldugu temel tepkimeleri gsterir.

TMLESIK PROGRAM GELISTIRME ORTAMI


Visual Basic bir programlama dilinden te birsey oldugu iin tmlesik uygulama gelistirme ortami olarak anilir.Tmlesik ortam sayesinde kapsanilan islemler: Ekran tasarimi. Kod yazma. Hata giderme. Program paketleme. Veritabani erisimini saglama Ve diger olanaklar.

BIR VISUAL BASIC PROGRAMININ KISIMLARI


Bir program belli kisimlardan olusur: Kullanici arabirimi. Bilgi isleme. Bilgi saklama. Raporlama islemleri.

BILGISAYAR VE PROGRAMLAMA NEDIR?


Bilgisayar ok basit dsndgmzde ana grevi yerine getiren bir makinedir. Girilen bilgiyi alir (INPUT), isler (PROCESSING) ve bu islenmis veriden bir sonu (OUTPUT) ikarir. Bilgisayar, sadece donanim olarak alismaz. nk yazilim olmadan, donanim ne yapacagini bilemez. Bilgisayar donanimina ne yapacagini syleyecek bir komutlar dizisi gerekir. Yapacagi grevleri, ona anlatan komutlara program diyebiliriz. Yani donanima sen sunu yap, sonra buldugun sonucu syle suraya ekle gibisinden isler yaptirmak programin veya bir baska deyisle yazilimin isidir. Bir programci olarak bundan fazlasini bilmek elbette ki avantajdir. Ama bilgisayarin btn zelliklerini bilmeniz gerekmez. Yani yazacaginiz bir program iin o bilgisayarin zelliklerini bilmeseniz de olur. bilgisayarin anladigi tek dil, Makine Dilidir. Bu 16lik (Hexadecimal) sistemden olusan bir programlama tipidir. Makine dilini anlamak ok zordur ve bu dili kullanmak iin o bilgisayarin donanim zelliklerini mutlaka bilmeniz gerekir. C de ekrana yazi yazmanizi saglayan printf(); gibi ok basit bir fonksiyon,

Microsoft Visual Basic 6.0


makine dilinde 1A BB 0D BC D5 FF C2 F7... gibi ok daha karmasik ve hibir anlam ifade etmeyen bir hle dnsr. Makine dili programlama dilleri arasinda en alt seviyedir.

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.

PROGRAMLAMA DILI NEDIR?


Programlama Dili bilgisayarda zlecek bir sorun iin zmn bilgisayara adim adim yazilmasini saglayan formal kurallari olan ve bu kurallara siki sikiya bagimliligi gerektiren bir tanimlar kmesidir. Belki daha kisa bir tanimi ile sizinle bilgisayar arasinda bir tercmandir demek dogru olur. Bir sorun zlecegi zaman ncelikle iyice anlasilmis olmalidir. Sonra bu sorunu zebilecek bir zm zihinsel olarak hazirlanir. Bu zm bilgisayara uygun bir zm olmalidir. Syleki her zm bilgisayarda uygulanamaz. nk her zmn takip ettigi yol yeteri kadar basit olmayabilir. retilen zm son derece basit adimlarla anlatilabilmelidir. Bu adimlarla zmn anlatilmasina Algoritma denir Bu adimlar alt alta yazilmak suretiyle olusturulan zm bilgisayar iin uygundur. Ancak ihtiya var ise bu adimlar Akis izgesine evrilebilir. Algoritma dogal bir dille yazilir ve siki sikiya kurallari bulunmaz. Anlasilmasinin kolay olmasi yeterlidir. Akis izgesinde belirlenmis semboller yer alir ve bu semboller tm dnyada standarttir. Kismen formal olan bu izge sorunun zmn daha evrensel bir dille ifade eder. Son adim olarak sira Akis izgesi veya Algoritma ile elde edilen zmn bir Programlama dili ile Bilgisayar ortamina aktarilmasina gelmistir. Programlama dili son derece standart tanimlar ierir ve bir programi yazarken bu tanimlardan bir an iin bile uzaklasilamaz. O nedenlede bir program parasindan baskalarinin baska seyler anlamasi mmkn degildir. Yazilan bu programlar bir derleyici vasitasi ile Makine diline evrilir varsa hatalarin bulunmasini saglar ve kullanici bu hatalari dzeltir.

Microsoft Visual Basic 6.0


PROGRAMLAMANIN TARIHI
Programlamanin tarihi olduka eskidir.1940-1950 yillari arasinda programcilar olduka fazla kodlanmis makine komutlariyla programlarini yaziyorlardi, o gnlerde programcilik olduka zordu. Ilk programlar makine dili ile hazirlaniyorlardi.Makine dili belli bir bilgisayar sisteminde kullanilan bir programlama dilidir.Makine dili programlari zellikle anlasilmasi zor olan ve tamamiyla donanima dayali olarak gelistirilen programlardir. Makine dillerine yakin ancak yine belli bir mikroislemci iin gelistirilmis dillerden birisi de ASSEMBLY programlama dilidir.Assembly programlama dilinde makine komutlari yerine mikroislemcinin anlayacagi belli bir islemi ifade eden assembly kodlari kullanilir. Bu sre iinde belli amalar ve alanlar iin birok st dzey programlama dili gelistirildi:ADA,BASIC,FORTRAN,COBAL,PASCAL,PL/I,C,C++ st dzey programlama dilleriyle program yazmak makine diliyle yada Assembly dsiliyle program yazmaktan daha kolaydir.nk bu dillerde islemler belli bir prosedrler ve mantiklar seklinde ortaya konur ve zlr. 1980li yillar st dzey prgramlama dillerinin yaygin olarak kullanildigi yillar olmustur. 1990li yillar windowslu yillar oldu.Windows isletim sistemleri kullanici etkilesimi ile alisir.Windows zerinde alisan bir program zellikle kullanicinin kolay ve etkin bir biimde kullanilabilmesi iin gelistirilmistir. Windows isletim sistemlerinin yasamimiza girmesiyle programlama grsel ve olay- temelli olarak gelismistir.

PROGRAM GELISRIRME SRECI


Kk yada byk nasil bir program gelistirirseniz gelistirin, belli bir program -gelistirme adimini takip etmeniz gerekir.Bu adimla sunlardir: 1. Gereksinimlerinizi tanimlayin. 2. Bu gereksinimleri karsilamak iin program gereksinimlerini planlayin. 3. Bilgi akisini, hesaplamalari, karar yapilarini ve bilgi yapilarini semalastirir. 4. Programin kullanici arabirimini tasarlayin. 5. Programin iktilarini tasarlayin. 6. Program kodunu yazin. 7. Programi test edin. 8. Programin bakim islemlerini yapin.

Microsoft Visual Basic 6.0


IYI BIR PROGRAMIN NITELIKLERI
Programlar belli bir isin bilgisayar tarafindan yerine getirilmesini saglarken; programlarin belli niteliklere sahip olmasi gerekir.Iyi program niteliklerine sahip olmak, ayni zamanda program gelistirme srecinin de amalarindandir.Iyi bir programin nitelikleri: 1. 2. 3. 4. 5. 6. 7. 8. Grsellik Kolaylik Dogruluk Hizli Iyi bir belgeleme Kolayca degistirilebilme, gncellenebilme Etkin bir kodlama Etkin bir isletim

PROGRAM GELISTIRME ADIMLARI


Programlama isleminin amaci iyi bir program gelistirilmesidir.Bunun yani sira programlama islemi yani bir program yazmak iin belli takip edilmelidir.Degisik sayida aiklanabilen bu adimlarin en yaygi kullanilanlari sunlardir: 1.Sistem Analizi: Bir karmasikligin bilesenlerini nceliklerini tanimlamak amaciyla yapilan alismalardir. , amalarini,

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.

Microsoft Visual Basic 6.0

Microsoft Visual Basic 6.0 2-VB 6.0 KURULUMU


Visual Basic Microsoftun Visual Studio 6.0 program paketini iinde gelir ve buradan kurulur. Ilk nce Visual Studio 6.0 Cd sini CD- Rom a takalim. CDyi taktiktan sonra kurulum programi otomatik olarak baslayacaktir. Karsimiza ilk nce bir hos geldin penceresi ikacaktir.

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.

Microsoft Visual Basic 6.0

Daha sonra bizden kurulumun devam etmesi iin gerekli olan kurulum sifresini istiyor.

10

Microsoft Visual Basic 6.0


Gerekli kisimlari doldurup Next e tiklayalim. Karsimiza kurulum tipini sememizi isteyen bir ekran ikar .Burada bize uygun olan kurulum tipini setikten sonra Next e tiklayalim.

Sonraki ekranda bize programin yklenecegi yolu belirtmemizi istiyor. Uygun olan bir yol belirtip Nexti tiklayalim.

11

Microsoft Visual Basic 6.0

Nihayet kuruluma baslayabildik. Karsimiza ikan ekrandan Continue dgmesini tiklayarak ilerliyoruz.

12

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

Tabii ki biz su anda Visual Basic ile ilgilendigimiz iin sadece Visual Basic ile alakali olan seyleri seecegiz.

14

Microsoft Visual Basic 6.0


Continue dgmesini tiklayara kuruluma devam edelim. Kurulum programi gerekli alan iin sabit diskimizi tarayacak ve gerekli alan varsa kurulum baslayacaktir.

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 2.0 Runtime Files Srm:


Windows 95/98/NT/2000; 199 KB; Freeware Windows 95/98/NT/2000; 285 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 4 (32 bit) Runtime Files Srm:


Windows 95/98/NT; 1.3 MB; Freeware

Visual Basic 5.0 Runtime Files Srm: 15

Microsoft Visual Basic 6.0


Windows 95/98/NT/2000; 1.24 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.

Visual Basic .NET


Visual Basic .NET, Visual Basic'in kapsamli yeniden tasarim isleminden geirilmis halidir. Visual Basic .NET'i daha saglam bir yapilandirilmis programlama dili haline getiren pek ok yeni zellik eklenmistir. En byk degisiklik, Visual Basic .NET'in artik ynetilen bir dil olmasidir. Visual Basic .NET artik kendi yerel derleyicisine sahip degildir, ama nceki blmde aiklanan common language runtime gesine derlenmektedir. Visual Basic .NET'in, runtime ile alisabilmesi ve yeni programlama modelini kullanabilmesi iin kapsamli degisiklikler yapilmistir. Visual Basic .NET, daha yksek nesne ynelimi dzeyine sahiptir ve nceki srmlere oranla daha yksek type safety dzeyi sunmaktadir. Bu degisiklikler sayesinde, Visual Basic 6.0 projelerini .NET Framework sistemine tasirken kodlari yeniden yazmak yerine, basit bir baglanti noktasi kullanmak yeterli olacaktir. Yeni zelliklerden bazilari asagida sunulmaktadir.

Common Language Runtime Destegi


Visual Basic .NET common language runtime yaklasimini temel almaktadir; COM-tabanli bir Visual Basic .NET yoktur. Visual Basic 6.0 uygulamalarinizi Visual Basic.NET ortamina tasimak iin kk bir gncelleme alismasi yapabilir ve runtime kazanlarindan yararlanabilirsiniz.

Nesne Ynelimli Tasarim


Dil aisindan en ok istenen zellik eski bilesenlerin kullanilabilmesidir. .NET sayesinde, artik Visual Basic programcilari eski uygulamalari

16

Microsoft Visual Basic 6.0


kullanabilecek ve yeni Inherits anahtar szcg ile mevcut siniflari alabilecek ve Overrides ile taban sinifi islevini silecektir. Eski geleri kullanma zelligi, ynetilen bir dille olusturulan tm siniflarda alisacaktir. Visual Basic .NET'e eklenen bir baska zellik de islev asiri yklemesidir. Uygulama gelistiriciler artik ayni ada sahip olan, ama farkli argman trleri ve dns trleri ieren islevleri olusturabilecektir. Visual Basic .NET iindeki olusturuculari kullanan uygulama gelistiriciler, bir sinifin yeni rneklerini olustururken, argmanlari sinifa eszamanli olara k iletebilecektir.

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.

Diger Yeni zellikler


Visual Basic .NET iindeki kesin tr denetimi, Visual basic 6.0 iindeki gizli tr zorlamayi sikilastirmaktadir. Visual Basic 6.0'da, hemen hemen her tr baska bir tre gizli olarak evrilebilmekte, ama tr sinirlari asildiginda alisma zamani hatasi olusturmaktadir. Visual Basic .NET, artik alisma zamaninda hataya neden olabilen tm evrimle r iin derleme zamani hatalari olusturabilmektedir. Yapilandirilmis istisna isleme zelligi, Visual Basic 6.0'daki On Error GoTo veya Resume Next hata isleme zelliginin yerini almistir. Yapilandirilmis istisna isleme sayesinde uygulama gelistiriciler, Try...Catch deyimlerini kullanarak normal kosullarda ve istisna kosullarinda alisan kodlar yazabilmektedir. Windows Forms, Visual Basic .NET'te uygulama gelistirme iin yeni teknolojidir ve diller arasinda uyumludur.

Microsoft .NET'in Avantajlari


Gelecek Kusak Is Entegrasyonu
nemli bilgileri ancak esitli sistemlerde izole bir sekilde sakli tutabildiginiz gnler sona erdi.Bir sirketle veya is ortaklari ile kurulan is entegrasyonu, degerli olan zamaninizdan ve kaynaklarinizdan tasarruf etmenizi saglar. Bu durum maas bordrolarini dis kaynaklardan saglayan bir

17

Microsoft Visual Basic 6.0


bisikleti dkkani kadar bir tedarik zincirinde yzlerce is ortagini entegre eden byk bir araba reticisi firma iin de geerlidir.

Isletmelere Ynelik Kazanlar


Microsoft .NET, yazilim uygulamalarinin bir arada daha kolay bir sekilde alismasini saglamak amaciyla Internet'i kullanarak bir yandan sirket iinde ve sirketler arasinda daha kolay bir entegrasyon saglarken diger yandan tketicilerle daha iyi baglantilar olusturmak ynnde firsatlar yaratiyor. .NET platformunun aralari ile sirketler, is uygulamalarini gelistirerek ve koruyarak ayni zamanda da alisanlarinin her yerden ve her trl akilli cihazdan en nemli bilgilerle ii ie olmalarini saglayarak zaman ve maliyet aisindan gelismele r kaydedebiliyorlar.

Microsoft .Net ile Ilgili Standartlar


Web sayesinde grenilen en nemli derslerden biri, veri ve etkilesimleri tanimlamaya ynelik olusturulan standartlarin (HTML gibi) zmleri zel teknolojilere oranla ok daha genis kitlelere ulastirabildigidir. .NET platformu, endstri standartlarinin teknoloji temellerinde olusturulmustur. .NET ile ilgili en nemli standartlar XML, SOAP, UDDI, WSDL, C# ve CLI olarak siralanabilir; her biri burada kisaca aiklanacaktir.

Microsoft .Net Framework


.NET Framework, Microsoft .NET platformunun gelistirilmesine ynelik temeli olusturan bir rndr. .NET Framework ve cihaz odakli .NET Compact Framework, XML'e ynelik kapsamli bir destek saglayarak XML Web Servisleri ile ilgili ynetilebilir, gvenli bir alisma ortami sunar. .NET Framework'deki en nemli teknolojiler Common Language Runtime, sinif kitapliklari ve ASP .NET'dir.

XML Web Servisleri


XML Her ne kadar kolay olsa da, yazilimi olusturma ve kullanma seklimizi tam anlamiyla degistiriyor. Web, kullanicilarin uygulamalarla iletisim kurma sekillerinde bir devrim yaratirken XML de uygulamalarin diger uygulamalarla nasil iletisim kurdugu ynnde, daha da genis bir bakisla aiklanacak olursa verinin kolaylikla uyarlanabildigi veya dnstrldg evrensel bir veri biimi saglanarak bilgisayarlarin diger bilgisayarlarla nasil iletisim kurdugu ynnde bir devrim yaratiyor. SOAP ve UDDI'yi kapsayan XML tabanli standartlar, XML Web servisleri olarak bilinen uygulamalar arasi iletisime ynelik aik bir metodolojiyi iermektedir.

18

Microsoft Visual Basic 6.0


Hailstorm
Microsoft, kod adi "HailStorm" olan ve bir ok uygulamanin ihtiya duyacagi kullanici odakli bir XML Web servisleri seti gelistiriyor. "HailStorm" hizmetleri belirli bir aygit, uygulama, hizmet veya agdan ziyade insanlara uygun olarak gelistirilmektedir. Kullanicilarin verileri ve bilgileri zerinde denetim kurmalarini saglar ve size herhangi bir cihazdan istediginiz zaman bu verilere erisebilme imkanini tanir. Kullanicinin kendi bilgilerine kimlerin erisebildigini denetlemesini saglayarak kisisel bilgileri korur ve bylece kullanim kolayligina ve kisisellestirme zelligine yeni bir boyut kazandirir. "HailStorm" hizmetleri, Microsoft'un olusturdugu ilk XML Web servisidir.

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.

Visual Basic 6.0 Uygulamalarini Visual Basic .NETe Gncelleme


Microsoft Visual Basic uygulama gelistirme sisteminin sonraki srm olan Microsoft Visual Basic .NET, gl Microsoft Windows tabanli uygulamalari, leklenebilir veri erisimi bilesenleri, dsk kapasiteli Webtabanli uygulamalari, yksek korunma dzeyine sahip uygulama zmlerini ve XML Web Servislerini gelistirme islemlerini hizli bir sekilde yapabilmenizi saglayacak birincil ara olarak yeniden tasarlanmistir. Microsoft, Visual Basic 6.0a bazi yeni zellikler eklemekle yetinmek yerine, Visual Basic .NETi

19

Microsoft Visual Basic 6.0


Microsoft .NET Framework zerinde yeniden olusturdu ve yeni platformdan birinci sinif dil olarak tasarladi. Bu sayede Visual Basic ile uygulama gelistirenler, Visual Basic .NET iindeki gelismis zelliklerden yararlanarak farkli ihtiyalara uygun uygulamalari hemen olusturabilecek. Visual Basic. NETi kullanan uygulama gelistiriciler nceki Visual Basic srmlerine oranla, ok daha gl ve zengin ara kmesine erisim saglayabiliyor. Gl msteri talebi dogrultusunda gelistirilen Visual Basic .NETin sundugu kapsamli yeni zellikler arasinda, siki denetim, yapilandirilmis istisna isleme ve dolaysiz .NET Framework erisimi bulunuyor. Buna ek olarak, Visual Basic dili kusursuzlastirilarak eski anahtar szckler kaldirildi, gereksiz fazlaliklar yok edildi ve dil verimliligi artirildi. Bu zellikleri gereklestirmek iin dilde bazi sz dizimi degisiklikleri yapildi.

Visual Basic .NET Upgrade Tool


Dille ilgili bu gelismis zelliklerin en verimli sekilde kullanilabilmesini saglamak iin, uygulama gelistiricilere Visual Basic 6.0 projelerini Visual Basic .NETe gncelleyebilecek bir ara da sunuluyor. Visual Studio .NET Professional, Enterprise Developer ve Enterprise Architect srmlerinde bulunan bu ara, uygulama gelistiricileri srm ykseltme srecinin tm asamalarinda ynlendiriyor ve yeni bir Visual Basic .NET projesi olusturuyor (mevcut Visual Basic 6.0 projeleri degistirilmiyor). Visual Basic 6.0 projeleri, Visual Basic .NET iinde aildiginda srm ykseltme araci otomatik olarak alisiyor. Bu ara dilde asagidakileri ieren bir dizi sz dizimi gncellemesi yapiyor: Degiskenleri Nesneye evirme. nceki Visual Basic srmleri artik Visual Basic .NETte desteklenmeyen Variant (Degisken) veri trn destekliyordu. Variant olarak tanimlanan tm degiskenler Object (Nesne) tr degiskenlere evriliyor. Tamsayilari Kisaya, Uzunlari Tam Sayiya evirme. Visual Basic 6.0da, 32-bit tam sayilar iin Long (Uzun) veri tr; 16-bit tam sayilar iin de Integer (Tam Sayi) veri tr kullaniliyordu. Visual Basic .NETte 64-bit tam sayilar iin Long (Uzun) veri tr; 32-bit tam sayilar iin Integer (Tam Sayi) veri tr; ve 16-bit tam sayilar iin de Short (Kisa) veri tr kullaniliyor. Upgrade Tool 32-bit ve 16-bit veri trlerini otomatik olarak Integer ve Short degerlerine degistiriyor. Parametresiz Varsayilan zellikler. Visual Basic 6.0da ogu nesnenin varsayilan zelligi bulunuyordu ve bunlar programlama kisayolu olarak atlanabiliyordu. Upgrade Tool bu para metresiz varsayilan zellikleri Visual Basic .NETte kullanim iin hazirliyor.

20

Microsoft Visual Basic 6.0


Sifirsiz Sinir Dizileri. Visual Basic 6.0 herhangi bir tam sayinin alt ve st sinirlarinda dizi kullanimina izin veriyordu. Visual Basic .NET Upgrade Tool dizi sarma sinifini kullanarak, sifirsiz sinir dizilerini otomatik olarak gncellestiriyor.

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.

Gnmzn Uygulamalarini Gncellemek iin Mimar Rehber


Uygulama gelistiriciler Upgrade Tool kullanimina ek olarak, Visual Basic 6.0 kodlarinin Visual Basic .NETe mmkn oldugu lde kusursuz olarak gncellemek iin gerekli adimlari atabilir. Microsoft Visual Basic 6.0 projelerini gncellerken, gerekli olabilecek elle degisiklik yapma gereksinimini en aza indirmek iin, bir dizi mimar tavsiye sundu. Bu tavsiyeler asagidakileri iermektedir: Erken degisken baglama kullanimi. Null (Bos) doldurma kullanilmamasi. Veri erisimi iin Microsoft ActiveX Data Objects (ADO) kullanimi. Tarih saklamak iin Double (ift) veri trnn kullanilmamasi. Kullanici tanimli trlerde sabit uzunlukta dizi kullanilmamasi. Alt deger yerine sabit kullanilmasi.

21

Microsoft Visual Basic 6.0 Visual Basic 6.0in Sistemden Kaldirilmasi

Windows ta control panelden program ekle/kaldir seenegini tiklayarak ykl olan Microsoft Visual Basic 6.0 seenegini sein ve kaldir seenegini tiklayin.

22

Microsoft Visual Basic 6.0


Gelen menden component eklemek veya kaldirmak iin Add/Remove seenegini, Tekrar ykleme yapmak iin Reinstall seenegini, V Basic i tamamen kaldirmak iin ise Remove All seenegini seiniz. Biz tamamen kaldirmak iin Remove All seenegini seiyoruz.

Bize geiyoruz.

bu

islem

iin

emin

olup

olmadigimizi

soruyor.Yes

diyerek

Bilgisayarda gerakli bos alan varmi diye kontrol ediyor.

Kaldirma islemine basliyor.

23

Microsoft Visual Basic 6.0

Kaldirma islemi bittikten sonra bilgisayarinizi yeniden baslatmaniz gerekiyor.Hemen yeniden baslatmak iin Restart Windows seenegini, daha sonra baslatmak iin Exit Setup seenegini seiyoruz.

24

Microsoft Visual Basic 6.0 3-VISUAL BASICTE ALISMA BASLATMA


Visual Basici ilk kez baslattiginizda Project Wizard ailir ve New Project iletisim kutusunu grrsnz. Bu pencereden size uygulamanizi gelistirme konusunda bir baslangi noktasi teskil edecek olan esitli proje trlerinden birini seebilirsiniz. Bu pencerenin 3 sekmesi vardir; New, Existing ve Recent. NEW SEKMESI:

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

Microsoft Visual Basic 6.0


* Standart EXE * ActiveX DLL * VB Application Wizard * Data Project * Add- In *ActiveX Document EXE * VB Enterprise Edition Controls * * * * * * ActiveX EXE ActiveX Control VB Wizard Manager IIS Application ActiveX Document DLL DHTML Application

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

Microsoft Visual Basic 6.0


RECENT SEKMESI
Son olarak bu sekme de en son kullandigimiz projelerinizden birini semenizi saglar. Bu sekme Existing sekmesine benzer, ancak size mevcut btn projelerin bir listesi yerine sadece zerinde kisa bir sre nce alistiginiz mevcut projelerden olusan bir liste sunar. Visual Basicte bir projeye baslamaniza yardimci olmasi iin bu sekmelerin hepsini kullanabilirsiniz. Ayni zamanda bu formun alt tarafindaki kk onay kutusunu da fark etmissinizdir: Dont show this dialog in the future. Bir proje tr semek istemiyorsaniz bu kutuyu isaretleyebilirsiniz; VIsual Basici bir daha atiginizda bu pencere ailmaz.

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

Microsoft Visual Basic 6.0


bir form veya Code penceresini grrsnz. Yukaridaki sekilde formun her iki yaninin ortasinda siyah renkli kk noktalar olmasina dikkat edin. Bu kutulara apa (anchor) adi verilir.Bir apayi fareyle srkleyerek formun boyutunu degistirebilirsiniz.

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

Microsoft Visual Basic 6.0


gtrlrsnz. Kod Penceresi aildiktan sonra seili form zerindeki btn nesnelerin btn yordamlarina gidebilirsiniz.

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

Microsoft Visual Basic 6.0


BIR ARA KUTUSU DENETIMININ IKARTILMASI
Bir denetimi ikartmak iin Custom Controls iletisim kutusunda ilgili kutunun isaretini kaldirmaniz yeterlidir. Yerlesik denetimleri ara kutusundan ikartamayacaginizi bilmelisiniz, bu yzden komut dgmesi gibi denetimler daima mevcut olacaktir. Internet denetimlerini ikartmak iin; 1. Ara kutusunu sag tiklayin. 2. Ailan menden Components komutunu verin. 3. Getigimiz alistirmada deentimleri eklediginiz gibi, onlari ilgili denetimin yanindaki onay kutusunun isaretini kaldirarak ikartirsiniz. Microsoft Internet Controls basliginin yanindaki onay isaretini kaldirin. 4. OK dgmesini tiklayin.

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.

Bir formu dgmesini tiklanarak tiklarsaniz

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

Microsoft Visual Basic 6.0


sunulur. rnegin, bu ailan menden form ve kod modlleri ekleyebilir, ikartabilir ve basabilirsiniz. Pro jenizden bir nesneyi ikartmak isterseniz bu nesnenin ismini Project Explorer penceresinde sag tiklayin ve Remove komutunu verin. Remove komutunun yaninda bu nesnenin adi grlr.

ZELLIKLER (PROPERTIES) PENCERESI


Project penceresinin hemen altina Properties penceresi bulunmaktadir. Properties penceresi seili nesnelerin esitli karakteristiklerini (veya zelliklerini) sunar. Bu kavrami netlestirmek iin bir uygulamadaki btn formlarin birer nesne olduklarini dsnn. Bir formun zerinde grnen btn d enetimler de (rnegin bir komut dgmesi) birer nesnedir. Visual Basicte ki her nesnenin renk boy gibi karakteristikleri bulunur. Diger karakteristikler ise sadece nesnenin grnmn degil, ayni zamanda tutumunu da etkiler. Bir nesnenin btn bu karakteristiklerine onun zellikleri adi verilir. Bu yzden bir formun zellikleri vardir, stelik bir formun zerine yerlestirilen btn denetimlerin de zellikleri vardir. Bu denetimlerin tm Properties penceresinde grntlenir. Properties penceresinde bir nesneye ait olan zelliklerin bir listesini grrsnz. Bu zelliklerden olduka ok sayida vardir ve tmn grmek iin listeyi kaydirmaniz gerekebilir. Neyse ki bu zelliklerin ogu kendi kendini aiklar. (Caption, Width,Height gibi [Tabi bunlar Ingilizce bildiginiz varsayilirsa dogrudur.]), fakat bazilari da olduka seyrek kullanilir. Belirli bir zelligin ne ise yaradigindan emin degilseniz onu isaretleyerek Properties penceresinin alt tarafinda kk bir aiklamasini grebilirsiniz. zellikleri grmek iin listeyi kaydirabilmenize ek olarak uygun sekmeyi tiklayarak onlari alfabetik olarak veya kategorilerine gre de siralayabilirsiniz. Kullanacaginiz yntem sahsi tercihinize baglidir.

31

Microsoft Visual Basic 6.0


Bir denetim, rnegin bir komut dgmesi bir formun zerine yerlestirildiginde Prpperties penceresi bu denetim seildigi zaman onun zelliklerini gsterir. Aralarinda temel formun da yer aldigi farkli nesnelerin zelliklerini bu nesneleri sirayla tiklayarak grebilirsiniz. Alternatif olarak Properties penceresinin st tarafindaki ailir listeyi istediginiz denetimi seerek bunun zelliklerini seerek bunun zelliklerini kullanmak iin kullanabilirsiniz. ogu zellik tasarim kipinde ayarlanir, ancak pek ogu da alisma kipinde degistirilebilir.

FORM LAYOUT PENCERESI


Form Layout Penceresi basit ama faydali bir aratir. Bu pencerenin amaci size etkin formun temsili bir grnmn sunarak neye benzedigini ve alisma kipinde ekrandaki konumunu gstermektedir. Bu pencerede iken farenin sag tusuna basildiginda karsimiza ika n popup mende Startup Position seeneginin ierisindeki
MANUAL: fare ile istenilen yere formu tasiyabilmek iin seili olmalidir. CENTER OWNER: Programa ait aik pencere varsa onun ortasinda aar CENTER SCREEN: Ekranin tam ortasinda formu odaklar. WINDOWS DEFAULT: Standart konuma odaklar.

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

Microsoft Visual Basic 6.0


OBJECT BROWSER

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

Microsoft Visual Basic 6.0


Object Browser bu aiklamalari ilgili EXE veya DLL dosyalarindan alan ve bunlari grsellestirmesi ve iinde dolasilmasi kolay olan bir sekilde sunan bir uygulamadir.

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

Microsoft Visual Basic 6.0


EDIT MENS
Alttaki Yandaki aik hali bulunan EDIT mens zerinde alisilan proje form modl vs..de gerekli dzenlemelerin yapilmasi iin gerekli komutlari iermektedir. UNDO .. : Son yapilan islemi iptal etmek iin kullanilir. REDO .. : Son olarak yapilan geri alma islemini iptal eder. CUT: Seili olan veri kesilerek panoya atilir. COPY: Seili olan verinin bir kopyasi panoda olusturulur. PASTE: Panoda bulunan veri bulundugu mevkiye yapistirilir. kursrn

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

Microsoft Visual Basic 6.0


LIST PROPERTIES/METHODS: Men seenegi ile asagi yukari ailan zellik listeleme kutusunu grntler. QUICK INFO: grntler. Men seenegi ile bir ifadenin ierdigi parametreleri

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

Microsoft Visual Basic 6.0


PROJECT EXPLORER: Proje dosyalarinin gsterildigi pencereye ulasilir. PROPERTIES WINDOW: Properties penceresini grntlemek iin kullanilir. FORM LAYOUT WINDOW: Bu seenek ile formun ekrandaki konumunu gsteren bir pencere ailir. Bu pencere araciligi ile formu istenilen yere tasimak mmkndr. Bu pencerede iken farenin sag tusuna basildiginda karsimiza ikan popup mende Startup Position seeneginin ierisindeki
MANUAL: fare ile istenilen yere formu tasiyabilmek iin seili olmalidir. CENTER OWNER: Programa ait aik pencere varsa onun ortasinda aar CENTER SCREEN: Ekranin tam ortasinda formu odaklar. WINDOWS DEFAULT: Standart konuma odaklar.

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

Microsoft Visual Basic 6.0


ADD USER CONTROL: Projeye yeni kullanici kontrol eklemek iin kullanilir. ADD PROPERTY PAGE: Projeye yeni bir property page eklemek iin kullanilir. ADD FILE: Projeye yeni bir EXE, CLS, BAS uzantili dosya eklemek iin kullanilir. REMOVE FORM1: Projeden seili olan nesneyi kaldirir. REFERENCES: Referans penceresi grntlenerek burada object browser da gzkecek veri ktphaneleri seilir yada devreden ikarilir. COMPONENTS: Components penceresi grntlenerek Toolbox penceresi eklenecek yada kaldirilacak elemanlar seilir.

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

Microsoft Visual Basic 6.0


FORMAT MENS:
ALIGN: VBde birden fazla kontrol elemanini ayni hizaya getirmek olduka zahmetli ve sikici bir istir. Iste bu seenek seildiginde karsimiza ikan alt mensndeki sagdaki durumlarla esitli ynlerden ogul kontrol elemanlarini tek bir seimle, kolaylikla yapabilmemizi saglamaktadir.
LEFTS: Seili olan elamanlarin sol taraflarini hizalar. CENTERS: Bu seenek seildigi takdirde elemanlarin merkezleri hizalanir. RIGHTS: Seili elemanlarin sol taraflari hizalanir. TOPS: Seili olan elemanlarin st taraflarini hizalar. MIDDLES: Seili elemanlari st ste getirerek aralarini hizalar. BOTTOMS: Seili olan elemanlarin alt taraflarini hizalar. TO GRID: Seili elemanlarin form zerindeki noktalara denk gelmesini saglar.

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

Microsoft Visual Basic 6.0


HORIZONTALLY: Seili olan elemanlari formun orta noktasina yatay olarak ayarlar. VERTICALLY: Seili olan elemanlari formun orta noktasina dikey olarak ayarlar.

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

Microsoft Visual Basic 6.0


CLEAR ALL BREAK POINTS: Tm kesisme noktalari silinir. Deger yklenirse program kirilir.

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.

Bu pencerenin Editr kismiyla asagidaki islemler yapilabilir.


AUTO SYNTAX CHECK: Bu seenek seili duruma getirilirse kod penceresinde yazilan kodlar otomatik olarak yazim kontrolne alinir. REQUIRE VARIBLE DECLARATION: Bu seenek seili duruma getirildigi takdirde kullanilan her degiskene tanimlanma mecburiyeti getirilir.

41

Microsoft Visual Basic 6.0


AUTO LIST MEMBERS: Bu seenek seili duruma getirildiginde kontrol elemanlarin adi yazildigi takdirde ilgili olaylari liste halinde ekrana getirilecek ve programciya kolaylik saglayacaktir. AUTO QUICK INFO: Bu seenek seili duruma getirildiginde kod penceresinde herhangi bir fonksiyon yazilmaya baslandiginda o fonksiyonun parametre kalibi ekranda belirir ve programcinin hata yapmasi engellenir. AUTO DATA TIPS: Bu seenek seili oldugunda debug modunda fare isaretisi bir degiskenin zerine getirildigi takdirde ekranda o degiskenin o anki degeri gsterilir. AUTO INDENT: Bu seenek seili oldugunda kod penceresinde bir satira tab uygulanirsa o satirlardan sonraki satirlarda da otomatik olarak ayni stun seviyesinden baslatilir. DEFAULT TO FULL MODULE VIEW: Bu seenek seili oldugunda kod penceresinde btn kodlar ayni anda grntlenir. PROCEDURE SEPERATOR: Bu seenek seili ise kod penceresinde prosedrler arasinda izgi isareti gsterilir. Editr kisminda kod penceresinde yazilan kodlarin renk, font, byklk vb.. ayarlanabilir.

Yandaki GENERAL durumu seili durumdaki haliyle asagidaki durumlar ayarlanabilir.


SHOW GRID: Bu seenek seili ise form zerinde bulunan noktalar gsterilir. WIDTH: Bu seenek yanindaki kutuya verilen deger, form zerindeki noktalar arasi yatay mesafenin degeridir.

42

Microsoft Visual Basic 6.0


HEIGHT: Bu seenek yanindaki kutuya verilen deger, form zerindeki noktalar arasi dikey mesafenin degeridir. ALIGN CONTROLS TO GRID: Bu seenek seili ise form zerindeki kontroller noktalara isabet ettirilir. BREAK ON ALL ERRORS: Bu seenek seili iken derleyici herhangi bir hatayla karsilasirsa derleme islemi kirilir.

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

Microsoft Visual Basic 6.0


WINDOW MENS:
TILE HORIZANTALLY: Projede kullanilan ve o anda grnr olan formlari, kod pencereleri vb.. yatay olarak alt alta siralar. TILE VERTICALLY: Projede kullanilan ve o anda grnr olan formlari, kod pencereleri vb.. dikey olarak yan yana siralar. CASCADE: Projede kullanilan ve onda grnr olan formlari, kod pencereleri vb.. yatay olarak aktif olan stte kalacak sekilde siralar. ARRANGE ICONS: Projede kullanilan ve onda grnr olan formlari, kod pencereleri vb.. minimize konumuna indirger.

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

Microsoft Visual Basic 6.0


Project Explorer
Projeye formlar ve modller eklendike proje hiyerarsik bir sekle girer. Bu durumda proje birimlerinin grlmesi ve islern yapilmasi iin Project Explorer kullanilir. Projeye bir birimin eklenmesi ya da ikarilmasi gerektiginde Project Explorer grnm sayesinde projenin btn elemanlari grlr ve kolayca seilebilir.

Sekil 4.1 Project Explorer

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

Microsoft Visual Basic 6.0


eklenerek modl sayisi artirilabilir. Projeye mensnden Add Module komutu kullanilir. modl eklemek iin Project

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

Microsoft Visual Basic 6.0


Bir Modln Kesimleri
Tanimlama Kesimi: Procedurler: Sub Hesapla_Click End Sub Sub IlkIslemler End Sub Sub Rapor ... End Sub Function Komisyon ( x, y,z) End Function

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.

Sekil 4.3 Standart Modl

48

Microsoft Visual Basic 6.0


Class Modller
Class modller (CLS dosya uzantili) nesneye dayali uygulama gelistirmenin temelidir.Class modllerinde yazilan kodlarla yeni nesneler yaratilir.Bu nesneler kendi zel metot ve zelliklerine sahiptirler. Class'lar program iinde kullanilan birimlerdir. Class'lar yeniden kullanilabilir nesneler yaratirlar. Bir class, veri islemek iin procedure'lari ierir.Visual Basic kontrolleri de birer class'tirlar. Btn programlarda yer alirlar. Class kullaniminin iki yolu vardir. Birincisi program iinde yeniden kullanilabilir nesneler yaratmak. Ikincisi ActiveX DLL ve ActiveX EXE programlar yaratmaktir. Bir Class modl yaratildiktan sonra kendi "zelliklerinizi" yaratabilirsiniz. Projeye yeni bir Class modl eklemek iin: Proiect mensnden Add Class Module komutu seilir.Bir proje iinde yaratilan Class modlne sadece o proje iindeki modllerden veformlardan erisilir. Ancak ActiveK olarak dzenlenen class'lara diger projelerden de erisilebilir.

Sekil 4.4 Class Modl

Bir Procedure un Yazilmasi


Bir proje iinde bir form zerinde bir kontroln yerlestirilmesinin ardindan penceresine geilir ve form modl iinde procedure ler yazilir.Her modl penceresi bir kod editr olarak kullanilir.

49

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Tanimlamalar (declarations) kisminda yapilir. Bu blmde degiskenler, sabitler ve DLL tanimlama lari yapilir. Sub ve Function'lar eklendike Procedure listesine eklenirler.

Iki Ayri Grnm


Kod editr penceresinde bir procedure ya da btn procedure'lar olmak zere iki grnm sekli vardir. Procedure View grnmnde; kod penceresinde sadece bir procedure (yordam) grnr. Full Module View grnmnde btn procedure'lar grlr. Grnmler arasi geiste modl penceresinin sol alt ksesinde yer alan dgmeler kullanilir.

Sekil 4.7 Grnmler

Bir Procedure un Yapisi


Bir Visual Basic programi ok sayida yordamdan (procedure) olusur. Yapilacak islemler birer yordam olarak tasarlanirlar. Yordamlar bir program blogu ya da bir program parasi olarak dsnle bilir. Program tasariminda yararlarini saymakla bitiremeyecegimiz yordamlarin yararlari: Yordamlar program islevlerinin; birbirinden bagimsiz kk birimlere blnmesini saglar.

51

Microsoft Visual Basic 6.0


Yordamlar program hatalarinin daha kolay bulunmasini ve giderilmesini saglar. Yordamlar olaylara baglanarak olay temelli programlamayi olusturur. Yordamlar program bloklarinin diger programlarda da kullanilmasini saglar. Yordamlar birbirlerini kolayca agirabilir. Yordamlar istenildigi kadar yinelenebilir.

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.

Bir Sub yordaminin yapisi:


[Private / Public] [Static] Sub yordam adi (argmanlar) Deyimler End Sub Yordam alistirildiginda Sub ve End deyimleri arasinda kalan satirlar isletilir. Sub yordamlar standart modller, class modller ve form modlleri iinde yer alirlar. Sub yordamlar varsayim olarak btn modllerde Public tanimlanir. Bunun anlami bu yordamlarin uygulamanin her yerinden (diger modllerden) agirilabilmesldir. Argmanlar ise tanimlanan bir degisken gibidir. agirilan yordamdan geen degerler olarak tanimlanir. Visual Basicte yordamlar (procedure) ikiye ayrilirlar: Genel yordamlar, Olay yordamlari.

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

Microsoft Visual Basic 6.0

Sub yordam adi (arguments) - deyimlerEnd Sub

Sekil 4.8 Genel yordamlar

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

Microsoft Visual Basic 6.0


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. Yapisi: rnek: Nesne_Olay Command1_Click

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.

Bir fonksiyon yordaminin yapisi:


[Private lPublic][Statc] Function yordam adi (argmanlar) [As tip] -deyimlerEnd Sub Fonksiyonlar ayri bir yordam olarak dzenlenirler. Fonksiyonlarin kullaniminda argmanlar nemlidir.Fonksiyonlar argmanlari alirlar, bir dizi

54

Microsoft Visual Basic 6.0


islem yaparlar ve sonucu dndrrler.Sub yordamlar ile Function yordamlar arasinda farklar sunlardir: Bir fonksiyon deger dndrr ve genellikle bir esitligin saginda kullanilir. Bir sub ise belli bir isi yapar. Islemi tamamlar bir deger ya da parametre ile kullanim zorunlulugu yoktur. Function UcretHes(deger1,deger2,deger3) -deyimlerEnd Function Yapisi: Ucret=UcretHes(gun,baz,katsayi)

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

Yeni Bir Yordam Yaratma


Olay temelli gelistirilen kod yazma ortaminda bir procedure yaratmak olduka kolaydir. Bir genel yordam yaratmak. Bir olay yordami yaratmak.

55

Microsoft Visual Basic 6.0


Genel bir yordam yaratmak iin kod penceresinde genel blmne gidilir. Burada yordam yazilir. Sub DosyaGuncelle ( } -deyimlerEnd Sub Ya da bir Function yordam: Function Ikramiye (x, y) -deyimler End Function Olay yordami yaratmak ise olusturulan uygulamada yer alan nesnelerin sahip olduklari olaylarin seilmesiyle saglanir.

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

Microsoft Visual Basic 6.0


With rst .MoveNext If .EOF Then Beep MsgBox "Sonuncu kayit" .MoveLast End If End With 'alanlari doldurmak iin bir yordam agir AlanlariDoldur End Sub Fonksiyon yordamlarin kullanimi ise zaten bir agirma islemidir. cret = UcretHes(gun,baz,katsayi) agirma islemi bir modl ierisindeki yordamlar arasinda yapilir. Yani bir yordam ayni modl iindeki diger bir yordami agirabilir.Bir yordamin diger modllerden de agirilabilmesi iin Public olarak tanimlanmasi gerekir. Diger modllerdeki yordamlari agirmak iin kullanilacak szdizimi yordamin form, standart modl ya da class modlde olmasina gre degisir.

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

Microsoft Visual Basic 6.0


Diger Formlardaki Yordamlari agirmak
Diger bir formun modlnde yer alan yordami agirmak iin formun adi ve yordam belirtilir. Call Form1.DosyaGonder (argmanlar)

Class Modllerindeki Yordamlari agirmak


Diger bir class modlnde yer alan yordami agirmak iin da Class modlnn adi ve yordam belirtilir. Dim ClassModl as New Class1 ClassModl.DosyaGnder

Standart Modllerdeki Yordamlari agirmak


Diger bir standart modlde yer alan yordami agirmak iin ise modln adi ye yordam belirtilir. Modle2.DosyaGnder (argmanlar) Eger yordami adi uygulama iin de tek (unique) belirtilmesine gerek kalmadan yordamin adi yazilir. ise modl adinin

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

Microsoft Visual Basic 6.0


Asagidaki procedure ise tipik olarak bir z-yineleme islemini gereklestirir. Fonksiyon istenilen faktriyel sayisini hesaplamak iin belli sayida kendini agirir. Function Faktryel(N) If N <= 1 Then Faktryel=1 Else End If 'N>0 ise tekrar agir. Faktryel = Faktryel (N - 1) * N End Function z-yinelemeli prosedrler etkin bir kullanim saglarlar. Ancak bu prosedrlerin iyi bir sekilde test edilmesi gerekir. zellikle bellek kullanimi bakimindan test edilmeleri gerekir. Aksi takdirde kullanimda sorunlar olusabilir.Bunun iin: Gereksz degisken tanimlamalari nlenmelidir. Variant tipli degisken disinda bir degisken kullanilmalidir. ' sonuna ulasma

Kod Yazma Kurallari


Buraya kadar bir Visual Basic programinin yapisini ve kodlanmasini temel olarak grendik.Bu konuda ise bir prosedrn kod editrnde yazilirken kurallar ve kullanilabilecek olanaklar yer almaktadir.

Otomatik Kod Tamamlama


Otomatik kod tamamlama program yazmayi sanki bir "bosluklari doldurun" formu gibi kolaylastirmistir. Kod szckleri yazildika zellikler, metotlar kendiliginden bir liste olarak karsiniza gelir. Buradan istediginizi seebilir ve kodu yazmaya devam edebilirsiniz. Otomatik tamamlama seenekleri Options iletisim kutusunda yer alan Editr sekmesinden dzenlenir. Kod iinde kontroln adi girildiginde AutoListMembers zelligi bir liste ile olasi zellikleri grntler. zelligin ilk harflerinden birka tane yazarak ya da listeden seerek istenilen zellik seilmis olur. Seilen eleman TAB tusuna basilarak program satirina alinir.Otomatik tamamlama zellikle kullanilan nesnenin zellikleri ve metotlari bilinmiyorsa ise yarar.

59

Microsoft Visual Basic 6.0

Sekil 4. 9 Visual Basic ortam dzenlemeleri

KOD EDITR DZENLEME SEENEKLERI


Kod Dzenlemeleri: Auto Syntax Check Require Variable Declaration Auto List Members Auto Ouic k Info Auto Data Tips Auto Indent Tab Width Bir kod satiri girildikten sonra otomatik olarak dzeltir. Degiskenlerin tanimlanmasini zorlar. Bu seenekte "Option Explicit" satiri modln basina eklenir. Yazilan kod bilesenini tamamlar. Fonksiyonlar ve parametreleri hakkinda zerinde bulunulan degiskenin degeri listeler. Yazilan kod satirlarinin st satira gre ieriden Baslamasini saglar. Sekme (ieriden) baslama genisligini ayarla r.

60

Microsoft Visual Basic 6.0


Pencere Dzenlemelerl:
Drag-and-Drop Text Editing Kod penceresi, anlik ya da izleme pencerelerinde srklebirak islemlerinin yapilma sini saglar. Bir procedure ya da btn procedure'larin grnmesini saglayan grnm dzeni. Her bir procedure arasinda izgi olmasini saglar.

Default to Full Module View Procedure Separato

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.

Kod Penceresi Kisayollari


F5 F7 F2 CTRL+F CTRL+H F3 SHIFT+F3 CTRL+ DOWN ARROW CTRL+UP ARROW SHIFT+F2 CTRL+PAGE DOWN Programi alistirma. Kod penceresini gsterir. Object browser'i gsterir. Bul Yer degistir Bir sonrakini bul Bir ncekini bul Bir sonraki procedure Bir nceki procedure Tanimlamayi gster Bir alt ekrana atla

61

Microsoft Visual Basic 6.0


CTRL+PAGE UP CTRL+SHIFT+F2 CTRL+HOME CTRL+END CTRL+RIGHT ARROW CTRL+LEFT ARROW END HOME CTRL+Z CTRL+Y CTRL+DELETE TAB SHIFT+TAB CTRL+SHIFT+F9 SHIFT+F10 Bir yukari ekrana atla Son konuma git Modln basina git Modln sonuna git Bir szck saga Bir szck sola Satirin sonuna Satirin basina Geri al Bulunulan satin sil Szcg sil Bir sekme ieri Bir sekme disari Btn breakpointleri temizle Kisayol mensn listele

Men Kisayollari
Print Undo Paste Delete Find Find Next CTRL+P CTRL+Z CTRL+V DEL ya da DELETE CTRL+F F3

62

Microsoft Visual Basic 6.0


Replace Indent Outdent List Properties/Methods List Constants Quick Info Parameter Info Complete Word Defnition Last Position Object Browser Immediate Wlndow Project Explorer Properties Window Step Into Step Over Run To Cursor Quick Watch Toggle Breakpolnt Clear All Breakpoints Start Break Shortcut menu CTRL+H TAB SHIFT+TAB CTRL+J CTRL+SHIFT+J CTRL+I CTRL+SHIFT+I CTRL+SPACEBAR SHIFT+F2 CTRL+SHIFT+F2 F2 CTRL+G CTRL+R F4 F8 SHIFT+F8 CTRL+F8 SHIFT+F9 F9 CTRL+SHIFT+F9 F5 CTRL+BREAK SHIFT+FIO

63

Microsoft Visual Basic 6.0


New Project pen Project Save Form Save Form As Full Compile Property Pages Add File CTRL+N CTRL+O CTRL+S CTRL+A CTRL+FS SHIFT+F4 CTRL+D

Koda Aiklamalar Eklemek


Yazilan kod satirlarin hakkinda (nce ya da sonra) bir aiklama yapmak iyi bir aliskanliktir. Visual Basic'te aiklama yapmak iin tek tirnak kullanilir. bu bir aiklamadir. Dim A As Integer ' bu da bir aiklamadir. Bu satirlar Visual Basic derleyicisi tarafindan isletilmezler. Sub bilgial() Bu yordamda ekrandan bilgi alinir. bu asamada varsayilan degerler verilir. Text1.Text = "Ne haber" ' Mesaj bitir End Sub Yukaridaki rneklerden de grldg gibi aiklamalar tam bir satir olarak ya da bir satirdaki Visual Basic deyimlerine ek olarak yapilir.

Sekil 4.10 Kodlarla aiklamalara yer vermek

64

Microsoft Visual Basic 6.0


Uzun Bir Satiri Birok Satira Blmek
Cobol ya da Fortran dilinde program yazarken (eski zamanlarda) bir program satirinin ka karakter olacagi hatta satirdaki karakterlerin konumlari bile nemliydi.Ancak simdi byle bir kisitlama olmamasina ragmen uzun kod satirlarinin takibi bakimindan; belli bir yerinden bir alt satira devam edilmesi iin satir-devam karakteri olan alt tire ( _ ) karakteri kullanilir. Bylece program satirlarinin daha anlasilabilir olmasi saglanir. Data1.RecordSource = _ SELECT * FROM Musteriler, Sipar,isler _ & WHERE Musteriler.Kodu = Siparisler.Mkodu _ & AND Siparisle.Bolge = ANADOLU

Birok Deyimin Bir Satir Olarak Bilestir ilmesi


Genellikle bir Visual Basic deyimi bir satir olarak dzenlenir. Satir sonlarinda herhangi bir sonlandirici karakter kullanilmaz.Ancak yine birden ok deyimi bir satir olarak dzenlemek istersiniz. Bu durumda satir sonu karakteri olarak iki nokta st ste karakteri kullanilir. rnek: Birok deyimin bir satir olarak birlestirilmesi Text1 .Text = Ne Haber : Red = 255 : Text1.BackColor = Red

Visual Basic'te Adlandirma


Visual Basic ile program yazmada adlandirma (naming) islemini ok yapariz. Bir degiskenin tanimlanmasi, bir Sub ya da Function'a ad vermek birer adlandirma islemidir. Visual Basic'te adlandirma kurallari: Bir harf ile baslamalidirlar. Nokta iermezler. 255 karakterden fazla olmazlar. Kontrol adlari, form adlari, class ve modl adlari 40 karakteri gemez. Bir Visual Basic deyimi adlandirmada kullanilmaz.

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

Microsoft Visual Basic 6.0


Msgbox.Visible = True hata verir.

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

Microsoft Visual Basic 6.0


Ayrica degiskenler de birbirine atanabilir: Toplam = Degerler_Toplami Ortalama = Toplam / OgrSay Adi Soyadi = "Ahmet Yilmaz" Bosluk = InStr(AdiSoyadi," ") Adi = Left(AdiSoyadi, Bosluk) Yukaridaki basit atama deyimleri disinda nesne ve zellikleri de atama deyimlerine konu olabilirler. Ogrenci = Text1.Text Text2.Text = "Ahmet Uzun"

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

Microsoft Visual Basic 6.0


Yukaridaki ifade de nce 20'den 12 ikartilir. 8 kalir. Ardindan 8'den 5 ikartilir. Ve sonu olarak 3 kalir. Uzun ya da karmasik toplama ve ikarma islemleri para para yapilabilecegi gibi parantezler iinde de yapilabilir. Sonuc = 20 (12 5) Sonuc = (20 12) 5 Yukaridaki iki ifadenin de sonucu farklidir. nk nce parantezlerin ii hesaplanir. arpma islemi de toplama islemi gibi dzdr. Sayilar sirasiyla arpilir ve toplam elde edilir. Sonuc = Sayi1 * Sayi2 Sonuc = Sayi1 * Sayi2 * Sayi3 Blme islemi degisik biimlerde yapilabilir. Normal blme islemi (floating-point division olarak bilinir) bir sayinin digerine blnmesidir. Sonu genellikle noktali bir sayidir. Sonuc = Sayi1 / Sayi2 Sonuc = 10 / 6 Sonu 1,66 ikar.Tamsayi blme isleminde ise blm sonucunun tamsayi kismi dndrlr.Bu islem \ isareti ile yapilir. Sonuc = Sayi1 \ Sayi2 Sonuc = 4 \ 3 Sonu 1 olarak ikar. Mod islemi ise blme islemindeki kalani verir. Sonu = Sayi1 Mod Sayi2

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

Microsoft Visual Basic 6.0


Isle lerin (Operatrlerin) ncelikleri
Bu blmde aritmetik islemlerin uygulanmasindan ve elde edilen sonulan aikladik. Aritmetik ifadelerde parantez kullanimi nceligi belirleyen asil faktrdr. Ancak parantez kullanilmiyorsa o zaman operatrlerin ncelikleri islemlerin sonularini etkiler. ncelik sirasi: 1. 2. 3. 4. 5. 6. s alma (^) Negatif (-) arpma ve blme (*; /) Tamsayi blme ( \ ) Mod islemi (Mod) Toplama ve ikarma (+, -)

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

Ortalama = (Not1 + Not2) / 2

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.

Arabanin bir gnlk gezisi: Sub Araba_Basla() Araba.Ileri Araba.Korna = "Daat"

69

Microsoft Visual Basic 6.0


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 zellikle yaptirilir. Iste bir siparis programi yazacaksaniz; form zerindeki bilgi alanlarindan yararlanirken veri girisi, hesaplama, kayit vb btn islemleri birer olay olarak dsnp, olayin gereklesmesinin ardindan birtakim islemler (metotlar) yapilir ve birtakim degerler kazanilir.

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

Microsoft Visual Basic 6.0


Set Picture1.Picture = LoadPicture ( "" ) Yukaridaki rneklerde ise Picture zelligi kullanilmistir.

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

Microsoft Visual Basic 6.0


End Sub Sub Bicimle2() With Text1 .Text = "Merhaba" With .Font .Name = "Arial" .Bold = True .Size = 8 End With End With End Sub Veritabani uygulamalarinda da With deyimi ile birok islem daha kolay yapilabilir.

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

Microsoft Visual Basic 6.0


odaklandiginda dzenlenir. (odaklanma olayi olustugunda) textbox'in zemin rengi

Sub Tex1.GotFocus () Text1.BackColor = RGB(255,0,0) End Sub Sub Tex1.LostFocus () Text1.BackColor = RGB(0,0,0) End Sub

Veri Elemanlarinin Tanimlamalari


Bir programda geici olarak verilerin temsili ve degerlerin saklanmasi iin degiskenlere gereksinim duyulur.rnegin ok sayida degeri birbiriyle karsilastirmak ya da zerlerinde esitli hesaplamalar yapmak iin ekrandan alinan verileri; A, B, C gibi degiskenler olarak temsil etmek gibi. Iste bu nedenle birok programlama dilinde oldugu gibi Visual Basic'te de geici degerlerin saklanmasi iin degiskenler (variables) kullanilir. Degis kenlerin mutlaka bir adi ve tipi vardir. Msteri adini temsil iin ADI degiskeni. Msteri gurubunu temsil iin GRUBU degiskeni. Alis fiyati iin AFIYAT degiskeni gibi.

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

Microsoft Visual Basic 6.0


Yapisi: Dim De gisken [As Tip] Dim deyimi tanimlama deyimidir.Genellikle modln ya da procedure'in basinda ver alir. Degisken ise bilginin adini gsterir. rnegin Toplam bir degisken adidir. Tip ise degiskenin tipini gsterir. Bir degisken i erdigi veri bakimindan farkli zelliklere sahip olabilir. Tamsayi ya da gerek sayi gibi. Bir degiskenin zellikleri: Bir harf ile baslar. En ok 255 karakterden olusur. Nokta iermez. Kapsama alani iinde tek olmalidir. Dim A As Integer A=5 A=A+3 Bir degiskeni tanimlamak iin degisik yollar da vardir: 1.Degiskeni bir formun, standart ya da class modlnn Declarations blmnde tanimlamak.Bu tanimla ma ile degiskene formun ya da modln her yerinden erisilebilir. 2.Bir degiskeni Public szcg tarafindan kullanilabilir yapar. ile tanimlamak onu tm uygulama

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

Microsoft Visual Basic 6.0


Degisken Tanimlamada Hatalar
Bir degisken adi hatali yazilmamalidir.Bir degisken adi bir procedure adi ile ayni olmamalidir.

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.

Sekil 4.12 Aik tanimlamaya zorlama

75

Microsoft Visual Basic 6.0


Aik T animlamaya Zorlama
Daha nce varsayim tanimlamalardan sz ettik. Bu tr tanimlamalara kapali (implicit) tanimlama denir. Bununla birlikle degiskenlerin kapali olarak tanimlanarak kullanilmasinin esitli problemlere yol aabilecegini de belirtmistik. Iste bu nedenle degiskenlerin aik olarak tanimlanmaya zorlanmasi saglanabilir. Bu tanimlamanin (zorlamanin) ardindan kod iinde tanimlanmamis bir degiskenin kullanimini Visual Basic derleyici "tanimsiz degisken" olarak yakalayacak ve size bildirecekt ir. Degiskenleri aik olarak tanimlamak iin: Bir form, class ya da standard modl'n Declarations kesiminde su deyimlere yer verilir: Options Explicit Yada; Tools mensnden Options komutu seilir. Ardindan Editr sekmesinden Require Variable Declaration 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.

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

Microsoft Visual Basic 6.0


kullandiginizi sanirken, Visual Basic iki degisken kullanacaktir ve hesaplamalarda yanlisliklar olusacaktir. Bu durumda ciddi programlarda kapali tanimlamalara izin vermeyin! "KkDeger" = "KucukDeger" "deme" = "Odeme" ? ?

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"

Degiskenler Nerede Tanimlanacak?


Bir Visual Basic programinda ok sayida degisken kullanilir. Bu degiskenler ok sayida modlde ya da procedure'da tanimlanabilir. Peki hangi degisken nerede tanimlanacak? Bir degiskenin modl iinde mi yoksa procedure iinde mi tanimlanacagi kapsama alani kurallarina gre kararlastirilir.

77

Microsoft Visual Basic 6.0


Proje: Global Modller Modul1 Modul2 Modul3 Modl n Form2 Modl Form1 Modl Procedure Procedure

Sekil 4.13Modllerin Kapsam Alani

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

Microsoft Visual Basic 6.0


kullanilmasini saglar. Genellikle Temp ya da Geici gibi ekleri de bu yzden alirlar. TempToplam GecTop GecDeg1 AraToplam Yerel degiskenler Dim ya da Static deyimi ile tanimlanirlar: Dim AraToplam As Integer Dim Mesaj As Variant Geici alarak tanimlanan yerel degiskenler procedure iinde yapilan ve kullanilan hesaplamalar iin dealdir. Eger bir degiskene uygulama boyunca i diger zamanlarda da erisilecekse (degisken kullanilacaksa) o zaman Dim ile kullanilmasi daha iyi olur.

Yerel Degiskenlerin Static Olarak Tanimlanmasi


Static deyimi ile tanimlanan yerel degiskenler uygulama alistigi srece bellekte kalirlar ve istenildigi zaman kullanilirlar.Dim deyimi ile tanimlanan yerel degiskenler iin sadece procedure alistigi sre iinde kullanilirlar. Static Degisken Tanimlama: Static Degisken (As tip] Static deyimi degiskenin bellek alaninin kalici olmasini saglar. Degisken ise bilginin adini gsterir. Static AraToplam As Integer Static Mesaj As Variant

Bir Modl Iinde Kullanilan Degiskenler


Bir modl dzeyi degiskeni varsayim olarak modl iindeki btn procedure'lerde geerlidir. Modl-dzey degiskenler Private deyimi ile tanimlanirlar. Private Aratoplam As Integer

Modl dzeyinde Private ile Dim arasinda bir fark yoktur. Ancak Private deyimi zellikle modl dzeyini vurgular.

Btn Modller Iinde Kullanilan Degiskenler 79

Microsoft Visual Basic 6.0


Bir modl dzeyi degiskenini btn diger modllerde de geerli kilmak iin Public deyimi kullanilir. Bir public degiskenin degeri uygulama iindeki btn modllerde geerlidir. Bu degiskenler btn modllerde kullanilabilir ya da deger atanabilir. Public degiskenler de diger modl dzeyi degiskenler gibi modln st kismindaki Declarations kesiminde tanimlanirlar. Public Aratoplam As Integer NOT: Bir Public degisken bir procedre iinde tanimlanamaz. Sadece modln declarations kesiminde tanimlanir.

Sekil 4.14 Public degiskenler

Btn Yerel Degiskenlerin Static Olarak Tanimlanmasi


Bir yordamdaki btn yerel d egiskenlerin Static yapilmasi iin Static deyimi fonksiyonun basina konur. Static Function Toplambul( miktar) Bu durumda btn yerel degiskenler; Static, Dim, Private gibi tanimlama deyimlerine bakilmaksizin Static olurlar. Bylece bu degiskenler uygulamanin sonuna kadar her zaman ve her yerden kulla nilabilirler.

Ayni Degisken Adinin Birok Modlde Kullanilmasi


Farkli modllerde bulunan Public degiskenler ayni adi kullaniyorlarsa bunlarin modl adlari ile birlikte ayri ayri kullanmak mmkndr.

80

Microsoft Visual Basic 6.0


Birinci modl: Form1 Public Toplam As Double Ikinci modl: Modl1 Public Toplam As Double Modl1.Toplam Form1.Toplam modl1 iindeki Toplam degiskeni. form1 iindeki Toplam degiskeni.

rnek: Ayni Degisken Adinin Birok Modlde Kullanilmasi.

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

Microsoft Visual Basic 6.0


Module1' in iindeki End Sub Degeri gsterir.

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.

Degisken ve Procedure Adlarinin Ayni Olmasi


Private ya da Public olarak tanimlanan modl dzeyi degiskenler procedure adlariyla alistiklarinda soruna yol aarlar. Modl iindeki bir degisken procedure adi ile ayni adi alamaz.Ancak Public procedure'lar, Type degiskenler ve diger modller iindeki degiskenlerle ayni adi alamazlar.

Public ve Loca l Degiskenler


Ayni degisken adlarinin kullanimina farkli kapsamlarda da karsilasilir. rnegin Aratoplam adli bir Public degisken tanimlanir.Ardindan da bir procedure iinde yine Aratoplam adli bir yerel degisken tanimlanir. Bu tanimlamanin ardindan procedure iinde Aratoplam adli degiskene erismek istendiginde yerel degiskene erisilir. Procedure disindan erisim s e i Public degiskene olacaktir. Ayrica modl dzeyindeki degiskene procedure iinden erisilmek istenirse modln adi ile birlikte kullanilabilir. Public Aratoplam As Integer

Sub Test() Dim Aratoplam As Integer Aratoplam = 2 ' Aratoplam degiskenine 2 degeri verilir. MsgBox Form1.Aratoplam ' Form1.Aratoplam degeri 1. End Sub

82

Microsoft Visual Basic 6.0


Private Sub Form_Load () Aratoplam = 1 ' Form1.Aratoplama End Sub Private Sub Command1_Click() Test End Sub 1 degeri ver.

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

Static Degisken Tanimlama:


Static Degisken [As tip] Static deyimi degiskenin bellek alaninin kalici olmasini saglar. Degis ken ise bilginin adini gsterir. rnegin "Toplam" bir degisken adidir. Tip ise degiskenin tipini gsterir. Bir degisken ierdigi veri bakimindan farkli zelliklere sahip olabilir. Tamsayi ya da gerek sayi gibi. rnegin asagidaki yordam bir nceki toplam degere yeni toplam degeri eklenir. Functlon ToplamBul (Miktar) Static Satadet Satadet = Satadet + miktar ToplamBul = Satadet End Function Eger Satadet, Static yerine Dim olarak tanimlansaydi toplam degeri eski toplam degerine eklenmezdi ve ToplamBul fonksiyonu agirilan degeri geri dndrrd.Ancak ayni sonu Satadet degiskeninin modl dzeyinde tanimlanmasiyla da olabilirdi.

83

Microsoft Visual Basic 6.0


Sabitler
Degiskenlerin aksine sabitler (constant), sahip olduklari degerler ile kullandigimiz bilgi tanimlamala ridir.zellikle belli (bilinen) degerlerin kullanimini saglar. Kodlamayi ve kodun okunabilirligini kolaylastirir.

Bir sabit su biimde tanimlanir:


[Public | Private] Const adi [As tip] = Ifade ya da deger rnek: Const Pi = 3.14159265358979 Const Katsayi = 2.5 Public Const MaxOgrSay = 999 Const AcilisTar = # 1/1/98 # Const ElemanAdi = "Onur Trkyilmaz" Sabitlerin degeri bir sayi ya da karakter olabilecegi gibi bir ifade de olabilir. Const Oran = AitOran * 2 Kullanici tanimli sabitlerin kapsami da yine degisken kapsami kurallarina benzer: Bir procedure iinde tanimlanan sabit o procedure iinde kullanilir. Bir sabitin btn procedurelar iin geerli olmasi iin modln Declarations kesiminde tanimlanmasi gerekir. Bir sabitin uygulama boyunca geerli olmasi iin sabit bir Standart modln Declarations kesiminde tanimlanir. Ayrica Const deyiminden nce Public deyimi kullanilir.

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.

Sabit kullanmanin yararlari:


Uzunca tanimlanan verilerin kolayca kullanilmasini saglar. Belli oranlarin, degerlerin kolayca kullanilmasini saglar. Programin degisik versiyonlarini tanitan sabitler sayesinde programin kodlarindan daha kolay yararlanilir.

84

Microsoft Visual Basic 6.0


Sabit Tanimlamalarinda zlemez Ifadeler
Bir sabit tanimlanirken diger bir sabitin ona gre tanimlanmasi hataya yol aar. rnek: Birinci modlde: Public Const Deger1 = Deger2 + 7 Ikinci modlde: Public Const Deger2 = Deger1 / 2 Yukaridaki rnekte iki sabit birbirlerini ieren bir tanimlamaya sabittir. Bu durumda bir "circular" hata olusur. Bu nedenle sabitler genellikle bir modl olarak hep bir arada tanimlanmalidirlar.

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.

Option Compare Deyiminin Kullanilmasi


Option Compare deyimi string(karakter bilgi) islemlerinde yapilacak olan arsilastirmayi dzenler. Yapisi: Option Compare {Binary | Text | Database}

85

Microsoft Visual Basic 6.0


Option Compare deyimi string bilgilerin nasil (Binary, Text, ya da Database) karsilastirilacagini belirtir. Varsayilan karsilastirma yntem i Binary'dir. Option Compare Binary karsilastirma karakterlerin ikili degerlerine gre yapilir: A<B<E<Z<a<b<e<z<<<<<< Option Compare Text karsilastirma ynteminde ise byk kk harf duyarli olmayan (case-insensitive) siralama uygulanir. Bu yntemde sistemin ayarlari kullanilir. (A=a) < (= ) < (B=b) < (E=e) < (= ) < (Z=z) < (= ) Option Compare Database yntemi ise sadece Microsoft Access'de uygulanir.Bu yntemde veritabani kimlik bilgisine gre siralama yapilir.

Sekil 4.15 Options deyimleri

Option Base Deyimi


Option Base deyimi ise istege bagli olarak kullanilabilir. Deyimin amaci dizi tanimlamalarinda dizinin alt sinirini degistirmektir. Normalde bir dizi sifirinci elemandan baslayarak tanimlanir.Ancak Option Base 1 deyimi ile 30 ile 40 arasi dizinleri (indeksi) arasi bir dizi yaratilabilir: Modl tanimlama kesimi: Option Base 1 Dim Dizil (3 To 45) As Integer Dim Aylar (1 To 12) As String

86

Microsoft Visual Basic 6.0


Daha fazla bilgi iin bakiniz: Bu blmde yer alan: "Diziler".

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

Visual Basic ile tanimlanan degisken tipleri sunlardir:


Tip Integer Long Single Double Currency String Bellek alani 2 bayt 4 bayt 4 bayt 8 bayt 8 bayt 1 karakter bir bayt Deger araligi -32,768 to +32,767 (yaklasik) +/ - 2 milyar +/ - 1E-45 to 3E38 +/-5E-324ta 1.8E308 +/ - 9E14 Sabit uzunluklu veriler iin 65,400 karakter. 2 milyar karakter dinamik veriler iin 0 to255 True ya da False 1/1/100 to 12/31/9999 N/A bayt her karakter iin N/A

Byte Bootelan Date Object Variant

1 bayt 2 bayt 8 bayt 4 bayt 16 bayt +1

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

Microsoft Visual Basic 6.0


Static ismi As String Public Odeme As Currency Bir tanimlama deyimi ile ok sayida degisken de tanimlanir: Private Private I As Integer, Toplam As Double ismi As String, Odeme As Currency

Sayisal Veri Tipi


Visual Basic'te sayisal veri tipleri sunlardir: Integer, Long, Single, Double, Currency. Long (long nteger), Single (single-precision floating point), Double (doubleprecision floating point), ve Currency. Sayisal veri tipi variant ve diger veri tiplerine gre daha az veri sakla ma alanina gereksinim duyulur. Eger bir degisken 100 ile 300 arasinda bir deger aliyorsa onu Integer olarak tanimlayabilirsiniz.Eger degerin ondalik noktasi varda 3,5 gibi; o zaman Long tanimlamak gerekir. rnegin dng degiskenleri genellikle Integer tanimlanir. Single ve Double veri tipleri ise noktadan sonra drt rakama sahip onbes basamaklik bir sayinin kullanilmasini saglar.

Byte Veri Tipi


O ile 255 arasinda bir deger ierir. Eger degisken ikili (binary) veri ieriyorsa o zaman Byte dizi ola rak tanimlanabilir. Dim SiraNo As Byte

String Veri Tipi


Karakterlerden olusan veriler String olarak tanimlanir. rnegin msteri adi gibi bir bilgi String ola rak tanmlanmalidir.String veriler sayilari ierebilir ancak sayisal isleme giremezler. Degisken uzunluklu bir string tanimlama: Bilgi As String Degisken (degisir) uzunluklu bir string tanimlamak iin sadece bilginin (degiskenin) string oldugu belirtilir.

88

Microsoft Visual Basic 6.0


Private S As String String degiskenle re deger atamak iin ift tirnak karakteri yaygin olarak kullanilir: S = " Ugur Degirmenci " Varsayim olarak bir string degisken uzunlukludur. Bylece string deger istenildigi kadar uzun szckleri ierebilir. Bir diger string tanimlamasi ise sabit uzunluklu degiskenlerdir.

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

Microsoft Visual Basic 6.0


String Verilerle alisma
String islemlerinde birlestirme operatr (concatenation operator) yaygin olarak kullanilir. Birlestirme isleci iki ya da daha ok string veriyi birlestirmeyi saglar. Birlestirme islemi & (ampersand) simgesi ile yapilir. Bu simge araciligiyla bir string veri digeri ile birlestirilebilir. rnegin kodu ile adini birlestirmek gibi.

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$

Boolean Veri Tipi


Eger bir degisken sadece true/false, yes/no gibi iki durumlu bir degeri ieriyorsa degisken Boolean olarak tanimlanir. Boolean degiskenlerin varsayim degeri False'dir. rnek: Dim Kaldi_Geti As Boolean Dim Cinsiyet As Boolean Dim Bayrak As Boolean

Date Veri Tipi


Tarih ve zaman degerleri Date veri tipiyle tanimlanan degiskenlerle saklanir. Bunun yani sira Variant veri tipi de tarih ve zaman verisi ierebilir. Dim Tarih As Date

90

Microsoft Visual Basic 6.0


Object Veri Tipi
Object veri tipi 32-bit {4 byte) olarak saklanir ve bir nesnenin adresini ierir. Dim objDb As Object Set objDb = OpenDatabase ( "c: \my documents\adresler.mdb") Bir object degiskenleri zel olarak tanimlanirlar ve bu class'Iar Object Browser'da listelenir.

rnek: Nesne tanimlama Dim xl Set xl As Object = GetObject ("c: \my documents\butce.xls")

Veri Tiplerinin Dnstrlmesi


Visual Basic ok sayida dnstrme fonksiyonuna fonksiyonlar degerlerin tiplerinin birbirlerine evrilmesini saglar. Fonksiyon Cbool Cbyte Ccur CDate CDbl CInt CLng CSng CStr CVar CVErr Dnstrr Boolean Byte Currency Date Double Integer Long Single String Variant Error sahiptir. Bu

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

Microsoft Visual Basic 6.0


Variant Veri Tipi
Variant veri tipi btn verileri (her trdeki) saklayabilen bir veri tipidir. Eger herhangi bir veri tipini Variant tipli bir degiskene atiyorsaniz herhangi br dnsme gereksinim duyulmaz.Bir Variant veri ierigine bakilmaksizin 16 byte alan kaplar. Bununla birlikte Variant veri tipi, tipleri tanimlanma yan degiskenlerin varsayim tipini olusturur. Variant degisken iindeki verinin tipini grenmek iin VarType fonksiyonu kullanilir.

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

Microsoft Visual Basic 6.0


TamsayiDe gisken = 123 StringDegisken = " Cem Yazici " TarihDegisken = #22/06/1983# Kontrol = VarType (TamsayiDegisken] ' 2 dner. Kontrol = VarType (TarihDegisken) ' 7 dner. Kontrol = VarType (StringDeger) ' 3 dner. Asagidaki rnekte ise ekrandan alinan bir degerin tipi belirlenir: Private Sub Command1_Click() Dim Defter, 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" Case 4 : MsgBox "Single-precision floating-point sayi" Case 5 : MsgBox "Double-precision floating-point sayi" Case 6 : MsgBox "Para birimi" Case 7 : MsgBox "Tarih" Case 8 : MsgBox "String" Case 9 : MsgBox "Nesne" Case 10 : MsgBox "Hata" Case 11 : MsgBox "ikili" Case 12 : MsgBox "variant" Case 13 : MsgBox "data access object-veritabani nesnesi" Case 13 : MsgBox "onlu sayi" Case 14 : MsgBox "Byte" Case 15 : MsgBox "User-defined veri ierir" End Select End Sub rnegin bir variant degiskene bir onlu sayi atanirsa Variant degisken iinde bu deger Double olarak yer alir.Eger byk ve duyarli bir sayiya gereksinim duyulmuyorsa o zaman Variant veri Single ya da Integer veriye dnstrlr. If VarType(VarDeg) = Then X = CSng(X) Siglea evirme

93

Microsoft Visual Basic 6.0


Variant Iinde Saklanan Sayisal Veriler
Bir Variant degisken sayisal degerler de ierebilir. Visual Basic sayilari en az ver kaplayacak biimde Variant degiskenlerde saklar. rnegin eger bir tamsayi deger bir variant degiskende saklanirsa sayi Integer olarak saklanir. Eger sayi daha bykse sayiya gre Long ya da Double deger kullanilir. Variant degisken iindeki sayisal degerle hesaplama yapilabilir. Bunun disinda diger zel tiplerin variant olarak saklanmasi iin Visual Basicin sahip oldugu ok sayida fonksiyon kullanilir. rnegin degerin Currency tipine dnstrlmesi iin CCur fonksiyonu kullanilir: Haftalik = CCur(Saat * Saatcreti) IsNumeric fonksiyonu bir Variant degiskenin ierdigi degerin geerli bir sayisal deger olup olmadigini belirlemek iin kullanilir. Do Sayi = InputBox( Bir sayi girin ) Loop Until IsNumeric(Sayi) MsgBox Sayinin karakk: & Sqr(Sayi)

Variant Iinde String Deger Saklama


String degerlerin Variant degiskenler iinde saklanmalari bir tip sorunu yaratmaz. Ancak arti (+) karakterlerinin kullanilmasi bazen belirsiz durumlar yaratabilir. rnegin iki Variant degisken de sayisal deger ieriyorsa o zaman + operatr iki degerin toplanmasini saglar. Eger iki variant degiskenin ierigi de String ise o zaman iki degerin + ile bir araya getirilmesi onlarin karakter olarak birbirine eklenmesini saglar. Ancak eger degerlerden birisi sayi ise Visual Basic sayiyi String olarak dnstrmeye alisir. Eger basarili olursa iki degeri toplar. Basarili olmazsa "Type mismatch error" hatasi verir. Bu nedenle String isleminde ierige bakilmaksizin basarili olmak iin & operatr kullanilma lidir. rnek: String birlestirme Sub Form_Click() Dim X, Y X = "4" Y = "5" Print X + Y, X=4 Print X + Y,

X & Y X & Y

94

Microsoft Visual Basic 6.0


Yukaridaki procedure su sonulari retir: 45 9 45 45

Variant Iinde Saklanan Tarih ve Zaman Degerleri


Variant degiskenler Date ve Time degerleri de saklarlar. Birok fonksiyon tarih ve zaman degeri retir. Ayrica tarih ve zaman zerinde aritmetik isle mler de yapilabilir. Bu nedenle variant degis kenler iinde yer alan tarih ve zaman verilerinin durumuna bakalim: rnek: Tarih ve zaman bilgilerinin kullanimi Private Sub Form_Click() Dim suan, geengn, geensaat, geendakika degerler variant olarak tanimlanir. suan = Now ' su anki tarihi ve zamani verir. geengn = Int(DateSerial (Year (suan) + 1, 1, 1) suan geensaat = 24 - Hour(suan) geendakka = 60 - Minute(suan) Print geengn & " yilda geen gn." Print geensaat & " gnde geen saat." Print geendakika & " saatte geen dakika." End Sub Tarih ve zaman verileri zerinde matematik islemler de yapilabilir. Toplama ve ikarma islemi ile gnler ve s aatler toplanabilir ve ikarilabilir. Variant degiskenlere saklanan tarih degerleri January 1, 0100 ile December 31, 9999 arasindadir. Tarih ve zaman degerlerinin kullaniminda sayi karakteri de kullanilabilir. Asagidaki rnekte geerli tarih degerleri yer almaktadir: Tarih = #3 6 - 98 13:20# Tarih = #March 21, 1998 3:45am# Tarih = #Apr - 2 98# Tarih =#12 January 1999# Bir variant degiskenin ierdigi degerin geerli bir tarih degeri olup olmadigi IsDate fonksiyonu ile anlasilir. Ardindan Cdate fonksiyonu ile deger tarihe evrilir. Asagidaki rnekte bir metin kutusu iinde yer alan tarih verisi test edilmekte ve kullanilmaktadir: Dim Tarih, geengn If IsDate (Text1.Text) Then Tarih = CDate(Text1.Text) geengn = DateSerial (Year (Tarih) + _

95

Microsoft Visual Basic 6.0


1, 1, 1) - Tarih Text2.Text = geengn & " yil iinde geen gn." Else MsgBox Text1.Text & " geersiz bir tarih." End If

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

Microsoft Visual Basic 6.0


Null degeri, Variant disinda bir degiskene atanirsa o zaman hata olusur. Variant deger dndren btn fonksiyonlardan Null degeri dndrlebilir.

Veri Tiplerinin Degisken Adlariyla Kullanimi


Degiskenlerin tiplerinin normalde degisken adlariyla hibir ilgisi yoktur. Ancak daha kontroll olmak bakimindan degisken adlari tiplerine gre de verilebilir. Yaygin olarak kullanilan kisaltmalar Degisken Tipi Array Currency Double Integer String Variant Kisaltma a cur dbl int str var rnek aAylar curTutar dblToplam intSira strAdiSoyadi varTarih

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

Microsoft Visual Basic 6.0


Dizi tanimlama:
Dim dizidegiskeni (eleman sayisi) As tipi Dizi degiskeni dizinin adini gsterir.

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.

Bir Dizinin Tanimlanmasi


Bir diziyi tanimlamak iin yol vardir. Bu tanimlamalar dizi elemanlari iin gereksinim duyulan kapsama alanina gre kullanilabilir. Public dizi tanimlama Modl dzey dizi tanimlama Yerel dizi tanimlama String ' 12 elemanli dizi.

Dim aylar(11) As

Diziler tanimlandiktan sonra belli islemler yapilir. Bunlar: Veri doldurma Verilere erisme

98

Microsoft Visual Basic 6.0


Veri doldurmak ya da erismek iin dng yapisi kullanilir. Dng kontrol degiskenleri dizi elemanlarinin indekslerini temsil ederek sirayla elemanlarin kullanilmasini saglar. Asagidaki rnekte 11 elemanli bir diziye; 0 dan baslayarak 10'a kadar deger girilmektedir. For i = 0 to 10 Dizi(i) = Inputbox ("dizinin" & i & "elamanini girin"; Next i Bir dizi iindeki veri elemanlari ayni veri tipine sahiptir. Dizideki elemanlar her trde olabilirler. Eger veri tipi variant ise dizi elemanlari farkli tiplerde olabilir. Dizi tanimada bir diger konu da dizinin kapsamidir. Kapsam ayni degiskenlerde oldugu gibi dizi elemanlarinin kullanabilecekleri alani da gsterir: Public bir dizi yaratilacaksa Declarations kesiminde Public deyimi kullanilir. Modl dzeyinde dizi yaratilacaksa modln Declarations kesiminde Private deyimi kullanilir. Yerel bir dizi yaratilacak o zaman Procedure iinde Private deyimi kullanilir.

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

Microsoft Visual Basic 6.0


Dinamik bir dizi tanimlamak:
Bir dinamik dizi tanimlamak iin modl dzeyinde Public ya da Dim deyimi kullanilarak dizi tanimlanir. Eger dizi procedure dzeyinde kullanilacaksa zaman procedure dzeyinde Static ya da Dim deyimi kullanilir. Bir dinamik dizi bos olarak tanimlanabilir: Dim DinamikDizi () Ardindan istenildigi zaman (daha sonra) dizinin boyutlan degistirilebilir. Bu islem iin Redim deyimi kullanilir: ReDim DinamikDizi (10) ya da daha sonra; ReDim DinamikDizi (10+x) ReDim deyimi sadece bir procedure iinde kullanilir. Dim vs Static deyimlerinden farkli olarak ReDim deyimi isletilebilen bir deyimdir. ReDim deyimi uygulamanin alisma zamaninda dizinin yeniden boyutlandirmasini saglar. ReDim deyiminde sabit olarak dizi eleman sayisi ya da dizinin alt ve st siniri belirtilir. ReDim DinamikDizi (4 to 12) rnegin Matris1 adli dinamik dizi modl dzeyinde tanimlanir: Dim Matris1() As Integer

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

Microsoft Visual Basic 6.0


iin ReDim deyimi ile Preserve deyimi kullanilir. Ayrica dizinin st sinirini gstermek iin de UBound deyimi kullanilir. ReDim Preserve DinamikDizi (UBound (DinamikDizi) + 1) Yukaridaki deyim ile dinamik dizinin eleman sayisi artirilir. ok Boyutlu Diziler Bir grup veri yapisi olan diziler belli sayida elemani iermenin yani sira birden ok boyuta da sahiptirler. Bunun anlami ok sayida bilginin bir arada kullanilabilmesidir. Dim aylar_satislar (11,4) As String Yukaridaki dizi ile 12 elemanli satislarin yani sira bes rnn satis bilgileri de takip edilir.Bu durumda dizi tanimlamalari: aylar_satislar (0,0) ' Birinci ayda birinci rnn satis rakami aylar_satislar (0,1) ' Birinci ayda ikinci rnn satis rakami aylar_satislar (0,2) ' Birinci ayda nc rnn satis rakami

Sekil4.15 Iki boyutlu dizi

Dizilerin Alt ve st Sinirlariyla Tanimlanmasi


Diziler bazen verilere daha uygun olarak kullanilmak istenirler. rnegin bir matris seklinde belli bir boyutta verilerin kullanilmasi gibi. Yillar_Satislar (1990 to 2000, 1 to 5) As Double

101

Microsoft Visual Basic 6.0


Yukaridaki tanimlanan bes tane rnn 1990 yilindan 2000 yilina kadar olan satis bilgilerini tutar. Yine ok boyutlu dizilerinde alt ve st sinirlariyla daha aik tanimlanmasi mmkndr. rnegin asagidaki dizi 10 X 10 toplam yz elemanli ve iki boyutlu bir dizidir: Static Matris(9, 9) As Double Boyutlardan birisi ya da ikisi alt boyutlariyla tanimlanabilir: Static Matris( 1 To 10, 1 To 10) As Double

Diger Dizileri Ieren Diziler


Fakli veri tiplerinden olusan dizileri ieren bir Variant tipli bir dizi yaratilabilir. Asagidaki rnekte nce iki dizi yaratilmaktadir. Bu dizilerden birisi string digeri tamsayi degerleri iermektedir. Ardindan nc bir dizi yaratilir ve bu dizileri iine alir. Private Sub Command1_Click() Dim TamsayiX As Integer ' saya tanimlanir. ' tamsayi dizi tanimlanir. Dim SayaA (5) As Integer For TamsayiX = 0 To 4 SayaA(TamsayiX) = 5 Next intX 'string dizi tanimlanir. Dim SayaB(5) As String For TamsayiX = 0 To 4 SayaB(TamsayiX) = "Merhaba" Next TamsayiX Dim DiziX(2) As Variant ' yeni iki elemanli dizi tanimlanir. DiziX(1) = SayaA() ' Diziyi diger dizi ile doldur. DiziX(2) = SayaB() MsgBox DiziX (1) (2) ' Dizinin elemanlarini gster. MsgBox arrX (2) (3) End Sub

102

Microsoft Visual Basic 6.0


Dizilerde Option Base Deyimi Kullanimi
Option Base deyimi modln genel kisminda kullanilir ve bir dizinin indeksinin alt sinirini belirler. Yapisi: Option Base {O l 1}

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

Microsoft Visual Basic 6.0


st= UBound(Dizi2) ' 10 dndrr.

Kullanici Tanimli Veriler


Kullanici tanimli veri (user defined data type) farkli tiplerdeki verileri ieren zel bir birlesik veri tipidir. Bu degiskenlere tip degiskenleri de denir. zellikle bir birim veri tanimi iinde farkli tipteki degiskenleri kullanmak istiyorsak kullanici tanimli veri tipini kullanabiliriz. Kullanici tanimli veri tipi yaratmak iin Type deyimi kullanilir. Bu deyim modln Declarations kesiminde yer alir. Kullanici tanimli veri tipleri Private ya da Public olarak tanimlanabilirler. Private Type MyDataType Yada; Public Type MyDataType

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

Bir Dizi Ieren Kullanici Tanimli Tipler


Bir kullanici tanimli degisken sabit uzunluklu ierebilir.rnegin grenci tip degiskeni iinde notlar dizisi. Tanimlamalar Private Type grenci bir diziyi de

104

Microsoft Visual Basic 6.0


AdiSoyadi As String Blm As String Notlar (9) As Integer Durumu As String End Type Ayrica bir dinamik dizi de tip degiskeni iinde yer alabilir: Tanimlamalar Private Type grenci AdiSoyadi As String Blm As String Notlar () As Integer Durumu As String End Type Tip degiskeni iindeki dizi elemanlarina ayni kullanici tanimli verilerin elemanlarina erisildigi gibi erisilir. Bu elemanlarin gsterimi iin su yntem kullanilir: Dim Digergrenciler As grenci ReDim grenci.Notlar (3) grenci.Notlar (0) = 45 Bunlarin disinda kullanici tanimli degiskenlerin dizileri de olusturulabilir: Dim Okulgrencileri (100) As grenci Okulgrencileri (0).Blm = Muhasebe Okulgrencileri (0).Notlar (0) = 50

Kullanici-Tanimli Degiskenlerin Procedure'lara Geirilmesi


Kullanici tanimli degiskenler de bir argman olarak procedure'lara geirilirler. Sub grenciYerlestir(Ogr As grenci) Ogr.AdiSoyadi = Text1.Text Ogr.Blm = Text2 .Text Ogr.Durumu = Text3.Text End Sub

I Ie Olan Veri Yapilari


Veri yapilari birbirlerinin iine girebilirler. Diger bir deyisle bir kullanic tanimli degisken diger bir kullanici tanimli degiskenin elemani olabilir.

105

Microsoft Visual Basic 6.0


Tanimlamalar: Type Notlar Adi As String Degeri As Integer End Type Private Type grenci AdiSoyadi As String Blm As String Notu (9) As Notlar Durumu As String End Type Type DriveInfo Type As String Size As Long End Type Type SystemInfo CPU As Variant Memory As Long DiskDrives(26) As DriveInfo Maliyet As Currency AlisTarihi As Variant End Type Kullanimlari: Dim Sistemler(100) As SystemInfo Sistemler(1).DiskDrives(0).Type = "Floppy" Dim Okul (100) As grenci Okul (0).grenci(0).Notu(0).Adi = "Trke"

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

Microsoft Visual Basic 6.0


Varsayim olarak; numaralandirmanin ilk sabitinin degeri sifirdir.Izleyen degerler birer artarak devam eder. Aylar rnegine bakarsak; Ocak ayinin numarasi 0 dir. Subat ayi 1, mart ayi 2 olarak devam eder. Public Enum Aylar Ocak Subat Mart Nisan Mayis Haziran Temmuz Agustos Eyll Ekim Kasim Aralik End Enum Numaralandirma kullanilabilir: isleminin ardindan sabitlerin sayisal degeri su sekilde

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.

Program Denetimi Yapilari:


Karar (sapma) Dng

107

Microsoft Visual Basic 6.0


Klasik (geleneksel) programlamada programin akisi siradan gider. Diger bir deyisle programin isle timi deyimlerin sirasiyla yrtlmesiyle devam eder. Bir karar, dng ya da bir sapma deyimi ile karsilasilmasi durumunda programin isletim sirasini degistirir. Karar yapilari sayesinde elde edilen degere gre farkli islemlerden birisi yapilir. rnegin "gelir sundan bykse kesinti oran su seklinde...". Ana karar yapilari sunlardir:

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

Microsoft Visual Basic 6.0


Dngnn her dnsnde saya degiskeni bir sayi artirilir. Bylece bir sayidan digerine kadar islemler srdrlr.

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

Microsoft Visual Basic 6.0


Iliski operatrleri
Operatr < <= > >= <> = And Or Not Anlami Kktr Kk esittir Byktr Byk esittir Esit degildir Esittir Ve Veya - Ya da Degil

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

Microsoft Visual Basic 6.0


oluncaya kadar dng yinelenir. Diger bir deyisle kosul yanlis (False) oldugu srece dng yinelenir.DoUntil dngler, yaygin olarak veritabani islemlerinde kullanilir.Bir dng ile tablonun ilk kaydindan son kaydina kadar okunmasi saglanir. rnek: Dosya sonuna kadar okuma Dim Vt As Database, Tablo As Recordset Set Vt = DBEngine.Workspaces(0).Databases ("C: \my documents\adresler.MDB") Set Tablo = Vt.OpenRecordset ("Ogrenciler", dbOpenTable) Tablo.Movefirst Do Until Tablo.EOF YzListe.AddItem Tablol ("Ogrenciler") Tablo.MoveNext Loop Tablo.close vt.Close NOT: Do While dngs iinde bir de Loop Until deyimi konulmaz. Bu durum hataya neden olur. Asagidaki rnekte dosya sonuna kadar islem yapilir. rnekte MYFILE dosyasi text bir dosyadir. Dim InputData Open "MYFILE" For Input As #1 ' input ailan dosya. Do While Not EOF(1) ' end of file kontrol. Line Input #1, InputData ' data oku. Debug.Print InputData ' Immediate windowa yaz. Loop Close #1 ' dosya kapat. Asagidaki rnekte ise veriler; dosyanin sonundan basina dogru (ters sirada) okunur. MyRecordset .moveLast Do While not MyRecordset.EOF Print MyRecordset.fields.getValue(myfield) MyRecordset.movePrevious Loop

111

Microsoft Visual Basic 6.0


Dngnn Basinda ve Sonunda Denetim
Do.. .Loop dngsnn basi ve sonu vardir. While ve Until deyimleri (iken ve 'e kadar) kendi anlamlarini srdrmekle birlikte dng yapisinin basinda ve sonunda kullanilmasina gre degisik anlamlar tasirlar.

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

Microsoft Visual Basic 6.0


Set Vt = DBEngine .Workspaces (0).Databases ( "C: \DATA\OKUL.MDB") Set Tablo = Vt.OpenRecordset ( "OGRENCIHAREKET") Do If Tablo!OGR = "OG01" Then OGR1SAYAC = OGR1SAYAC + 1 If Tablo!OGR = "OG02" Then OGR2SAYAC = OGR2SAYAC + 1 SAYAC = SAYAC + 1 Tablo.MoveNext Loop Until Tablo.EOF MsgBox SAYAC & " " & OGR1SAYAC & " " & OGR2SAYAC

Bir Kosul Dogru Oluncaya Kadar Dng


Bir Do...Loop Until dngsndeki kosulu kontrol etmek iin Until deyimini kullanmanin iki yolu vardir. Birincisinde kosul dngye girmeden nce kontrol edilir. Ikincisinde kosul dngnn sonunda kontrol edilir; bu yntemde dng birkez dnms olur. Giriste kontrol: Sub IlkUntil() Saya = 0 Sayi = 20 Do Until Sayi = 10 Sayi = Sayi - 1 Saya = Saya + 1 Loop MsgBox "Dng " & Saya & " kere dnd." End Sub ikista kontrol: Sub SonUntil() Saya = 0 Sayi = 1 Do Sayi = Sayi + 1 Saya = Saya + 1 Loop Until Sayi = 10 MsgBox "Dng " & Saya & " kere dnd." End Sub

113

Microsoft Visual Basic 6.0


While ve Until Sistemi:
While Yapisi: Saya = 1 Do While Saya <= 10 MsgBox saya Saya = Saya + 1 Loop Do Yanit=InputBox ( "Parolayi girin") Loop While Yanit <> "XXX" Until Yapisi: Saya = 1 Do Until Saya > 10 MsgBox saya Saya = Saya + 1 Loop Do Yanit=InputBox ( "Parolayi girin") Loop Until Yanit <> "XXX" Dngden ikis Bir Do. ..Loop dngsnden kosulsuz ikmak iin Exit Do deyimi kullanilir. Yapisi: Exit Do

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

Microsoft Visual Basic 6.0


NOT: Bir sonsuz dngy durdurmak iin ESC ya da CTRL+BREAK tuslari kullanilir.

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

Microsoft Visual Basic 6.0


Saya degeri bitis degerinden byk oldugunda dng sona erdirilr ve programin kontrol Next deyiminden itibaren devam eder. NOT: Eger dngnn baslangi degeri bitis degerinden bykse dng alismaz. Ancak byle bir dng Step deyiminin dzenlenmesiyle yapilabilir. Next deyiminin ardinda saya degiskenini belirtmek zorunda degilsiniz. Ancak zellikle i ie dnglerde belirtmekte yarar var. NOT: Saya degiskenine dng i inde yeniden atama yapmayin. Eger yaparsaniz sonsuz bir dngye yol aabilirsiniz. For..Next yapisi i ie (nested) de kurulabilir.I ie dngnn isletilmesinde; distaki bir dngnn bir sefer dnmesi iteki dngnn kendi sayisi kadar dnmesi anlamina gelir. Genellikle siralama vb. gibi birbiriyle ilgili i islemleri olan dnglerde kullanilir:

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

Buble Sort (Kpk Siralama)


Verilerin siralanmasi programlamada sik karsilasilan bir konudur. ok sayida siralama yntemi (algoritmasi) vardir. Bunlardan birisi de kpk siralamadir.

116

Microsoft Visual Basic 6.0


Birden ok sayinin siralanmasi iin geleneksel yntemlerden birisi de kpk siralamadir. Kpk siralamadaki algoritma syledir: Siralanacak elemanlar bir dizi (array) olarak dzenlenir. Ardindan birinci elemanla ikinci eleman birbiriyle karsilastirilir. Eger ikinci ele man birinciden kkse birinciyle yer degistirilir. Bu islem byle devam eder: For r = 1 to n-1 For J = r+1 to n if x(j) < x(r) Then Swap (x(j), x(r)) Next J Next r Yukardaki ham kodda grldg gibi kpk siralama i -ie iki dng ile yapilmaktadir. Distaki dng r'den n-1 'e kadar dnerken, iteki dng r+1 'den n'e kadar dnmektedir. For...Next dngsnde dng degiskeni, dngnn kullaniminda nemli bir rol oynar. Kullanimlardan genellikle dng degiskeni ile bir dizinin elemani ya da kayit sayisi gibi degerler temsil edilir: For i = 1 to 7 Gnler(i) = " Next i

"

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

Step Deyiminin Kullanimi


Step deyimi dng degiskenin (sayacin) belirtilen degerde artmasini ya da azalmasini saglar.rnegin dng degiskenin 2,4,6 diye gitmesi.

117

Microsoft Visual Basic 6.0


Sub IkininToplami() For j = 2 To 10 Step 2 Toplam = Toplam + j Next j MsgBox "Toplam: " & Toplam End Sub Adimlama azalan biimde de yapilabilir: Sub Toplama1() For Sayi = 16 To 2 Step -2 Toplam = Toplam + Sayi Next Sayi MsgBox "Toplam: " & Toplam End Sub

Dizileri Islemek Iin Dnglerin Kullanilmasi


zellikle ok boyutlu dizilerin elemanlarina erismek, onlara deger atamak iin For... Next dngleri idealdir. Asagidaki rnekte iki boyutlu bir dizinin elemanlari sifirlanmaktadir: rnek: Dim I As Integer, J As Integer Static MatrisA (1 To 10, 1 To 10) For I= 1 To 10 For J = 1 To 10 MatrisA( I , J) = 0 Next J Next I

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

Microsoft Visual Basic 6.0


Tamsayi Degiskenler Ile Daha Hizli Dngler
Integer degiskenler Variant bir tipli bir degiskene gre daha az bellek yeri harcarlar. Kk bir programda bu fark o kadar nemli olmayabilir. Ancak byk programlarda ya da yapilan islem sayisi arttika bu nem kazanir: Dim HizliSay As Integer ' Birinci durum. Integer kullan. For HizliSay = 0 to 32766 Next Hiz liSay Dim YavasSay As Variant ' Ikinci durum. Variant kullan. For YavasSay = 0 to 32766 Next YavasSay Yukaridaki rneklerden birinci olani daha hizli alisir. Bununla birlikte HizliSay degiskeni 32,767'yi geerse hata olusur. Bunun nlemek iin HizliSay degiskeni Long olarak tanimlanabilir.

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

Microsoft Visual Basic 6.0


And Or Not Ve Veya - Ya da Degil

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

Yapi: (2) kosul Then [islemi1] Else [islem2] End If If

120

Microsoft Visual Basic 6.0


Yapi: (3) If kosul1 Then [islem1] [ElseIf kosul2 Then [islem2] ] [Else [islem -n] End If If-Then-Else yapisinin birinci kullanim biiminde genellikle basit ifadelere karsilik gelen ifadeler zlr. Kosul dogruysa (True) Then'den sonraki deyim isletilir, degilse bu deyimler atlanir.Ikinci kullanim biiminde ise; daha karmasik hesaplamalara ve kararlara karsilik gelen ifadeler zlr.Bu yapida kosul dogruysa islem1 yerine getirilir, degilse Elseden sonra belirtilen islemler yerine getirilir.If-Then-Else yapisi iinde kullanilan parametreler: Parametre If Kosul Then Else Else If End If Aiklama If yapisini baslatir. Yerine getirilecek ifade;Dogru ya da Yanlis sonucunu, verecek sayisal ya da karakter ifade. Kosul saglandiginda yapilacak islemi belirtir. Kosulun saglanmadigi durumlarda yapilacak islemleri belirtir. Else deyimi kullanilmazsa;bir sonraki deyimin isletilmesine geilir. Kosul1in saglanamadigi durumlarda diger bir kosulu belirten szck. If-Then-Else yapisini bitirir.

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

Microsoft Visual Basic 6.0


Kosulun ardindan birden ok deyim kullanabilir:Bu deyimler ayni satirda bulunmalidirlar ve aralarinda iki nokta olmalidir: If Deger1 > 3 Then Deger1 = Alacak + Bor : Deger1 + Alacak rnek: Ekrandan alinan sayinin en bygn bulan program.Asigidaki rnekte; Ekrandan Inputbox ile alinan sayinin en byg bulunur: Private Sub Command1_Click() Dim Sayi1, Sayi2, Sayi3 As Do uble Sayi1 = InputBox (Birinci degeri giriniz) Sayi2 = InputBox (Ikinci degeri giriniz) Sayi3 = InputBox (nc degeri giriniz) If Sayi1 > Sayi2 Then If Sayi1 > Sayi3 Then MsgBox Sayi1 Enbyk Else If Sayi3 > Sayi2 Then MsgBox Sayi3 Enbyk Else MsgBox Sayi2 Enbyk End If End Sub

Kosul Dogruysa Deyimin Isletilmesi


En basit biimden bir If..Then yapisi kosulun dogru olmasi durumunda deyimin alistirilmasini saglar.Burada If..Then deyimi ve isletilecek deyim bir satir olarak dzenlenir. Sub Tarihal() Tarih = #12/2/98# If Tarih < Now Then Tarih = Now End Sub Eger daha fazla karar verilecekse If...Then...Else yapisi kullanilir. Bu yapi ok satirli olarak dzenlenir: Faiz = Inputbox("faiz ?") If Bakiye > 1000000 Then Oran = 0.07 Else Oran = 0.05 End If

122

Microsoft Visual Basic 6.0


Kosul Dogru Degilse Deyimin Isletilmesi
If...Then...Else deyimi iki blok halinde kullanilarak; kosul dogru ise bunlari, degilse sunlari diye kodlanabilir: Sub Mesajver (De ger as Long) If Deger = 0 Then Etiket.ForeColor = vbRed Etiket.Font.Bold = True Etiket.Font.Italic = True Else Etiket.Forecolor = vbBlack Etiket.Font.Bold = False Etiket.Font.Italic = False End If End Sub

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

Microsoft Visual Basic 6.0


Tketim 0-30 31-100 101-sonsuz Metrekp Fiyati 20.000 TL 40.000 TL 100.000 TL

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

If..Then..Else Yapisindan ikis


Istenildiginde lf..Then...Else yapisi iinde ikilabilir. Bu islem iin Exit If deyimi kullanilir. Yapisi: Exit If

Select Case Deyimi


If..Then...Else gibi karar verilmesini; durumlara gre farkli islemlerin yapilmasini saglar. Select Case yapisi bir kosul ya da degisken iin olasi degerlerin degerlendirilmesini saglar. Diger bir deyisle bir ifadenin degerine gre bir ya da daha ok deyim grubunun (ifade blogunun) isletilmesini saglar. Select Case yapisi ok sayida islemin bir test degerine gre isletilmesini saglar. Select Case yapisinin temelinde bir test degeri vardir. Bu degerin degisik seenekleri ve islem bloklari yer alir. Yapisi (basit): Select Case test degeri Case deger1 deyim blok 1 Case deger2 deyim blok 2

124

Microsoft Visual Basic 6.0


End Select Yapisi: Select Case test ifadesi [Case ifade listesi-1 [ifade blogu-1] ] [Case ifade listesi-2 [ifade blogu-2] ] [Case Else [ifade blogu-n] ] End Select Select Case deyiminin parametreleri sunlardir: Parametre Select Case test ifadesi A iklama Select Case karar yapisinin baslangici. Sayisal ya da karakt er bir ifade. Test ifadesi, ifade listesindeki ifadeler uyarsa (aynisi ise); ifade blogunda yer alan deyimler isletilir. Ifade listesindeki ifadenin test ifadesi ile uyusmasi durumunda isletilecek deyimleri ieren bir deyim grubu. Virglle ayrilmis ifade ve degerler. Bir ya da daha ok Visual Basic deyimi. Case ile belirtilen ifadelerden hibirisinin test ifadesi ile uyusmamasi durumunda isletilecek deyimleri belirtir. Select Case yapisini sona erdirir. Bir degerden-blr degere veri alanini gsterir. Bir karsilastirma isleci ile birlikte kullanilir.

Case

ifade listesi ifade blogu Case Else

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

Microsoft Visual Basic 6.0


Vergi = Case 1101 Vergi = Case 1201 Vergi = Case Else Vergi = End Select c ret * 0.20 to 1200 cret * 0.25 to 1300 cret * 0.30 cret * 0.40

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

Microsoft Visual Basic 6.0


Case 10 To 20, 40 To 80, 125, Is > Deger1 Case AYSE To MEHMET NOT: Tek bir degiskenin olasi degerlerine gre degisik seeneklerin degerlendirilmesi sz konusu ise o zaman Select Case yapisi tercih edilmelidir. Birden ok degiskenin aldigi degisik degerlere gre bir karar yumagI zlecekse If yapisi daha uygun olabilir. rnek: Klavyeden girilen karakterin "kk m/byk m?" testi. Asagidaki rnekte; kullanicidan alinan deger aralik olara k kontrol edilmekte ve kk ya da byk harf mi, yoksa ra kam mi oldugu belirlenmektedir. Sub Button31_Click() Dim Mesaj, Deger ' Degiskenler Deger = InputBox ("Bir harfe ya da rakama basiniz. ") Select Case Deger Case "A" To "Z" Mesaj = "A ile Z arasinda bir harfe bastiniz" Case "a" To "z" Mesaj = "a ile z arasinda bir harfe bastiniz" Case 0 To 9 Mesaj = "0 ile 9 arasinda bir rakama bastiniz" Case Else Mesaj = "Istenmeyen bir harfe bastiniz" End Select MsgBox Mesaj End Sub Select Case deyimi ElseIf ile alternatiftir. zellikle bir degis kenin islemlerin yapilmasini saglar. Select yapar. Ardindan degisik kosullara gre kullanilan If..Then...Else yapisina bir aldigi esitli degerlere gre degisik Case deyimi ilk basta degerlendirme degisik islemlerin yapilmasini saglar.

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

Microsoft Visual Basic 6.0


Ikramiye = 0 End Select End Function rnek: Su Hesabi. If yapisinda rneklenen su hesabi aslinda Case yapisinda daha iyi uyar. rnekte asagidaki tablo kullanilarak ekrandan girilen mektrekp degerlerine gre ne kadar TL'lik su harcandigini hesaplayan bir program yazilacaktir. Tketim 0-30 31-100 101-sonsuz Metrekp Fiyati 20.000 TL 40.000 TL 100.000 TL

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

Microsoft Visual Basic 6.0


Case 4: MsgBox "Single-precision floating-point sayi" Case 5: MsgBox "Double-precision floating-point sayi" Case 6: MsgBox "Para birimi" Case 7: MsgBox "Tarih" Case 8: MsgBox "String" Case 9: MsgBox "Nesne" Case 10: MsgBox "Hata" Case 11: MsgBox " ikili" Case 12: MsgBox "variant" Case 13: MsgBox "data access object-veritabani nesnesi" Case 14: MsgBox "onlu sayi" Case 17: MsgBox "Byte" Case 36: MsgBox "User-defined veri ierir" End Select End Sub Asagidaki rnekte ise metin bilgiler karsilastirilarak seim yapilmaktadir: Select Case Islem Case "Topla": Sonu.Text = Val(Sonu.Text) + Geici Case "ikar " : Sonu.Text = Geici - V^al (Sonu.Text) Case "Bl": Sonu.Text = Geici / Val(Sonu.Text) Case "arp": Sonu.Text = Val(Sonu.Text) * Geici End Select Select Case Yapisindan ikis Select yapisindan ikmak iin Exit Select deyimi kullanilir. Yapisi: Exit Select

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

Microsoft Visual Basic 6.0


etiket Isletilecek program satirlarini belirtir. Etiket bilgisi alfabetik bir karakter ile baslamalidir ve iki nokta st ste (:) ile bitme lidir. Etiket bilgisi enok 40 karakter olabilir. Isletilecek program satirlarini belirtir. Satir numarasi enok 40 karakter olmak zere 0 ve 9 rakamla rindan olusur. Satir numarasinin ardindan : isaretinin kullanilmasina gerek yoktur.

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

Microsoft Visual Basic 6.0


Exit For For..Next dngsnden ikisi saglar. Exit For deyimi eger bir i dng (nested) iinde kullanilirsa o zaman bir nceki dzeydeki dngye dner. Exit Function Fonksiyonu sona erdirir ve program kontroln ; fonksiyonu agiran deyimden sonraya geirir. Exlt Sub Sub procedure'i sona erdirir ve program kontroln; procedure'i agiran deyimden sonraya geirir. NOT: Exit deyimi ile End deyimi karistirilmamalidir. Exit deyimi bir fonksiyondan, bir procedure'da ve bir dng iinden ikisi saglar. End deyimi ise Visual Basic procedure'ini dolayisi ile bir programini sona erdirebilen bir komuttur. Sub Button31_Click() Dim Yanit 'Degisken tanimlanir. Do Yanit = InputBox("1,2,3 sayilarindan birisini girin.") If Yanit >= 1 And Yanit <= 3 Then ' Tamam MsgBox "Tamam" Exit Do ' Dngden ik. End If Loop 'dngye devam End Sub

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

Microsoft Visual Basic 6.0 Operatrler


Operatrler (isleler) hem karar vermede iliskileri olustururlar hem da aritmetik islemlerde kullanilirlar. Birok operatrn bir arada kullanilmasi durumunda islem sirasi operatrlerin ncelik sirasina gre dzenlenir. Ancak ifadelerde paratezlere yer vermek islem sirasinin programci tarafindan kontrol edilmesini saglar.

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

Not And Or Xor Eqv Imp Is

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

Microsoft Visual Basic 6.0


Ifadelerin yerinden herhangi bir deger bulunabilir. rnek: Operatrn kullanimi Sonu = 2 + 2 'sonu 4 olur. + operatr iki string verinin birlestirilmesi iin de kullanilir. Iki string bilginin birlestirilmesinde daha aik olmak iin & operatr kullanilmalidir. Ancak istenirse + operatr de kullanilabilir. + operatrnn kullaniminda; eger toplanan verilerden herhangi birisi Variant veri tipine sahipse o zaman toplama yerine birlestirme islemi yapilir. Eger Islem Iki ifade de sayisal ise (Byte, Boolean, Integer, Double, Date, Currency) Iki ifade de String ise Ifadelerden birisi sayisal, digeri Variant ise Ifadelerden birisi String, digeri Variant ise Iki ifade de Variant ise Toplama Long, Slngle,

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

Microsoft Visual Basic 6.0


End Sub

Private Sub Command11_Click() Sonu.Text = Sonu.Text + "8" End Sub

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

Microsoft Visual Basic 6.0 5-FONKSIYONLAR


Tm programlama dillerinde oldugu gibi, Visual Basic'te de esitli islemleri gereklestirmek iin fonksiyonlar kullanilir. Visual Basic programlama dili grafik elamanlarin yani sira metotlar, deyimler,olaylar ve fonksiyonlarla birlikte kullanilir. Fonksiyonlar belli islemleri yaparlar ve bir degeri dndrrler. Bu ndednle bir degere esitlenerek kullanilirlar. Fonksiyonlar yaptiklari islemlere gre belli sinif lara ayrilirlar. Bunlar; 1. String Fonksiyonlar 2. Matematiksel Fonksiyonlar 3. Degisken Kontrol Fonksiyonlari 4. Disk Islem Fonksiyonlari 5. Dosyalama fonksiyonlari 6. Format Dnsm Fonksiyonlari 7. Ykleme Sonlandirma Fonksiyonlari

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

Microsoft Visual Basic 6.0


Chr() Fonksiyonu
Bu fonksiyon Chr fonks iyonunun tersine ASCII kode verilen karakteri kendisini verir. Kullanimi; Sonuc = Chr ( ASCII kod ) ASCII Kod : Kendisi bulunacak karakterin ASCII kodu Sonuc : ASCII kodu verilen karakterin saklandigi sonu degeri rnek; Private Sub Form_Load() Dim Char Char = Chr(65) ' Char = A. Char = Chr(62) ' Char = >. End Sub

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

Microsoft Visual Basic 6.0


Kullanimi; Sonuc = Instr ( Baslangi , String , Aranan ) Baslangi : Aramaya stringin kainci karakteriden baslanacaginin degeridir String : Iinde arama yapilacak string veya karakter Aranan : String iinde aranan karakter veya string Sonuc : Aranan stringin sirasini veren sonu degeridir rnek; Private Sub Form_Load() Dim TaranacakString, Bulunacak, MyPos TaranacakString = "Veli Akakaya" Bulunacak = "A" MyPos = InStr(1, TaranacakString, Bulunacak) 'MyPos = 6 End Sub

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

Left(), Left$() Fonksiyonu


String degiskenin en solundaki belirtilen sayidaki karakterleri verir.

137

Microsoft Visual Basic 6.0


Kullanimi; Sonuc = Left ( Degisken, Uzunluk ) Degisken : Belirtilen karakteri seilecek olan degisken Uzunluk : Seilecek karakter sayisi rnek; Private Sub Form_Load() Dim AnyString, MyStr AnyString = "Hello World" MyStr = Left(AnyString, 1) ' MyStr = "H". MyStr = Left(AnyString, 7) ' MyStr = "Hello W". End Sub

Lcase(), Lcase$() Fonksiyonu


Argman olarak verilen string degiskenin ierdigi tm byk harfleri kk harfe dnstrr. ogu programlama dilindeki ayni grevi gren fonksiyon gibi bu fonksiyonda trke karakterleri kk harfe eviremez. Kullanimi; Sonuc = Lcase ( Degisken ) Degisken : Kk harfe dnstrlecek string karakter rnek; Private Sub Form_Load() Dim UpperCase, LowerCase UpperCase = "Hello World LowerCase = LCase(UpperCase)' LowerCase = "hello world End Sub

Ltrim,Trim, Rtrim Fonksiyonu


Bu komutlar string degisken iindeki en sol ve en sagdaki bosluklari kaldirir. Trim : En sag ve soldaki bosluk karakterlerini kaldirir Ltrim : En soldaki bosluk karakterlerini kaldirir Rtrim : En sagdaki bosluk karakterlerini kaldirir Kullanimi; Sonuc = Trim ( Degisken ) Degisken : Bosluk karakterleri kaldirilacak degisken rnek; Private Sub Form_Load()

138

Microsoft Visual Basic 6.0


Dim Str, TrimS Str = " Veli " TrimS = LTrim(Str) 'TrimS = "Veli " TrimS = RTrim(Str) ' TrimS = " Veli" TrimS = LTrim(RTrim(Str)) ' TrimS = "Veli" TrimS = Trim(Str) ' TrimS = "Veli" End Sub

Mid, Mid$ () Fonksiyonu


Argman olarak verilen string degisken iinden baslangi karakterinden itibaren belirtilen sayidaki karakterleri sonu degeri olarak retir. Kullanimi; Sonuc = Mid ( String, Baslangi, Sayi ) String : Seilecek karakter sayisi Baslangi : Seilecek string degisken iindeki baslangi karakteri Sayi : Seilecek karakter sayisi Sonuc : Fonksiyonun rettigi string yapidaki sonu degeri rnek; Private Sub Form_Load() Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" FirstWord = Mid(MyString, 1, 3) 'FirstWord = "Mid" LastWord = Mid(MyString, 14, 4) 'LastWord = "Demo". MidWords = Mid(MyString, 5) 'MidWord = "Function Demo". End Sub

Right(), Right$() Fonksiyonu


String degiskenin en sagindaki belirtilen sayidaki karakterleri verir. Kullanimi; Sonuc = Right ( Degisken, Uzunluk ) Degisken : Belirtilen karakteri seilecek olan degisken Uzunluk : Seilecek karakter sayisi rnek; Private Sub Form_Load() String degiskenin en sagindaki belirtilen sayidaki karakterleri verir.

139

Microsoft Visual Basic 6.0


Dim AnyString, MyStr AnyString = "Hello World" MyStr = Right(AnyString, 1) ' MyStr = "d" MyStr = Right(AnyString, 7) ' MyStr = "o World" End Sub

Space, Space$ () Fonksiyonu


Bu komutta yukarida aiklanan Tab ve Spc komutu gibi istenilen sayida bosluk birakir.Yukaridaki fonksiyonlar sadece print komutu ile kullanilabilirken ve sonu degeri retmezken Space fonksiyonunun sonu degeri bir string degiskene atanabilir ve her yerde kullanilabilir. Kullanimi; Sonuc = Space ( Sayi ) Sayi : Birakilacak bosluk karakteri sayisi Sonuc : Sayi degeri kadar bosluk degerinden retilmis string degisken rnek; Private Sub Form_Load() Dim a As String a = "Veli" Show Print a; Tab(10); "Akakaya" Print a; Spc(10); "Akakaya" End Sub

String, String$ () Fonksiyonu


Bu fonksiyon argman olarak verilen karakterden veya bu karakterin ASCII kodundan veya String degiskenin ilk karakterinden belirtilen sayi kadar ogaltarak string bir degisken olusturur. Kullanimi; Sonuc = String ( Sayi, Karakter ) Sayi : Olusturulacak yeni degiskenin karakter sayisi Karakter : ogaltilacak karakter veya ASCII kodu Sonuc : Sayi kadar karakterden olusmus string degisken rnek; Private Sub Form_Load() Dim MyString MyString = String(5, "*") ' Returns "*****".

140

Microsoft Visual Basic 6.0


MyString = String(5, 42) ' Returns "*****". MyString = String(10, "ABC") ' Returns "AAAAAAAAAA". End Sub

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

Microsoft Visual Basic 6.0


Sayi :Birakilacak bosluk karakteri sayisi rnek; Private Sub Form_Load() Dim a As String a = "Veli" Show Print a; Tab(10); "Akakaya" Print a; Spc(10); "Akakaya" End Sub

Ucase(), Ucase$() Fonksiyonu


Argman olarak verilen string degiskenin ierdigi tm kk harfleri byk harfe dnstrr. Bu fonksiyondada trke karakterler byk harfe dnstrlemezler. Kullanimi; Sonuc = Ucase ( Degisken ) Degisken : Byk harfe dnstrlecek string karakter rnek; Private Sub Form_Load() Dim UpperCase, LowerCase UpperCase = "Hello World LowerCase = UCase(UpperCase)' LowerCase = "HELLOWORLD End Sub

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

Microsoft Visual Basic 6.0


rnek; Private Sub Form_Load() Dim a, b As Double a = -5.66 b = Abs(a) End Sub

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

Microsoft Visual Basic 6.0


Exp() Fonksiyonu
Exp fonksiyonu kendisine argman olarak gnderilen sayinin Exponansiyelini yani matematikteki e(2,718282) sayisinin sayi kuvvetini verir. Sayi degeri en fazla 709 olabilir. Eger businir asilirsa 6 numarali RunTime(OverFlow) hatasi meydana gelir ve programin akisi sonlandirilir. Kullanimi; Sonuc=Exp(Sayi) Sayi : 2,718282 sayisinin kuvveti olacak sayi. Sonuc : Fonksiyonun rettigi Double tipinde bir degisken rnek; Private Sub Form_Load() For b = 0 To 4 Show Print (Exp(b) - Exp(-1 * b)) / 2 Next b End Sub

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

Microsoft Visual Basic 6.0


sistem demektir. Yani 9'dan sonra 10 yerine A ,11 yerinede B harfi gelir. Kullanimi; Sonuc=Hex(Sayi) Sayi : HexeDecimal karsiligi alinacak sayi. Sonuc : Fonksiyonun rettigi veriant tipinde bir sayi rnek; Private Sub Form_Load() Dim a For a = 0 To 100 Show Print Hex(a) Next a End Sub

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

Microsoft Visual Basic 6.0


Sayi : Dogal logaritmasi alinacak pozitif sayi Sonuc : Fonksiyonun rettigi Integer veya Double tipinde bir sayi rnek; Private Sub Form_Load() Dim a a=5 Show Print Log(a) End Sub

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

Microsoft Visual Basic 6.0


Aralik : Fonksiyonun hangi aralikta deger retecegidir. Sonuc : Fonksiyonun rettigi Integer veya Double tipinde bir sayi rnek; Private Sub Form_Load() Dim Tamsayi: Dim Ondaliksayi Randomize Tamsayi = Int(50 * Rnd) Ondaliksayi = (50 * Rnd) Show Print Tamsayi Print Ondaliksayi End Sub

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

Microsoft Visual Basic 6.0


Ai : Sins 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 = Sin(aci1) End Sub

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

Microsoft Visual Basic 6.0


aci = 360 aci1 = (aci * 3.14) / 180 'radyan cinsine evirdik aci = tan(aci1) End Sub

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

C.DEGISKEN KONTROL FONKSIYONLARI


IsDate() Fonksiyonu
Istenilen degiskenin Date (Tarih) formatinda olup olmadigini kontrol eder. Eger degisken Date formatinda ise fonksiyon True, degilse False degerini retir. Fonksiyon veriant degiskenlerde False degerini retir. Kullanim; Sonuc = IsDate (Degisken) Sayi : Formati kontrol edilecek herhangi bir degisken. Sonuc : Fonksiyonun rettigi Boolean degisken. rnek; Private Sub Form_Load() Dim Dveriant Dim DDate As Date Dim DInteger

149

Microsoft Visual Basic 6.0


Show Print IsDate(Dveriant) 'False Print IsDate(DDate) 'True Print IsDate(DInteger) 'False Dim DInteger End Sub

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

Microsoft Visual Basic 6.0


Dim Dizi1(10) Show Print LBound(Dizi, 1) ' Deger 1. Print LBound(Dizi, 3) ' Deger10. Print LBound(Dizi1) ' Deger 0 End Sub

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

Microsoft Visual Basic 6.0


Asagidaki sayfada degiskenlerin kod tablolari verilmistir. Bu degerleri kullanarak degiskenlerin tiplerini grenebilirsiniz. Degisken Empty Null Integer Long Single Double Currency Date rnek; Private Sub Form_Load() Dim IntVar, StrVar, DateVar, MyCheck IntVar = 459 StrVar = "Merhaba" DateVar = #2/12/69# MyCheck = VarType(IntVar) ' Deger 2. MyCheck = VarType(DateVar) ' Deger 7. MyCheck = VarType(StrVar) ' Deger 8. End Sub Dns 0 1 2 3 4 5 6 7 Degisken String Object Error Boolean Variant DataObject Decimal Byte Array Dns 8 9 10 11 12 13 14 17 8192

D. DISK ISLEM FONKSIYONLARI


ChDir() Fonksiyonu
Dizin degistirmek iin kullanilan bir fonksiyondur. Aktif olan dizin bu fonksiyon ile degistirilir. Kullanimi; Chdir "Dizin Adi" Dizin Adi : Aktif hale getirilecek dizin. rnek; Private Sub Form_Load() ChDir "c:\WINDOWS\SYSTEM" End Sub

152

Microsoft Visual Basic 6.0


ChDrive Fonksiyonu
Aktif olan srcy degistirir. Kullanimi; ChDrive "Src Harfi" Src Harfi : Seeceginiz srcnn adi

rnek; Private Sub Form_Load() ChDrive "A" End Sub

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

Microsoft Visual Basic 6.0


rnek; Private Sub Form_Load() MyName = Dir("c:\", vbDirectory) Do While MyName <> "" MyName = Dir 'Bir sonraki dizin okunur. Show Print MyName 'Okunan dizin form zerine yazdirildi. Loop End Sub

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

Microsoft Visual Basic 6.0


rnek; Private Sub Form_Load() Dim Adi Adi = FileDateTime("c:\autoexec.bat") MsgBox Adi End Sub

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

Get Attr Fonksiyonu


Disk zerinde istenen dosyaya ait arsiv,gizli,sistem vb. bilgileri verir. Her zelligin bir kodu vardir. Bunlar asagida tablo halinde verilmistir.

155

Microsoft Visual Basic 6.0


Kullanimi; Sonuc = GetAttr ("Dosya Adi") Sonuc : Dosyanin zelligine gre retilen kodun saklandigi degisken Dosya Adi : zelligi bulunacak dosyanin tam adi GetAttr Fonksiyonu'nun dns degerleri ve karsiliklari Constant Normal ReadOnly Hidden System Directory Archive Value Description 0 1 2 4 16 32 Normal Dosya Sadece Okunabilir Dosya Gizli Dosya Sistem Dosyasi Klasr Yedek dosya

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

Microsoft Visual Basic 6.0


MkDir() Fonksiyonu
Yeni ve ii bos bir dizin olusturur. Kullanimi; Mkdir "Dizin Adi" Dizin Adi : Yeni olusturulacak dizinin adi rnek; Private Sub Form_Load() MkDir "c:\deneme" End Sub

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

Microsoft Visual Basic 6.0 E.DOSYALAMA FONKSIYONLARI


Bilgisayar zerinde dosya olusturmak, olusturulmus olan dosyalari okumak iin kullanilan , kisacasi dosyalama komutlari asagida verilmistir.

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.

Write ve Print Fonksiyonu


Daha nceden Open deyimi ile ailan dosyalara bilgi yazdirmak iin kullanilir. Write ile Print arasindaki fark; Write deyiminin dosyaya yazdirilan bilgiler arasina virgl koymasi ve Print'in bu virglleri koymamasidir. Kullanimi; Write # Dosya Numarasi , Degiskenler Print # Dosya Numarasi , Degiskenler Degiskenler : Dosyaya yazdirilacak degiskenler D.Numarasi : Open deyimi ile ailan dosya numarasi olmali rnek; Private Sub Form_Load() Open "Deneme" For Output As #1 Write #1, Ad Print #1, Soyad End Sub Yukaridaki rnekte Deneme dosyasina Ad ve Soyad degiskeni ierisindeki bilgiyi yazdirdik.

158

Microsoft Visual Basic 6.0


Input Fonksiyonu
Daha nceden Open deyimi ile ailan ve Write veya Print komutlari ile dosyaya yazdirilan bilgileri sirasi ile okumak iin kullanilir. Kullanimi; Input # Dosya Numarasi , Degiskenler Degiskenler : Dosyadan okunana bilgilerin atanacagi degiskenler. D.Numarasi : Open deyimi ile ailan dosyanin numarasi rnek; Private Sub Form_Load() Open "Deneme" For Input As #1 Input #1, Ad End Sub Yukaridaki rnekte Deneme dosyasindan okunan bilgileri ad degiskenine atadik.

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

Microsoft Visual Basic 6.0


Input Output Random Append Binary Kullanimi; Sonuc = FileAttr (Dosya Numarasi, Dns tipi) D.Numarasi : Ailis modu grenilecek dosyanin Ailis numarasidir. Dns tipi Ailis modunun kodunu elde etmek iin bu deger srekli 1 olur. Sonuc :Ailis modunun kod numarasi olan dns degeridir. rnek; Private Sub Form_Load() Open "TESTFILE" For Append As #1 MsgBox FileAttr(1, 1) Close 1 End Sub 1 2 4 8 32

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

Microsoft Visual Basic 6.0


MsgBox f End Sub

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

Microsoft Visual Basic 6.0


Seek Fonksiyonu
Open deyimi ile ailan dosyada okunan yazilan degiskenin uzunlugunu verir. Kullanimi; Sonuc = Seek ( Dosya Numarasi ) D.Numarasi : Uzunlugu bulunacak dosya Sonuc : Dosyada okunan degiskenin uzunlugunun retildigi integer degerdir rnek; Private Sub Form_Load() Dim MyChar Open "c:\mesaj11.txt" For Input As #1 Input #1, MyChar MsgBox Seek(1) Loop Close #1 End Sub

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

Microsoft Visual Basic 6.0 F. Format Dnsm Fonksiyonlari


Degisik tipteki degiskenleri, bir birlerine evirmek iin kullanilan komutlar asagida aiklamalari ile verilmistir.

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

Microsoft Visual Basic 6.0


CDbl () Fonksiyonu
Verilen degiskeni Double yani ift duyarlikli degisken tipine evirir. Kullanimi; Sonuc = CDbl(Sayi) Sayi : Double trne evrilecek degisken Sonuc : Fonksiyonun rettigi Double deger rne k; Private Sub Form_Load() Dim MyCurr, MyDouble, d MyDouble = CDbl(26.5666) d = VarType(MyDouble) MsgBox d 'd=5 yani MyDouble Double degisken tipindedir. End Sub

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

Microsoft Visual Basic 6.0


rnek; Private Sub Form_Load() Dim MyVal1, MyVal2, MyLong1, MyLong2 MyVal1 = 25427.45: MyVal2 = 25427.55 MyLong1 = CLng(MyVal1) ' MyLong1 = 25427. MyLong2 = CLng(MyVal2) ' MyLong2 = 25428. End Sub

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

Microsoft Visual Basic 6.0


MsgBox VarType(MyString) End Sub Yukaridaki rnekte Integer olarak tanimlanan MyDouble degiskeni string degiskene dnstrlmstr. Bunuda VarType kontrol ettigimizde fonksiyon String degiskenin kodu olan 8 degerini bize vermektedir.

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

Microsoft Visual Basic 6.0


Format,Format$ () Fonksiyonu
Verilen bilgiyi istenilen formatta dzenler. Kullanimi; Sonuc = Format (degisken , format tipi) Degisken : Formatli hale getirilecek degisken Format tipi : Degiskenin hangi format tipinde olacagidir Sonuc :Fonksiyonun rettigi herhangi bir degisken rnek; Private Sub Form_Load() Dim MyTime, MyDate, MyStr MyTime = #5:04:23 PM# MyDate = #1/27/93# MyStr = Format(Time, "Long Time") MyStr = Format(Date, "Long Date") MyStr = Format(MyTime, "h:m:s") ' Dns Degeri = "17:4:23". MyStr = Format(MyTime, "hh:mm:ss AMPM")'Dns= 05:04:23 PM". MyStr = Format(MyDate, "dddd, mmm d yyyy") MyStr = Format(23) ' Returns "23". MyStr = Format(5459.4, "##,##0.00")'Dns Degeri = "5,459.40". MyStr = Format(334.9, "###0.00") ' Dns Degeri = "334.90". MyStr = Format(5, "0.00%") ' Dns Degeri = "500.00%". MyStr = Format("HELLO", "<") ' Dns Degeri = "hello". MyStr = Format("This is it", ">")'Dns Degeri = "THIS IS IT". End Sub

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

Microsoft Visual Basic 6.0


MyString = Str$(459) ' Dns degeri = " 459". MyString = Str$(-459.65) ' Dns degeri = "-459.65" MyString = Str$(459.001) ' Dns degeri = " 459.001" MsgBox VarType(MyString) ' Dns degeri = 8 { String } End Sub

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

Microsoft Visual Basic 6.0


Exit Sub Fonksiyonu
Formun veya denetimin kod sayfasindaki kodlari bu komutun kullanildigi satirdan itibaren okumaz yani yok sayar.

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

Microsoft Visual Basic 6.0


Msgbox Fonksiyonu
Tm grsel programlama dillerinde kullanicidan bilgi alan, kullaniciya bilgi veren gerektiginde uyaran mutlaka bazi komutlar, denetimler vardir. Visual Basic'te bu komut Msgbox tur. Kullanimi; Msgbox Mesaj , Butonlar , Baslik , Yardim Dosyasi ismi , Baglam Mesaj : Mesaj kutusu ile ekrana yazilmasini istediginiz mesaj. Bu bir degisken olabilecegi gibi bir degerde olabilir. Butonlar : Mesaj kutusunda ikmasini istediginiz butonlar ve/veya grafikler. Butonlarin yanina isterseniz Visual Basic'in nceden ayarlanmis resimlerin'den de ikartabilirsiniz.Hem resim hemde buton ikartmak iin buton ve resim arasina "+" koymaniz gerekir. Baslik : Baslik kismi ise Mesaj kutusunun Caption zelligidir. Titlebar da ikmasini istedigimiz yaziyi burada yazabiliriz. Msgbox Ekran Tuslari vbOKOnly vbOKCancel vbYesNo vbYesNoCancel vbRetryCancel vbAbortRetryIgnore Sadece OK tusu OK ve Cancel tuslari Yes ve No tuslari Yes, No ve Cancel tuslari Retry ve Cancel tuslari Abort, Retry ve Ignore tus.

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

Microsoft Visual Basic 6.0


Tus OK Cancel Yes No Retry Abort Ignore S.Degeri 1 2 6 7 4 3 5

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

Microsoft Visual Basic 6.0

172

Microsoft Visual Basic 6.0 6-FORM KULLANIMI


Form windowsdaki pencerenin Visual Basicteki karsiligidir.Btn pencerelerde oldugu gibi bu formu evreleyen pencerenin baslik ubugu vardir.Baslik ubugundan baska form nesnesini sinirlayan pencerenin sag st ksesinde Ekrani Kapla Simge Durumunu Klt ve Kapat dgmeleri bulunmaktadir. Asagida formun bir sekli grlmektedir.

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

Microsoft Visual Basic 6.0


komutundan yararlanabilirsiniz. Forma ait baslik ubuguna ift tiklanirsa form, ekrani kaplama ncesi boyutuna ulasir. Formu ieren pencerenin iinde yer alan formlar seili duruma getirilmis olan nesneler gibi etrafi sekiz adet kk kare ile evrilmektedir. Bu sirada Mouse isaretisini formun sag st ksesine getirecek olursak isareti seklinde degismeler olur. Formun byklgn formun alt kenarindan Mouse isaretisi ile tutarak degistirebilirsiniz. Windows arabiriminin en temel kontrol formlardir. Windowsta hemen hemen her program formlar zerinde alisir. Zaten windows kelimesinin Trke anlami olan pencereler de bu formlardir. Boyutlandirilabilir. zelligi sayesinde ayni anda ekranda tek bir program olmak zorunda degildir. Formun propertislerini formun alt programlarinda yazarken formun ismini kullanmak zorunda degilsiniz,direk propertis ismini vermeniz yeterlidir. Yani form1.caption ile sadece caption.form1in alt programlarinda ayni etkiye sahiptir. Programinizda birden fazla form bulunacaksa ilk olarak ana form alisacaktir.Diger formlari programinizda kullanacaginiz form2.show gibi yntemle aktif hale getirmelisiniz. Bir formda baska bir formun bir zelligine ulasabilmek iin kontrol adindan nce formun adi da verilmelidir. rnegin form2zerindeki label1e ulasmak iin form2.label2.zellik seklinde kullanilir. Programinizda birden fazla form bulunacaksa ilk olusturdugunuz form ana formdur ve program alismaya o formla baslar.Eger baslangita alisacak formu alistirmak istiyorsaniz; project_properties menleri ile ailan asagidaki pencerenin startup objest listesinden istediginiz formu seebilirsiniz.

174

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Formun zellikleri
Program ierisindeki adini belirler. Formdaki grntsn belirler. Kendini otomatik olarak yenilemesini saglar. Arka plan rengini belirler. Kenarlik biimleri belirler. Baslik bilgisi tanimlar. Paint olayi ile ilgilidir. Denetim mensn iptal eder. Grnm biimi ile ilgilidir. Grnm biimi ile ilgilidir. izgi kalinligidir. Formun kullanabilirligini 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.

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.

Form zerinde gsterecegi resmi tanimlar.

176

Microsoft Visual Basic 6.0

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.

Grev ubugunda simgelestirmedir. Baslangi konumudur. Ek bilgidir. stten hizasini belirler.

Formda grnp grnmeyecegini belirler.

Formun genisligini belirler. Formun alismasi sekilde olur.vbNormal vbMinimized,vbmaximized dir.

FORMA AIT BAZI NEMLI OLAYLAR


1. Private Sub Form_Activate():Olay formun aktif oldugu an alisir. 2. Private Sub Form_Click():Olay Mouse un sol tusu ile forma
cliklendiginde alisir.

3. Private Sub Form_DblClick():Olay nesneye Mouse un sol


ift tiklandigi anda alisir.

tusla

4.

Private Sub Form_Deactivate(): Olay formun aktif olmadigi

anda alisir. yani baska form akt if oldugu an.

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

Microsoft Visual Basic 6.0


7. Private Sub Form_Gotfocus():Olay, aktif nesne oldugunda alisir.
Clicklendiginde aktif nesne olur.

8. Private Sub Form_Load(): Program alismaya basladigi an alisir.

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.

10. Private Sub Form_KeyPress(KeyAscii As Integer): Olay


keyDown olayindan sonra alisir. KeyAscii klavyeden basilan tuslarin ASCII karsiligini verir.

11. Private Sub Form _ Keyup ( KeyCode As Integer, shift As Integer): Olay KeyPress olayindan sonra, klavyeden basilan
tus birakildiktan sonra alisir.

12. private Sub Form_Lostfocus(): Olay nesneyi terk edildigi anda


alisir. Terk etme islemi herhangi bir nesneye clicklendigine veya TAB ile atlama Yapildiginda olur.

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.

16. Private Sub Form_Paint(): Form a


yazildiginda veya izildiginde alisir.

herhangi

bir

sey

178

Microsoft Visual Basic 6.0


17. Private Sub Form_Resize():Form boyutlandirildiginda alisir. 18. Private Sub Form_Unload(Cancel As Integer):
kapatilmak istendignde (Alt+F4 ile vs.) en son bu olay kapatm istegini dzenler. 1 ise iptal eder. a Form alisir. Cancel

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.

20. Private Sub Form_Terminate():Bir formun btn elemanlarinin


bellekten durumunda olusur. Yapisi:private sub nesne_terminate()

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

Microsoft Visual Basic 6.0


Private Sub Form1_Click() Form2.Cls End Sub

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

Grldg gibi izgi (0,0)koordinatlarindan basladi.

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

Microsoft Visual Basic 6.0


Nesne bilgisi gizlenecek formu belirtir.Bu form gizlendiginde ekranda grnmez.Visible zelligi False olur. Gizli bir formun kontrollerine kullanicilar tarafindan erisilemez. Form1.Hide

MOVE METHODU(SOL,st,GENISLIK, YKSEKLIK)

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

Microsoft Visual Basic 6.0


REFRESH METHODU
Form zerinde yapilan degisikliklerin aninda gsterilmesini saglar.Normalde form veya baska bir kontrol(diskle ilgili kontroller hari) zerinde yapilan degisiklikler,kontrol windowsa getiginde Windows tarafindan veya kontrol tarafindan yapilir. Ancak yapilan degisikligin aninda ekranda grntlenmesini istiyorsaniz kontrole kendini yenilemesini syleyebilirsiniz. RNEK:Bir liste kutusuna1000 tane eleman eklemek istediginizi dsnelim. For I = 1 to 1000 List1.additem I*0,005/100+I*10.548/9,55 Next Bu kodla belli bir sre beklemeden sonra listeye elemanlarin tmn ayni anda eklendigini grrsnz. nk For_next dngs bitmeden kontrol Windowsa geecegi iin listeye elemen eklendigi anda listede grlmeyecektir. Ancak dng bittikten sonra kontrol windowsa geecek ve elemanlarin tm ayni anda listeye eklenecektir. Bu yntemle dng bitene kadar kullanici ekranda hibir degisiklik gremez ve hibir is yapamaz.

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.

RNEK: Asagidaki gibi basit bir formumuz olsun.

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

Microsoft Visual Basic 6.0


RNEK:setfocus private sub command1_click() text1= text2= text3= text1.setfocuskontrol text1 kutusuna ver End Sub Bu rnek kk ve basit oldugundan kontrol biraktigimiz text1 kutusunun enabled zelligi kontrol etme ihtiyaci duymadik. Ancak program daha karisik ise klavye kontrolnn devredilmek istendigi nesne programin herhangi bir yerinde pasif yapilmis olabilir. Byle durumlarda nesnenin pasif olmadigini kontrol ettikten sonra klavye kontrolnn verilmesi gerekir. If text1.enabled then text1.setfocus

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)

TEXTWIDTH VE TEXTHEIGHT METHODLARI


Bir forma yazilan sabit bilgiler,formun ieriginde o anda bulunan font ve punto degerlerine bagli olarak belli bir genislige ve ykseklige sahip olur. Sabit bilgilerin genisligi TextWidth, yksekligi ise TextHeight ile grenilebilir.

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

Microsoft Visual Basic 6.0 MDI FORMLAR


MDI formlar diger formlardan daha farkli bir yapiya sahiptir. MDI forma word programini rnek verebiliriz. SDI (Single Document Interface) uygula malarinda tek bir form bulunur. MDI (multiple Documents Interface) uygulamalar ise ok sayida formdan olusur. Explorer_style arabirimlerinde ise iki kisimdan olusan bir pencere yapisi vardir.Genellikle hiyerarsik bir grnm vardir. MDI arabirimi tek bir MDI form ve iinde yer alan ok sayida alt formda (child) olusur. Bu ana form parent form denir. Ana form iinde ok sayida alt form ailabilir. Bu ok sayida belge sayisi ya da form anlamina gelir. MDI formlar bir konteynerdir. zerinde komut dgmesi vb. kontroller kullanilamaz. Bu nedenle MDI formlar veri girisi vb rutin islemler iin kullanilamaz. Genellikle men ubugu araciligiyla ynetilir. MDI form iinde bir alt form simgelestirildiginde simgesi ana form iinde yer alir. Bir projeye sadece bir MDI form eklenir. Ardindan projeye normal formlar eklenebilir.bu formlardan istenilen formun MDIChild zelligi True yapilarak bu form ana form iinde alt form yapilir. MDI form sisteminin en nemli zelligi alisma zamaninda alt formlarin kolayca ailip ka patilmasidir. Ayrica ailan formun men ubugu MDI formun men ubugu olur.

Bir MDI Uygulama Yaratmak


1. Bir proje baslatilir. 2. Project mensnden Add MDIForm komutu seilir. NOT: Bir uygulama sadece bir tane MDI forma sahip olabilir. 3. Projeye yeni bir form eklemek iin project mensnden Add MDIForm komutu seilir. 4. Ardindan yeni formun zelliklerinden MDI Child zelligi True yapilir. Yeni form ekleme ve bunlardan istenildigi kadarinin alt form (child) yapmak iin bu islem tekrar edilir.

alisma Zamaninda MDI Formun zellikleri


Btn alt formlar MDI formun alisma alanini kullanirlar.Bu nedenle onlarin hareketi MDI formu alani ile kisitlidir. Bir alt form simgelestirildiginde simgesi MDI form ierisinde grlr.MDI form simgelestirildiginde ise grev ubugunda grlr. MDI formun simgelestirilmesi ve tekrara ailmasi durumunda alt formlar eski durumlarinda (simge ya da normal byklkte) grlr. Bir alt form (child form) ekrani kapatildiginda onun caption bilgisi (basligi) MDI formun basligi olur.

184

Microsoft Visual Basic 6.0


AutoShowChildren zelligi ile alt formlar yklendiklerinde otomatik olarak gsterilirler ya da gsterilmezler.AutoshowChildren=True ya da false olarak dzenlenir. Aktif alt formun men ubugu varsa bu men ubugu MDI formun men ubugu olur. RNEK: bir rnegi adim adim gelistirelim. ncelikle yeni bir proje baslatin Su anda programa ait bir formun projede olmasi gerekiyor. Yeni bir MDI formu da project mensnden Add MDIForm seenegi ile olusturalim. Projede bulunan form1in MDIChild zelligini de True yaparak bir MDIChild olusmasini saglayalim. Ayrica programin MDI formdan baslamasi iinde project mensnden projest properties ile ailan asagidaki pencerenin General kismindaki startup objest seenegini MDIForm1 yapalim.

Programi bu haliyle alistirdiginizda yalniz MDI form grlecektir. MDIChild formun da grlebilmesi iin MDI formun load olayina asagidaki kodu ekleyin.

185

Microsoft Visual Basic 6.0


Private sub MDIForm _Load Form1.show End Sub Bu MDIChild formlarin yenisini olusturmak iin, yeni formla olusturulup MDIChild zellikleri true yapilabilir. Ancak eger bu child formlar ayni kontrollere sahip olacaksa bu yeni formlar elimizdeki MDIChild formdan tretilebilir. Bu is iin Dim degimini su sekilde kullanacagiz. Dim formadi As New OrjinalForm Formadi OrjinalForm :Olusturulacak yeni formun adi : Tretilecek yeni formun adi

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

Microsoft Visual Basic 6.0

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.

Alt Formlarin Kullanimi


Bir MDI uygulamanin tasariminda child formlarin ynetimi nemlidir. Child formlarin yklenmesi,kaldirilmasi ve bu formlar arasinda geis en nemli islemlerdendir. Bir child form yklenecegi zaman onun MDI formu (ana formu) otomatik olarak yklenir. Buna karsin bir MDI form yklendiginde child formlari otomatik olarak yklenip gsterilemez. AutoshowChildren zelligi ile MDI child formlarin gizli olarak yklenmesi saglanir ancak formlari gstermek iin show formu kullanilir.

187

Microsoft Visual Basic 6.0


Formlarin Byklg ve Konumu
Bir MDI child form ilk aildigindaki boyutu MDI ana formun byklgne gre degisir. Bir MDI Child formun ise boyutlari ve konumu degistirilebilir.Bu islem iin BorderStyle=2 olmalidir.

Alt Formdaki Bilgiler


Kullanici MDI uygulamadan ikacagi zaman alismalarini kayit etme firsatina sahiptir. Bu islem bir public degisken ile saglanabilir. Public kayit edilmedi As Bolean Bu degisken her child formda tanimlanir.Ardindan Text1 metin kutusunda degisiklik yapildiginda bu degiskenin degeri True yapilir. Bylece text1 iinde degisiklik yapildigi anlasilir. Private Sub Text1_change () KayitEdilmedi=True End Sub Bununla birlikte child formun kayit edilmesi durumunda ise KayitEdilmedi degiskenine False degeri verilir. Bylece bir daha kayit edilmesine gerek kalmaz. Sub mnuKaydet_click () text1 kaydet. Dosya kaydet degiskeni dzenle. KayitEdilmedi = False End sub Bu rnekte kayit Edilmedi degiskeni bir flag(bayrak) gibi alisir ve kullanicinin uygulamadan ikip ikmadigina karar verir. Unload olayindan nce QueryUnload olayi olustugu iin alismalarin kayit edilmesi bu asamada yapilir. Private Sub mnuikis_click() MDI formdan ikis unload MDI form her form iin Queryunload olayi olusur. Unload frmMD End End sub Private Sub Form Queryunload(cancel As integer,_ UnloadMode As integer) If KayitEdilmedi then kayit et.

188

Microsoft Visual Basic 6.0


DosyaKaydet kayit yordami End if End Sub

MDI FORMDA MENLER


MDIChild formlarin menlerinin WindowsList zelligi vardir. Bir menye bu zellik verildiginde MDIChild formlarin isimleri otomatik olarak bu menye eklenir ve bu menden seilen form otomatik olarak bu menye eklenir ve bu menden seilen form otomatik olarak aktif hale gelir.Bu islemler iin herhangi bir kod da gerekmez.Sadece ilgili mennn windowslist zelligini men editor penceresinde isaretlemek gerekir. MDI Formun bir ok zelliginin diger kontrollerin zelliklerinden bir farki yoktur. Yalniz menlerde bir farklilik vardir. MDI formun menleri olabilir ancak bu menler bir MDIChild men yokken men ubugunda grlr. Eger bir MDIChild form varsa o Child formun menleri men ubugu yerine geer.

Bu zelligi Tools_men editr mensnden aabiliriz.

189

Microsoft Visual Basic 6.0

WINDOW(PENCERE) MENS YARATMAK


Uygulamalarin bir ogunda Windows(pencere) menusu vardir.Windows menusunun amaci alt formlar arasinda geim yapmaktir.Bunun yani sira bir MDI uygulamada bulunan standart Tiler(Dse) ve cascade(basamakla) islemleri vardir.Iste visual Basic ile bir Window mens yaratmak ve onun iinde pencereleri dsemek iin belli methodlar kullanilir.

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

Microsoft Visual Basic 6.0

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.

MDIFormun tasinabilirligini iptal eder.


Form zerinde gsterecegi resim tanimlanir.

Scall barlarin nerede ikacagini belirler. Ek bilgidir. stten hizasini belirler. Grnrlk. Formun genisligini belirler. Pencere durumu.

MDIFORMUN BAZI OLAYLARI


1. Private Sub MDIForm_Activate():Olay formun aktif oldugu an
alisir.

2. Private Sub MDIForm_Click():Olay Mouseun sol tusu ile forma


cliklendiginde alisir.

3. Private Sub MDIForm_DblClick():Olay nesneye Mouse un sol


tusla ift tiklandigi anda alisir.

191

Microsoft Visual Basic 6.0


4. Private Sub MDIForm_Deactivate(): Olay formun aktif
olmadigi anda alisir. yani baska form aktif oldugu an.

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.

8. Private Sub MDIForm_Load(): Program alismaya basladigi an

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.

12. Private Sub MDIForm_Resize():Form boyutlandirildiginda 13.Private Sub MDIForm_Unload(Cancel As Integer):


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

elemanlarinin bellekten durumunda olusur.

192

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Aslinda formlar zerlerine kontroller yerlestirilmis pencereler gsterebilen birer class modldr.

194

Microsoft Visual Basic 6.0 7-VISUAL BASIC KONTROLLERI


A-DEFAULT COMPENENT LIST 1-Label(etiket): Form zerindeki bilginin gsterilmesini saglar. Bir
textboxa aiklamaya ya da hesaplanan bir degerin gsterilmesi iin kullanilir.

Label Nesnesinin zellikleri


Program ierisinde kullanilacak isim. zerinde bulunan yazinin hizalanmasini saglar. Form zerinde grns belirler. Genisligini zerinde bulunan yaziya ayarlar. Arka plandaki rengini belirler. Nesnenin gzkp gzkmeyecegini belirler. Sekli forma gml veya normal ayarlar. Formda grnecek yazidir.
Veritabanina baglanti iin alan seilmesini saglar. Veritabanindan alinacak bilginin formatini belirler. Veri tabaninin tablosunu belirler. Srkleme basladiginda farenin alacagi sekli belirler Srklemenin otomatik , manual olmasini belirler. Clicklenebilirligini belirler.True ise click olayi alisir. Yazi tipini belirler. Yazinin rengini belirler.

Nesnenin yksekligini belirler. Indexli kullanimda indexini belirler.


Sola hizasini belirler.

Nesne zerinde hangi resmi alacagini belirler. Nesne zerinde hangi sekli alacagini belirler.

195

Microsoft Visual Basic 6.0

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.

6- Private Sub Label1_Mousedown(Button As Integer,Shift As Integer, X As Single, Y As Single):Etiket

zerine mousenin herhangi bir tusu ile clicklendiginde alisir.Button basilan tusun degerini verir.Bunlar:

196

Microsoft Visual Basic 6.0

Anlami vbLeftbutton vbRightButton vbMiddleButton

Deger 1 2 4

Aiklama Sol Tus Sag Tus Orta Tus

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

X ve Y ise mouseun bulundugu koordinatlarini verir.

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

Backcolor: Nesnenin zemin rengini degistirir. Bu zelligi olusturan 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. rnegin aik tonlu yesili elde etmek iin &H100FF00 degeri kullanilir.

197

Microsoft Visual Basic 6.0


Renkleri ayarlamak iin QBColor() fonksiyonu da kullanilabilir. QBColor() fonksiyonuyla 16 temel renkten biri alinabilir.rnegin 2 nolu renk iin asagidaki satir kullanilabilir. Text1.Backcolor=QBColor(2)

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

Fontsize:Nesne iin kullanilan yazinin puntosunu belirler.Maksimum 2048


olabilir.

Fontstrikethru: True ise nesne iin kullanilan yazinin ortasini izer. 198

Microsoft Visual Basic 6.0


Fontunderline: True ise nesne iin kullanila n yazinin altini izer. Fontcolor:Yazinin rengini belirler. Height,width:Nesnenin boyunu ve enini belirler. Bu zellik degistirilecek
kontroln boyutlari ayarlanabilir.

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. Bir kontrol dizi olmaktan ikarmak iin ise index zelligini silmeniz gerekir.

Left,Top: Nesnenin sol ve st noktalarinin koordinatlarini belirler.Bu

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.

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

Microsoft Visual Basic 6.0


Move: Formun veya herhangi bie 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 grubu da ayni isi yapar. propertislerle form1.left=100 form1.top=100 form1.width=screen.with-200 form1.left= screen.hight-200 Methodlar form1.move 100,100, screen.with-200, screen.hight-200

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

Tag:Bu zelligin visual basic iin hibir anlami yoktur.Kullanici bu


parametreyi bir degisken gibi kullanabilir. Bu zellik bir string degisken olarak kullanilmalidir.

ToolTiptext:Windows altinda alisan bir ok modern programda program


gelerinin birinin zerinde fare ile kisa bir sre durdugunuzda ailan bir balonla onun ne ise yaradigini yazan mesajlar grmssnzdr. VBde de bu is o kontroln tooltiptext zelligine atanacak me tinle yapilir.bu zellige verdiginiz metin, kullanicinin o kontrol zerinde kisa bir sre durmasiyla, kk bir kutu ierisinde gsterilecektir. rnek olarak asagidaki formu hazirlayin . text1 ve text2 ye girilen notlarin ortalamasini label4 ierisinde gsterelim kullanici text1 zerinde durunca 1.sinav notunuzu giriniz,text2 zerinde durunca 2.sinav notunuzu giriniz ve label4 zerinde durunca da 2. sinav ortalamasi diye yazsin.

200

Microsoft Visual Basic 6.0

Program alistiktan sonra kontrollerin zerinde fare ile kisa bir sre durursaniz,asagidaki gibi o kontrole ilgili aiklamayi gsteren bir kutu ailacaktir.

201

Microsoft Visual Basic 6.0

Visible:True ise nesne grlr,false yapilirsa grlmez belli sartlar


gereklestiginde kullanabilirsiniz. gzkmesini istediginiz kontrollerin visible

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

Microsoft Visual Basic 6.0


Textbox nesnesinin zellikleri
Program ierisindeki adini belirtir. Girilen metni hizalar. Formdaki grntsn belirler. Arka plan rengini belirler. Bulundugu konuma uymasini saglar.
Baska kontro lde validatenin alismasini kontrol eder.

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

Microsoft Visual Basic 6.0


Verilerin saklandigi zelliktir. Mesaj verdirmek iin kullanilir. stten hizasini belirler. Formda grnp grnmeyecegini belirler. Nesnenin genisligini belirler.

TEXTBOX NESNESININ BAZI NEMLI OLAYLARI 1. Private Sub Text1_Change():Olay Text zelliginin ierigi
degistiginde alisir.

2. Private Sub Text1_Click():Olay metin kutusuna mouseun sol


tusuna basildiginda alisir.

3. Private Sub Text1_DbClick():Olay metin kutusuna sol tusla ift


tiklandigin anda 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.

5. Private Sub Text1_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.

6. Private Sub Text1_setfocus():Klavye kontroln setfocus yapilan


nesneye gemesini saglar. Bir nesneye setfocus methodunu uygulayabilmek iin o nesnenin enabled zelliginin True olmasi gerekir. Aksi taktirde hata olusacaktir.

7. Private Sub Text1_GotFocus():Olay nesne,aktif nesne oldugunda


alisir.Clicklendiginde, TAB tusuyla seildiginde aktif nesne olur.

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

Microsoft Visual Basic 6.0


degerleridir.Beraber basildiklarinda gelen deger toplamlarindan olusur.rnegin Ctrl+Alt= 6dir. 9. Private Sub Text1_KeyPress(KeyAscii As Integer):Olay veri girisi esnasinda KeyDown olayindan sonra alisir.KeyAscii klavyeden basilan tuslarin ASCII karsiligini verir.

10. Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer):Olay KeyPress olayindan sonra, klavyede basilan tus
birakildiktan sonra alisir.

11. Private Sub Text1_LostFocus():Olay metin kutusu terk edildigi


anda alisir.

12. Private Integer,Shift As

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.

Sub Text1_MouseDown(Button As Integer X As Single, Y As Single ):Metin

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

Microsoft Visual Basic 6.0


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. Bir kontrol dizi olmaktan ikarmak iin ise index zelligini silmeniz gerekir.

CausesValidation: Text kutusu kontroln kaybettiginde yani kullanici


text kutusundan baska bir kontrole fare veya klavye yardimi ile getiginde validate olayinin alisip alismayacagini belirler. Normalde bu zellik truedir ve validate olayi alisir. Bu olaya yazacaginiz kodla kullanicinin girdigi bilgiyi aninda kontrol edebilir ve gerekiyorsa uyarabilirsiniz.

ForeColor:Yazinin rengini belirler.yukarida anlatilan renk bilesimleri burada


da geerlidir.

HelpContexID:Kontrole ilgili yardim dosyasindaki konu numarasi bu


zellikle belirlenir. Programiniza ait yardim dosyasi varsa projest_properties menleri ile ailan asagidaki pencerenin Help File name kutusuna bu yardim dosyasinin ismi verilir. Help dosyasi belirlendikten sonra help dosyasindaki hangi konunun hangi kontrole karsilik geldigi HelpContextID zelligi ile belirlenir. Kullanici bu kontroldeyken F1 tusuna basildiginda belirlediginiz yardim dosyasi ailir ve bu zellige numarasini verdiginiz konu gsterilir. HideSelection: True ise text kutusunda seilen metnin,kontrol baska bir nesneye getiginde seilen kismin gizlenmesini saglar. False ise grlmesini saglar. kontrol baska bir nesneye gesede seilen kismin

hWnd: Windows altinda alisan kontrollerin handle diye adlandirilan tanitici

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.

MaxLength:Text kutusuna girebilecek maximum karakter sayisini belirler.0


verilirse bu sinir kaldirilir.Verilen sinir sayisi kadar karakterden fazlasini kabul etmez.

206

Microsoft Visual Basic 6.0


Kullanicinin belli sayidan daha fazla karakter girmesini nlemek iin bu zellik kullanilir.rnegin kullanicinin 3 harften daha fazla giris yapmasini nlemek iin bu zellige 3 degeri verilebilir. Maxlength zelligi sadece kullanicinin girebilecegi karakter sayisini sinirlar.Program kodu ile yapilan atamalarda bu sinir asilabilir.

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.

Setfocus:klavye kontroln setfocus yapilan nesneye gemesini saglar.Bir

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

Microsoft Visual Basic 6.0


3-Command button(komut dgmesi):
Bir islemin baslatilmasinda kullanilan bir kontroldr.

Command button nesnesinin zellikleri


Program ierisindeki adini belirtir. Formdaki grntsn belirler. Style graphicalken buton rengini belirler. ESC tusuyla click olayinin alismasini saglar. zerinde grnecek yaziyi belirler.
Baska kontrolde validate alismasini kontro l eder.

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

Microsoft Visual Basic 6.0


COMMAND BUTTON NESNESININ BAZI NEMLI OLAYLARI 1. Private Sub Command1_Click():Olay butona mouseun sol
tusuna basildiginda alisir.

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.

3. Private Sub Command1_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.

4. Private Sub Command1_GotFocus():Olay, nesne aktif nesne


oldugunda alisir. Clicklendiginde ve TAB tusuyla seildiginde aktif nesne olur.

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.

8. Private Sub Command1_LostFocus():Olay buton terk edildigi


anda alisir. Terk etme islemi herhangi bir nesneye cliklendigine veya TAB ile atlama yapildiginda olur.

9. Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single):Buton 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.

209

Microsoft Visual Basic 6.0


10. Private Sub Command1_MouseMove(Button As Integer, Shift As Integer,X As Single Y As Single): Command
Button zerinde Mouse hareket ettirildiginde alisir.

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.

Caption: Komut dgmesi ierisinde yazilacak olan mesaji ierir.Diger


nesnelerin caption zelliklerinde oldugu gibi alti izili harf o nesnenin kisa Yol tusudur ve alt tusuyla birlikte alti izili harfe basilmasi durumunda nesne aktif hale gelir. Alti izili harfi (kisayol tusu) belirlemek iin captionda o harfin nne & konur.

Default: Bir komut dgmesinin Default zelligi true ise o dgmenin


bulundugu form zerinde entere basilmasi durumunda o dgme tiklanmis gibi olur.

Picture,DisabledPicture,DownPicture: Eger komut dgmesinin


style zelligine 1 verilerek resimli bir komut dgmesi olacagi belirtilmisse bu zellikle komut dgmesinin zerinde bulununca resim belirlenebilir.

Picture: Bu zellik ile belirlenen resim komut dgmesinin aktif(enabled


zelligi false)

DisabledPicture

zelligi ile pasif(enabled zelligi false) iken

belirlenen

resim

komut

dgmesinin

Downpicture zelligi ile de ut dgmesinin basili iken gsterilecek resim


belirlenir.

Style:Bu zellik komut dgmesinin yazilimi resimlimi olacagini belirler.


0 ise komut dgmesini zerinde caption zelligi ile belirlenen yazi bulunur. 1 ise komut dgmesinin zerinde Picture zelligi ile belirlenen resim bulunur.

210

Microsoft Visual Basic 6.0


4-Check Box(isaret kutusu):
Belli seeneklerin seili olup olmadiklarini belirtmeye yarar.Genellikle bir grup seenekten bir ya da ogunun seilmesiyle isler.

Check box nesnesinin zellikleri


Program ierisindeki adini belirler. zerinde grnen aiklamayi hizalar. Formdaki grntsn belirler. Arka plan rengini belirler. zerindeki aiklamanin girildigi zelliktir. Kontrolde validate alismasini kontrol eder. Herhangi bir alana baglanilmasini saglar. Veri biimini Belirler. Veritabanindaki baglanilacak tabloyu belirler. Kullanilmaz iken resmin ne olacagini belirler. Clicklendiginde resmin ne olacagini belirler. Srkleme de farenin alacagi sekli belirler. Srklemenin otomatik,manual olmasini saglar. 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. Nesne zerinde hangi sekli alacagini belirler. zerinde grnecek resmi belirler. Kontroldeyken resim alinip alinmamasini saglar. Kainci atamada kendine ulasacagini belirler. TAB ile seilmesi sonlandirilir.

211

Microsoft Visual Basic 6.0


Herhangi bir mesaj saklamak iin kullanilir. Mesaj verdirmek iin kullanilir. stten hizasini belirler. Seili olup olmamasini belirler Grnp grnmeyecegini belirler. Nesnenin genisligini belirler.

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.

4. Private Sub Check1_Gotfocus():Olay, nesne aktif nesne


oldugunda alisir.Clicklendiginde ve TAB tusuyla seildiginde aktif nesne olur.

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

Microsoft Visual Basic 6.0


7. Private Sub Chenk1_KeyUp(KeyCode As Integer,Shift As Integer):Olay KeyPres olayindan sonra,klavyeden basilan tus
birakildiktan sonra alisir.

8. Private Sub Chenck1_LostFocus():Olay Chenck Box nesnesi


terk edildigi anda alisir. Terk etme islemi herhangi bir nesneye cliklendigine veya TAB ile atlama yapildiginda olur.

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

Microsoft Visual Basic 6.0


Bir kontrol dizi olmaktan ikarmak iin ise index zelligini silmeniz gerekir. parent: Nesnenin zerinde bulundugu forma ulasmayi saglar.Nesnenin isminden sonra verilen parent komutu o nesneyi degil nesnenin zerinde bulundugu formu temsil eder. 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

CausesValidation: Text kutusu kontroln kaybettiginde yani kullanici


text kutusundan baska bir kontrole fare veya klavye yardimi ile getiginde validate olayinin alisip alismayacagini belirler. Normalde bu zellik truedir ve validate olayi alisir. Bu olaya yazacaginiz kodla kullanicinin girdigi bilgiyi aninda kontrol edebilir ve gerekiyorsa uyarabilirsiniz.

Value:Ikisi kullanici tarafindan degistirilebilen deger alabilir.

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.

5-Option Button(seenek dgmesi):


Bir ok seenekten sadece birisinin seildigi bir seenek Genellikle bir grup seenekten birisinin seilmesi ile isler. kontroldr.

214

Microsoft Visual Basic 6.0

OptionButton nesnesinin zellikleri


Programin ierisindeki adini belirler. zerinde grnen aikla mayi hizalar. Formdaki grntsn belirler Arka plan rengini belirler. zerindeki aiklamanin girildigi zelliktir. kontrolde validate alismasini kontrol eder. Kullanilamaz resmin ne olacagini belirler. Cilcklendiginde resmin ne olacagini belirler. Srkleme de farenin alacagi sekli belirler.
Srklemenin otomatik,manual olmasini belirler.

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.

Formda grnp grnmeyecegini belirler. Nesnenin genisligini belirler.

215

Microsoft Visual Basic 6.0

OPTION BUTTON NESNESININ BAZI NEMLI OLAYLAR

1. Private Sub Option1_Click() :


mouse un sol tusuna basildiginda alisir.

Olay seenek dgmesine

2. Private Sub Option1_DblClick() : Olay Option Button nesnesine


mouse un sol tusla ift tikladigi anda alisir.

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.

5. Private Sub Option1_GotFocus(): Olay, nesne aktif nesne


oldugunda alisir. Clicklendiginde ve TAB tusuyla seildiginde aktif nesne olur.

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.

7. Private Sub Option1_KeyPress(KeyAscii As Integer):


Olay KeyDown olayindan sonra alisir. KeyAscii klavyeden basilan tuslarin ASCII kars iligini verir.

8. Private Sub Option1_KeyUp(KeyCode As Integer, Shift As Integer ): Olay KeyPress olayindan sonra ,Klavyeden basilan tus
birakildiktan sonra alisir.

216

Microsoft Visual Basic 6.0


9. Private Sub Option1_LostFocus(): Olay option button nesnesi
terk edildigi anda alisir. Terk etme islemi herhangi bir nesneye Cliklendigine veya TAB ile atlama yapildiginda olur.

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

Microsoft Visual Basic 6.0


Tag:Bu zelligin visual basic iin hi bir anlami yoktur.Kullanici bu
parametreyi bir degisken gibi kullanabilir.Bu zellik bir string degisken olarak kullanilmalidir.

HelpcontexID:Kontrole ilgili yardim dosyasindaki konu numarasi bu


zellikle belirlenir. Programiniza ait yardim dosyasi varsa projest_properties menleri ile ailan asagidaki pencerenin Help File name kutusuna bu yardim dosyasinin is mi verilir. Help dosyasi belirlendikten sonra help dosyasindaki hangi konunun hangi kontrole karsilik geldigi HelpContextID zelligi ile belirlenir.kullanici bu kontroldeyken F1 tusuna basildiginda belirlediginiz yardim dosyasi ailir ve bu zellige numa rasini verdiginiz konu gsterilir.

hWnd: Windows altinda alisan kontrollerin handle diye adlandirilan tanitici

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.

MaxLength:Text kutusuna girebilecek maximum karakter sayisini belirler.0


verilirse bu sinir kaldirilir.Verilen sinir sayisi kadar karakterden fazlasini kabul etmez. Kullanicinin belli sayidan daha fazla karakter girmesini nlemek iin bu zellik kullanilir.rnegin kullanicinin 3 harften daha fazla giris yapmasini nlemek iin bu zellige 3 degeri verilebilir. Maxlength zelligi sadece kullanicinin girebilecegi karakter sayisini sinirlar.Program kodu ile yapilan atamalarda bu sinir asilabilir.

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

Microsoft Visual Basic 6.0

Frame nesnesini zellikleri


Program ierisindeki adini belirler. Formdaki grntsn belirler. Arka plan rengin belirler. Kenar izgilerini belirler. zerinde grnecek yaziyi belirler. Srklemede farenin alacagi sekli belirler.
Srklemenin otomatik,manual olmasini belirler.

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.

2. Private Sub Frame _DbClick():Olay metin kutusuna sol tusla ift


tiklandigin anda alisir.

219

Microsoft Visual Basic 6.0


3. Private Sub Frame _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.

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.

Sub Frame _MouseDown(Button As As Integer X As Single, Y As Single):Metin

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.

Backcolor: Nesnenin zemin rengini degistirir. Bu zelligi olusturan 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. rnegin aik tonlu yesili elde etmek iin &H100FF00 degeri kullanilir.

220

Microsoft Visual Basic 6.0


Renkleri ayarlamak iin QBColor() fonksiyonu da kullanilabilir. QBColor() fonksiyonuyla 16 temel renkten biri alinabilir.rnegin 2 nolu renk iin asagidaki satir kullanilabilir. Text1.Backcolor=QBColor(2)

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.

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.

hWnd: Windows altinda alisan kontrollerin handle diye adlandirilan tanitici

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.

HelpcontexID:Kontrole ilgili yardim dosyasindaki konu numarasi bu


zellikle belirlenir. Programiniza ait yardim dosyasi varsa projest_properties menleri ile ailan asagidaki pencerenin Help File name kutusuna bu yardim dosyasinin ismi verilir. Help dosyasi belirlendikten sonra help dosyasindaki hangi konunun hangi kontrole ka rsilik geldigi HelpContextID zelligi ile belirlenir.Kullanici bu kontroldeyken F1 tusuna basildiginda belirlediginiz yardim dosyasi ailir ve bu zellige numarasini verdiginiz konu gsterilir.

HideSelection: True ise text kutusunda seilen metnin,kontrol baska bir


nesneye getiginde seilen kismin gizlenmesini saglar.

7-PictureBox(resim kutusu):

Bu kontrol elemani Bitmap,ikon,Metafile, Jpeg gibi resimleri grntlemek iin kullanilir.

221

Microsoft Visual Basic 6.0

PictureBox nesnesinin zellikleri


Program ierisindeki adini belirler. Srekli formun bir kenarinda olmasini saglar. Formdaki grntsn belirler. Kendini otomatik olarak yenilemesini saglar. Ieriginin boyutlarina gre yeniden ayarlanir. Arka plan rengini belirler. zerinde bulundugu konuma uymasini saglar Kontrolde validate alismasini kontrol eder. Herhangi bir alana baglanilmasini saglar. Veri biimini belirler. Veritabaninda baglanilacak tabloyu belirler. Srklemede farenin alacagi sekli belirler.
Srklemenin otomatik,manual olmasini saglar.

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

Microsoft Visual Basic 6.0

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.

2. Private Sub Picture1_DblClick():Olay nesneye Mouseun sol


tusla ift tiklandigi anda 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.

4. Private Sub Picture1 _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 Sub Picture1 _Change():Olay picture zelliginin ierigi


degistiginde alisir.

6. Private Sub Picture1_GotFocus(): Olay, nesne aktif nesne oldugunda alisir. Clicklendiginde ve TAB tusuyla seildiginde aktif nesne olur

223

Microsoft Visual Basic 6.0


7. Private Sub Picture 1_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 Picture 1_KeyPress(KeyAscii As Integer):


Olay KeyDown olayindan sonra alisir. KeyAscii klavyeden basilan tuslarin ASCII karsiligini verir.

9. Private Sub Picture 1_KeyUp(KeyCode As Integer, Shift As Integer ): Olay KeyPress olayindan sonra ,Klavyeden basilan tus
birakildiktan sonra alisir.

10.Private Sub Picture 1_LostFocus(): Olay Picturebox nesnesi


terk edildigi anda alisir. Terk etme islemi herhangi bir nesneye Cliklendigine veya TAB ile atlama yapildiginda olur.

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.

14. Private sub picture1_validate(cancel As integer): Olay


resim metin kutusu terk edildigi anda alisir.

15.

Private sub picture1_resize():Formun genisliginin veya yksekliginin degismesi ayrica formun minimize edilmesi bu olayi meydana getirir.

224

Microsoft Visual Basic 6.0


PICTUREBOX NESNESININ METHODLARI Aling:Picture kontrolnn srekli olarak formun bir kenarinda olmasini
saglar. 0-none yerlestirdigi koordinatlarda sabit kalir. srekli stte srekli altta srekli solda srekli sagda kendini otomatik olarak yenilemesi ya da 1-aling top 2-aling bottom 3-aling left 4-Aling Right

Autoredraw:Nesnenin
yenilenmesi saglanir.

CurrentX, CurrentY:Methodslar kullanarak yapilan izim ve yazimlarda


aktif pixelin koordinatlari belirlenir.

Fillcolor:Circle ve line methodu ile form zerine izilen ember ve kutularin


i boyama rengini ve desenini belirler.

Fillstyle:Bu zellige verilebilecek degerler ve etkiler asagidaki gibidir.


0- vbFSSoild 1- vbFSTransparent 2- vbhorizontalLine 3- vbVerticalLine 4- vbUpwardDiagonal 5-vbDownwardDiagonal 6-vbCross 7- vbDiagonalCross Tam dolu zerinde bulundugu yerin rengi zemin rengi Yatay izgili Dikey izgili Sola Egik Saga egik Kareli apraz

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

Microsoft Visual Basic 6.0


PaintPicture:Resim isleme iin gelistirilmis bir methoddur.Aslinda bu
method BitBit Apisinin yaptigi islemleri yapar. Kaynak Picture parametresi ile isleme girecek resim belirlenir. Kaynakx,kaynaky parametreleri ile islenecek

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.

compenent ve formda grns

226

Microsoft Visual Basic 6.0

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

Combobox Nesnesini zellikleri

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

Microsoft Visual Basic 6.0


COMBOBOXIN METOTLARI
COMBOBOXin methotlari sunlardir:

AddItem:Formda ikan listede grnmesini istedigimiz elemanlari eklemek


iin kullanilir. rnek:Combo1.AddItemIstanbul Istanbul seenegini eklemis olduk.

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.

Causesvalidation:ComboBox kontroln kaybettiginde yani kullanici


ComboBoxa baska bir kontrole fare veya kalvye yardimi ile getignde validate olayinin alisip alismayacagini belirler.Normalde bu zellik truedir ve validate olayi alisir. Bu olaya yazacaginiz kodla kullanicinin girdigi bilgiyi aninda kontrol edebilir ve gerekiyorsa uyarabilirsiniz.

Clear:Liste kutusunu temizlemek iin kullanilir.


rnek: List1.Clear

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

Microsoft Visual Basic 6.0


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 degistitilebilir. bulunan bir fontun numarasi veya ismi verilerek

Fontsize:Nesne iin kullanilan yazinin puntosunu belirler.Maksimum 2048


olabilir.

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.

HelpcontexID:Kontrole ilgili yardim dosyasindaki konu numarasi bu


zellikle belirlenir.Programiniza ait yardim dosyasi varsa projest_properties menleri ile ailan asagidaki pencerenin Help File name kutusuna bu yardim dosyasinin ismi verilir.Help dosyasi belirlendikten sonra help dosyasindaki hangi konunun hangi kontrole karsilik geldigi HelpContextID zelligi ile belirlenir.Kullanici bu kontroldeyken F1 tusuna basildiginda belirlediginiz yardim dosyasi ailir ve bu zellige numarasini verdiginiz konu gsterilir.

hWnd:Windows altinda alisan kontrollerin handle diye adlandirilan tanitici

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.

Index:Ayni isimli birden ok nesne olusturulmussa VB bu nesneleri bir dizi

olarak grr. Index parametresi bu nesnenin dizideki kainci eleman oldugunu

229

Microsoft Visual Basic 6.0


belirler,bu nesneye bu dizi indexiyle ulasilir.Index zelligine bir sayi verilmisse o kontrole isminden sonra bu sayi verilerek ulasilabilir. IntegralHeight: Bu zelligin degeri True ise ComboBox iindeki elemanlar tam gsterilebilmek iin kendisini yeniden boyutlandirir.Normlde bu zellik Truedir ve CombBoxin boyutlari belli araliklarla degistirilebilir.

ItemData(Index):Index numarali elemana comboda grlmeyecek bir


numra verilmesini saglar.Siralanmis listelerde herhangi bir elemanin listeye konuldugu sira belli olamayacagi iin bu zellik kullanilarak listaya konulan elemana sira numarasi verilebilir.

Left,Top:Nesnenin sol ve st noktalarinin kordinantlarini belirler.Bu

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.

ListIndex:ComboBoxtaki aktif elemani belirtir.


rnek:Combo1.ListIndex=- 1 -1 oldugunda hibirisinin aktif olmadigini belirtir.

ListCount:ComboBoxta ka tane seenek olacagini belirtir.


rnek:Combo1.ListCount=4 4 tane seenek oldugunu belirttik.

List(Index):Liste iindeki index numarali elemanin degerini grenmek


veya degistirmek iin kullanilir.

Locked:Bu zellik true yapildiktan sonra kullanici ComboBox zerinde hibir


degisiklik yapamaz.

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.

Move:Formun veya herhangi bir kontroln konumunu ve boyutlarini tek


seferde degistirir.

230

Microsoft Visual Basic 6.0


Kontroln Left,width,height propertisleriyle ayri seferde yapacaginiz isi bu methodla tek seferde yapabilirsiniz.Propertislerle yapmaniz durumunda kontrol defa sekil degistirecek ve dolayisiyla daha agir ve irkinbir grnt olusacaktir.

NewIndex:Listeye en son eklenen elemanin listindexini verir.Sorted


zelligi False ise bu deger ListCount 1dir. True ise elemanin siralanmis listedeki yerinin indexidir.

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

SelText:Seilmis metin bu zellikle grenilip degistirilebilir.Seltext zelligine


yapilan atamalarda,eger seilmis bir kisim varsa o kisim slinir,yoksa kursrn bulundugu noktaya sikistirir.

SetFocus: Nesnenin

etkin rnek:Combo1.SetFocus

konum

nceligine

sahip

olmasini

saglar.

Sorted:Listenin alfabetik sirali olasini saglar. Comboya eklenen elemanlara

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

Microsoft Visual Basic 6.0


TabStop:True ise kullanici bu nesneye Tab ile ulasabilir.False ise Tab
tusuyla bu kontrol zerine gelinmez,mouse ile,yazilim yoluyla veya varsa kisayol tusuyla gelinebilir.

Tag:Bu zellign visual basic iin hibir anlami yoktur.Kullanici bu parametreyi


bir degisken kullanilmalidir. gibi kullanabilir.Bu zellik bir string degisken

olarak

Text:Bu zellik kullanilarak kullanicini girdigi metin zerinde islem yapilir.


rnek:Combo1.Text= ComboBoxin bos oldugu belirtilir.

ToolTiptext:Windows altinda alisan bir ok modern programda program


gelerinin birinin zerinde fare ile kisa bir sre durdugunuzda ailan bir balonla onun ne ise yaradigini yazan mesajlar grmssnzdr. VBde de bu is o kontroln tooltiptext zelligine atanacak metinle yapilir.Bu zellige verdiginiz metin, kullanicinin o kontrol zerinde kisa bir sre durmasiyla, kk bir kutu ierisinde gsterilecektir.

Tabindex:Form

zerinde kullanicinin ulasabilecegi bir nesnenin bir tabindexi vardir. Tabindex kullanicinin tab tusuyla kontroller arasinda dolasirken bu kontrollerin siralamasni belirler.

Visible:True ise nesne grlr,false yapilirsa grlmez belli sartlar


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

COMBOBOXIN OLAYLARI
COMBOBOXin olaylari sunlardir:

Combo1_Change():Nesne ierigi zerinde degisiklik yapildigi zaman


alisir.

Combo1_Click():ComboBox listesinden herhangi bir eleman seildigi


zaman alisir.

232

Microsoft Visual Basic 6.0


Combo1_DblClick():ComboBoxa mouseun sol tusuyla ift tiklandiginda
alisir.

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

Microsoft Visual Basic 6.0


rnek olarak bir personelin adini,meslegini ve adresini grenmek isteyelim. Mmkn olabilecek bazi meslekleri ise bir ComboBox iinde listeleyelim,eger personelin meslegi bunlardan biri degilse meslegini ComboBoxa eklemesine izin verelim. Personelin adi ve adresi iin birer Text kutusu,meslegi iin ise Stylei 0 olan bir ComboBox olusturalim. Private Sub Form_Load () Combo1.AddItem Vasifsiz Isi Combo1.AddItem Mhendis Combo1.AddItem Muhasebeci Combo1.AddItem Egitimci Combo1.AddItem Programci Combo1.AddItem Teknisyen Combo1.ListIndex = 0 ilk elemani kutuda gster End Sub Private Sub Combo1_LostFocus () Dim i For i= 0 To Combo1.ListCount 1 If Combo1.Text = Combo1.List (i) Then Kutuda yazili olan listedeki elemanlardan biri ise Degisim yok fonksiyondan ik Exit Sub End If Next ComboBoxa giris yapilmis Combo1.AddItem Combo1.Text Girileni listeye ekle End Sub Private Sub Combo1.KeyPress (keyascii As Integer) If keyascii = 27 Then ESC ye basildi ise Combo1.Text = Combo1.List (0) End If End Sub

234

Microsoft Visual Basic 6.0

Kullanicinin ComboBoxa hehangi bir deger girip girmedigini ComboBoxun

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

Microsoft Visual Basic 6.0


Private Sub Combo1.KeyPress (keyascii As Integer) Dim i If keyascii = 27 Then ESC ye basildi ise Combo1.Text = Combo1.List (0) End If If keyascii = 13 Then For i = 0 To Combo1.ListCount 1 If Combo1.Text = Combo1.List (i) Then Kutuda yazili olan listedeki elemanlardan biri ise Degisim yok fonksiyondan ik Exit Sub End If Next ComboBoxa giris yapilmis Combo1.AddItem Combo1.Text Girileni listeye ekle End If End Sub

9-LISTBOX:
Visual Basicin sagladigi dizilerinizi gsterebileceginiz kontrollerdendir. Elemanlari listelemek,siralamak gibi zellikler sunan genel amali bir kontroldr.

compenent ve formda grns

236

Microsoft Visual Basic 6.0


ListBox Nesnesini zellikleri
Seili nesnenin ismidir. Formdaki grntsn belirler Validate olayinin alismasini belirler Arka zemin rengini belirler Listenin kolon sayisini belirler Veritabaninin bir alana baglanmasini saglar Veri biimini belirler Veritabaninda baglanacak tabloyu 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 Indexi belirler Elemanlar tam gsterilebilmek iin boyutlanir Veri tabani alanina seenek eklemek Sola hizayi belirler Listeye seenek eklemek Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil Listeden birka seenek semeyi saglar

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

Microsoft Visual Basic 6.0


LISTBOXIN METOTLARI
LISTBOXin farkli methotlari sunlardir:

Columns:Bu zellik ile liste kutusu birka kolon yapilabilir.

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.

Selcount,Selected(Index):MultiSelect zelligi 0 olamayan listelerde

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

Microsoft Visual Basic 6.0


List11_MouseUp(Button As Integer, Shift As Integer,X As Single, Y As Single):Mouse tuslari birakildigi anda alisir. List11_ItemCheck(Item As Integer):Listenin Style zelligine 1-CheckBox verilmisse listedeki elemanlarin birer CheckBox gibi olacaktir. Bu duru mda listeden bir eleman isaretlendiginde ItemCheck olayi meydana gelir. Burdaki Item paremetresi isaretlenen elemanin listedeki Index numarasidir. RNEK: Genel bir rnek olarak personel bilgilerinin girilebilecegi bir program
yazalim. rnegimiz iin asagidaki formu olusturun.

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

Microsoft Visual Basic 6.0


Private Sub Form_Load () Combo1.AddItem Mhendis Combo1.AddItem Isi Combo1.AddItem Programci Combo2.AddItem retim Combo2.AddItem Pazarlama Combo2.AddItem Reklam Combo2.AddItem Satis Dim x, y, z Daha nce kaydedilmis dosya varsa a If Dir (per.dat) <> Then Dosya varsa Open pers.dat For Input As #1 While Not EOF (1) Dosya sonuna kadar Input #1, x, y, z List1.AddItem x List2.AddItem y List3.AddItem z Wend Close #1 End If End Sub Private Sub Command1.Click () Ekle Dgmesi List1.AddItem Text1 List2.AddItem Combo1.Text List3.AddItem Combo2.Text Label6 = List1.ListCount End Sub Private Sub Command2.Click () Sil Dgmesi If List1.ListIndex < 0 Then MsgBox (nce silinecek elemani seiniz) Exit Sub End If Dim ind, c c = MsgBox (List1.List (ind) & silinsinmi, vbYesNo + VbExclamation + vbDefaultButton2, Sil) Ind = List1.ListIndex If c = vbNo Then Exit Sub List1.RemoveItem ind List2.RemoveItem ind List3.RemoveItem ind Label6 = List1.ListCount End Sub

240

Microsoft Visual Basic 6.0


Private Sub Command3.Click () Bul Dgmesi Dim i For i = 0 To List1.ListCount 1 If Ucase (List1.List (i)) = Ucase (Text1) Then Bulundu ise se List1.ListIndex = i Exit Sub End If Next MsgBox (Text1 & bulunamadi) End Sub Private Sub Command4.Click () Degistir Dgmesi Dim ind If List1.ListIndex < 0 Then MsgBox (nce degistirilecek elemani seiniz) Exit Sub End If Ind = List1.ListIndex List1.List (ind) = Text1 List2.List (ind) = Combo1.Text List3.List (ind) = Combo2.Text End Sub Private Sub Command5.Click () Araya ekle Dgmesi Dim ind If List1.ListIndex < 0 Then MsgBox (nce elemanin nereye eklenecegini seiniz) Exit Sub End If Ind = List1.ListIndex List1.AddItem Text1, ind List2.AddItem Combo1.Text, ind List3.AddItem Combo1.Text, ind Label6 = List1.ListCount End Sub Private Sub List1_Click () Birinde seileni digerlerinde de se List2.ListIndex = List1.ListIndex List3.ListIndex = List1.ListIndex List2.TopIndex = List1.TopIndex List3.TopIndex = List1.TopIndex Label8 = List1.ListIndex + 1 Text1 = List1.Text End Sub

241

Microsoft Visual Basic 6.0


Private Sub List2_Click () List1.ListIndex = List2.ListIndex List3.ListIndex = List2.ListIndex List1.TopIndex = List2.TopIndex List3.TopIndex = List2.TopIndex Label8 = List2.ListIndex + 1 Combo1.Text = List2.Text End Sub Private Sub List3_Click () List2.ListIndex = List3.ListIndex List1.ListIndex = List3.ListIndex List2.TopIndex = List3.TopIndex List1.TopIndex = List3.TopIndex Label8 = List3.ListIndex + 1 Combo2.Text = List3.Text End Sub Private Sub Form_Unload (Cancel As Integer) ikista listeleri pers.dat dosyasina kaydet Dim x, y, z, i Open pers.dat For Output As #1 For i = 0 To List1.ListCount 1 x = List1.List (i) y = List2.List (i) z = List3.List (i) Write #1, x, y, z Next Close #1 End Sub

242

Microsoft Visual Basic 6.0

10-H.SCROLLBAR:
Yatay olarak saga sola oklarin alismasini saglar.

compenent ve formda grns

243

Microsoft Visual Basic 6.0

H.ScrollBar Nesnesini zellikleri


Seili nesnenin ismidir. Validate olayinin alismasini belirler Srkleme olayinda mousenin seklini belirler Srkleme olayinin nasil olacagini belirler Clicklenebilirligini belirler Nesnenin yksekligini belirler Yardim dosyasindaki konu numarasi belirlenir Indexi belirler Kaydirma ubuguna tiklandiginda nekadarlik degisecegi Sola hizayi belirler Kaydirma ubugunun alacagi max deger Kaydirma ubugunun alacagi min deger Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil Kaydirma ubugunu ikitarafta ki oklarla nekadarlik degisecegi Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir stten hizalama Kaydirma ubugunun temsil ettiigi deger Nesnenin grnp grnmeyecegi

H.SCROLLIN METOTLARI
H.SCROLLin farkli methotlari sunlardir:

LargeChange:Kaydirma ubugu zerine tiklanmasi durumunda H.Scrollun


nekadarlik bir degisime tabi tutulacagini belirler.

Max,Min:Kaydirma ubugunun alabilecegi maximum ve minimum degerdir. SmallChange:Kaydirma ubugunu iki kenarindaki oklarla H.Scrollun
nekadarlik bir degisime tabi tutulacagini belirler.

244

Microsoft Visual Basic 6.0


Value:Kaydirma ubugunun temsil etigi degeri gsterir. Bu deger max ile min arasinda bir sayidir ve kaydirma ubugu zerinde degisik sekillerde degistirilebilir. H.SCROLLIN OLAYLARI
H.SCROLLin farkli olaylari sunlardir:

H.Scroll1_Change():Nesne ierigi zerinde degisiklik yapildigi zaman


alisir.

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

Microsoft Visual Basic 6.0


H.Scroll1_LostFocus():Nesne aktif olmadiginda yani terkedildiginde
alisir.

H.Scroll1_Scroll():Farkli liste elemani seildiginde alisir. 11-V.SCROLLBAR:


Dikey olarak oklarin yukari asagi alismasini saglar.

compenent ve formda grns V.ScrollBar Nesnesini zellikleri


Seili nesnenin ismidir. Validate olayinin alismasini belirler Srkleme olayinda mousenin seklini belirler Srkleme olayinin nasil olacagini belirler Clicklenebilirligini belirler Nesnenin yksekligini belirler Yardim dosyasindaki konu numarasi belirlenir Indexi belirler Kaydirma ubuguna tiklandiginda nekadarlik degisecegi Sola hizayi belirler Kaydirma ubugunun alacagi max deger Kaydirma ubugunun alacagi min deger Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil Kaydirma ubugunu ikitaraftaki oklarla nekadarlik degisecegi Kainci TAB ta ulasilacagini belirler TAB ile seilemeyecegini belirler Mesaj saklamak iin kullanilir stten hizalama Kaydirma ubugunun temsil ettiigi deger Nesnenin grnp grnmeyecegi

246

Microsoft Visual Basic 6.0


V.SCROLLIN METOTLARI
V.SCROLLin farkli methotlari sunlardir:

LargeChange:Kaydirma ubugu zerine tiklanmasi durumunda H.Scrollun


nekadarlik bir degisime tabi tutulacagini belirler.

Max,Min:Kaydirma ubugunun alabilecegi maximum ve minimum degerdir. SmallChange:Kaydirma ubugunu iki kenarindaki oklarla H.Scrollun
nekadarlik bir degisime tabi tutulacagini belirler.

Value:Kaydirma ubugunun temsil etigi degeri gsterir. Bu deger max ile


min arasinda bir sayidir ve kaydirma ubugu zerinde degisik sekillerde degistirilebilir.

V.SCROLLIN OLAYLARI
V.SCROLLin farkli olaylari sunlardir:

V.Scroll1_Change():Nesne ierigi zerinde degisiklik yapildigi zaman


alisir.

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

Microsoft Visual Basic 6.0


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. V.Scroll1_KeyPress(KeyAsciiAs Integer):Olay veri girisi esnasinda KeyDown olayindan sonra alisir.KeyAscii klavyeden basilan tuslarin ASCii karsiligini verir. V.Scroll1_KeyUp(KeyCode As Integer,Shift As Integer):Olay KeyPress olayindan sonra, klavyede basilan tus birakildiktan sonra alisir. V.Scroll1_LostFocus():Nesne aktif olmadiginda yani terkedildiginde
alisir.

V.Scroll1_Scroll():Farkli liste elemani seildiginde alisir 12-TIMER:


Programda belirli sre araliklarla aktif hale gelip belirli isleri yapbilmek amaciyla kullanilan bir kontroldr. Bu kontrol tasarim zamani ekranda grlmesine ragmen alisma esnasinda grlmez.

compenent ve formda grns Timer Nesnesini zellikleri


eili nesnenin ismidir Timeri etkinlestirme Indexi belirler Timerin gereklesecegi zaman araligi Sola hizayi belirler Mesaj saklamak iin stten hizalama

248

Microsoft Visual Basic 6.0

TIMERIN METOTLARI
TIMERin methotlari sunlardir:

Enabled:False verilerek Timer nesnesinin alismasi durdurulur. Tekrar True


yapilincaya kadar Timer olayi meydana gelmez.

Interval:Timer

olayinin gereklesecegi milisaniye cinsinden zaman periyodudur. Alabilecegi degerler 1-65535 arasidir. 0 degeri Timeri pasif hale getirir.

TIMERIN OLAYLARI
TIMERin olayi sundur:

Timer1_Timer():Timer kontrolnn interval zelligi ile belirtilen sre


ierisinde periodik olarak bu olay meydana gelir. Bu olay ierisine yazilacak kodun hizli olmasi gerekir. Bu olay periyodik olarak srekli meydana gelecegi iin bu olay ierisine yazilan kodun uzun olmasi Windows altinda alisan diger programlarinda yavaslamasina sebep olacaktir. Ayrica Timer olayina yazacaginiz kodun alismasi interval zelligine verdiginiz sreden daha uzun srerse bu arada maydana gelmesi gereken timer olaylari meydana gelmez.

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.

compenent ve formda grns

249

Microsoft Visual Basic 6.0

DriveListBox Nesnesini zellikleri


Seili nesnenin ismidir. Formdaki grntsn belirler 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 Indexi belirler Sola hizayi belirler Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil 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

250

Microsoft Visual Basic 6.0

DRIVELISTBOXIN METOTLARI
DRIVELISTBOXin farkli methotu sudur:

Drive:Bu zellik kullanilarak kontroln gsterdigi aktif src grenilebilir

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

compenent ve formda grns

251

Microsoft Visual Basic 6.0


FileListBox Nesnesini zellikleri

Seili nesnenin ismidir.

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

Nesnenin grnp grnmeyecegi Nesnenin genisligini belirler

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

Microsoft Visual Basic 6.0


saglanir. Bu zelliklerden herhangi birisine Trie degeri verildiginde o zellige sahip dosyalar listelenir,False degeri verildiginde listelenmez.

FileName:Bu zellik ile seili dosyanin ismi grenilebilir. Geri dnecek


deger dosyanin adi ve uzantisidir.

Path: Bu zellik ile listelenmek istenen src ve dizin ismi belirlenir.


rnegin Windows dizinindeki dosyalari File1.Path=C:\windows atamasini yapabiliriz. gstermesini istiyorsak

Pattern: Bu zellik ile listelenmek istenen dosyalar filtrelenir. Bu islem


bildigimiz joker karakterle(?,*) yapilir. rnegin yalniz EXE uzantili dosyalari grntlemek iin: File1.Pattern=*.EXE atamasi yapilir. Birden fazla tip belirlemek iin ; karakteri kullanilir. EXE ve COM dosyalarini listelemek iin; File1.Pattern=*.EXE;*.COM seklinde kullanilir.

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.

15-DIRLISTBOX:Sistemde bulunan srclerdeki dizinleri listelemeye


yarayan,ListBox kontrolnden tremis bir kontrol elemanidir.

compenent ve formda grns

253

Microsoft Visual Basic 6.0


DirListBiox Nesnesini zellikleri
Seili nesnenin ismidir. Formdaki grntsn belirler 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 Indexi belirler Sola hizayi belirler Mouseun nesne zerindeki resim Mouseun nesne zerindeki sekil

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:

Path: Bu zellik kullanilarak seilmis olan dizin grenilebilir ve degistirilebilir.


Bu zellikten dnen deger src ismi dahil tam yoldur. Kontroln gstermesi istenen srcde,yine src isminin bu zellige atanmasi ile gereklestirilir.

DIRLISTBOXIN OLAYLARI
DIRLISTBOXin farkli olayi sudur:

DirListBox1_Change():Listeden bir dizin seilmesi ile bu olay meydana


gelir.

254

Microsoft Visual Basic 6.0


16-SHAPE:
Shape grafiksel bir kontrol elemani olup dikdrgen,kare,elips,ember,oval kare ve oval dikdrtgen sekillerini olusturmaya yarar.

compenent ve formda grns Shape Nesnesini zellikleri


Seili nesnenin ismidir. Arka zemin rengini belirler Zeminin grnp grnmeyecegi izgi rengini belirtir izginin durumunu belirler izgi kalinligini belirler Seklin i boyama rengi Seklin iini boyamak iin kullanilacak desen Nesnenin yksekligini belirler Indexi belirler Sola hizayi belirler Sekli belirler Mesaj saklamak iin kullanilir stten hizalama Nesnenin grnp grnmeyecegi Nesnenin genisligini belirler

SHAPEIN METOT LARI


SHAPEin farkli methotlari sunlardir:

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

Microsoft Visual Basic 6.0


BorderStyle:Bu zellik nesnenin ereve biimini belirer. ereve biimleri ve BorderStyle zelliginin aldigi degerler asagida gsterilmistir.

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.

FillStyle:Seklin iini boyamak iin kullanilacak deseni belirler. FillStyle


0 1 2 3 4 5 6 7

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

Microsoft Visual Basic 6.0


Private Sub VScroll1_Change () Shape1.Shape = VScroll1.Value End Sub Private Sub Timer1_Timer () VScroll1.Value = VScroll1.Value + 1 Tm sekiller gsterildi ise gsterime bastan itibaren devam et If VScroll1.Value >= 5 Then VScroll1.Value = 0 End Sub

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.

compenent ve formda grns

Line Nesnesini zellikleri


Seili nesnenin ismidir. izgi rengini belirtir izginin durumunu belirler izgi kalinligini belirler Indexi belirler Mesaj saklamak iin kullanilir Nesnenin grnp grnmeyecegi X1 koordinatini belirler X2 koordinatini belirler Y1 koordinatini belirler Y2 koordinatini belirler

257

Microsoft Visual Basic 6.0

LINEIN METOTLARI
LINEin farkli methotu sudur:

X1,X2,Y1,Y2:X1 ve Y1 noktalari izgi kontrol elemanlarinin baslangi


koordinatlarini,X2 ve Y2 ise bitis koordinatlarini belirler. Yatay kontrolleri X1 ve X2,dikey kontrolleri ise Y1 ve Y2 belirler.

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

Microsoft Visual Basic 6.0

Image Properties (zellikler)

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

Microsoft Visual Basic 6.0


Image Methods (Metodlar) Appearance : Nesnenin grns ile zelliklerin biimini saglar. Sadece
tasarim asamasinda kullaniciya aiktir. rnek : Image1.Appearance = 0 Image1.Appearance = 1

BorderStyle : Nesneye ait erevenin tipini belirler.


rnek : Image1.Borderstyle = 0 Image1.BorderStyle = 1

Container : Nesne ieriginin ne tip bir veri yapisi oldugunu tanimlar.


rnek : Image1.Container = Picture1

DataChanged : Herhangi bir islem sonrasi, nesne data kontrolne


bagliysa ieriginde bir degisiklik olup olmadigini bildirir. rnek : Image1.DataChanged = True / False

DataField : Kontrol data nesnesine bagliysa, veritabani dosyasindaki hangi


alana (Field a) bagli oldugunu gsterir. rnek : Image1.DataField = Alan Adi

DataFormat : Nesnenin veri biimini belirler.


rnek : Image1.DataFormat =Picture

DataMember : Daha nceden ye olunan bir data varsa buradan


belirlenir. rnek : Image1. DataMember = "Products"

DataSource : Nesnenin bagi oldugu Data kontroln ierir.


rnek : IImage1.Datasource = Data1

Drag : Srkleme isleminin baslatilmasini, sonlandirilmasini ve iptalini


belirler.

260

Microsoft Visual Basic 6.0


Image1.Drag = Image1.Drag = Image1.Drag = DragIcon : Srkle/birak islemi gstermesi gerektigini belirler. rnek : rnek : 0 1 2 sirasinda fare imlecinin hangi sembol

Image1.DragIcon = Load Picture ( )

DragMode : Drag / Drop (srkle-birak) isleminin el yordami ile mi yoksa


otomatik olarak mi gereklestirilecegini belirtir. rnek : Image1.DragMode = 0 (Manual) Image1.DragMode = 1 (Automatic)

Enabled : Nesnenin aktif olup olmayacagini belirleyen metoddur.


rnek : Image1.Enabled = True / False

Height : Nesnein boyunu gsterir.


rnek : Image1.Height = 1440

Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi


nesnelerden hangisi oldugunu belirten sayiyi ierir. rnek : Image1.Index = index no

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

MouseIcon : Fare imlecini belirler. Bu metodun 99 a esitlenmesi ise

farenin programci tarafindan tanimlayacagi zel bir imleci gsterecegini yansitir. rnek : Image1.MouseIcon = LoadPicture (c:\...)

MousePointer : Farenin, nesne zerinde dolasirken hangi imleci


kullanacagini belirler. rnek : Image1.MousePointer = 0 15

261

Microsoft Visual Basic 6.0


Move : Nesnenin ekrandaki konumlarinda degisiklik yapmasina izin veir.
rnek: Image1.Move left,top

Name : Nesnenin adini gsterir.


rnek : Image1.Name = resim1

OleDrag : Srkle birak isleminin otomatik mi yoksa el yordamiyla mi


olacagini belirler. rnek: Image1.OLEDrag = 0 (Manual) Image1.OLEDrag = 1 (Automatic)

OLEDragMODE : Sadece srkleme isleminin hareket tipi iin seenekler


sunar. rnek : Image1.OLEDragMODE = 0 / 1

OLEDropMODE : Sadece birak isleminin hareket tipi iin seenekler


sunar. rnek : Image1.OLEDropMODE = 0 / 1 / 2

Parent : Nesnenin hangi nesne zerinde bulundugunu veya hangi nesneye


bagli oldugunu bildirir. rnek : Image1.Parent.MousePointer = 4

Picture : Nesne ierigi olan resim dosyasinin bulundugu adresi ierir.


rnek : Image1.Picture =LoadPicture (C:\...)

Refresh : Nesnenin gncellestirilmesini saglar.


rnek : Image1.Refresh

ShowWhatsThis : Bu nesir imlecini gsterir.


rnek: Image1.ShowWhatsThis

Stretch : Resmin nesne boyutuna gelip gelmeyecegini belirler.


rnek: Image1.Stretch = True / False

262

Microsoft Visual Basic 6.0


Tag : Nesne iin gereksinim duyulan ek metin bilgisini gsterir.
rnek: Image1.Tag = (c:\...)

ToolTipText : Fare nesne zerindeyken verilecek mesaji belirler.


rnek : Image1.ToolTiptext = mesaj

Top : Nesnenin zerinde bulundugu ana nesneden dsey olarak ne kadar


uzakta oldugunu belirtir. rnek : Image1.Top = deger

Visible : Nesnenin form alisirken grnp grnmeyecegini belirler.


rnek : Image1.Visible = True / False

Width : Nesnenin genisligini belirler.


rnek : Image1.Width = 3000

ZOrder : Nesnenin diger nesnelere gre ne kadar stte ya da arkada


oldugunu belirler. Nesneler arasi geis ncelik tanimlamalari iin ideal bir metod. rnek : Image1.ZOrder = 0 (n) Image1.ZOrder = 1 (arka)

Image Events (Olaylar) Private Sub Image1_Click ( ) : Olay image nesnesi zerine fare ile
bir kere tiklandiginda gereklesir.

Private Sub Image1_DbClick ( ) : Olay image nesnesi zerine fare


ile ift tiklandiginda gereklesir.

Private Sub Image1_DragDrop ( ) : Olay srkleme olayi image


nesnesi zerinde bittiginde alisir.

Private Sub Image1_DragOver ( ) : Olay srkleme esnasinda fare


nesne zerinden geerken gereklesir.

263

Microsoft Visual Basic 6.0


Private Sub Image1_MouseDown ( ) : Olay image nesnesi

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.

Private Sub Image1_MouseUp ( ) : Butonuna basili olan farenin


butonunun birakilmasiyla gereklesir.

Private Sub Image1_OLECompleteDrag ( ) : Srkleme islemi


tamamlandi-ginda ya da iptal edildiginde gereklesen olaydir.

Private Sub Image1_OLEDragDrop ( ) : OLEDropMODE zelligine


Manuel verilmisse birakma islemi gereklestiginde meydana gelen olaydir.

Private Sub Image1_OLEDragOver ( ) : OLEDropMODE zelligine


Manuel verilmemisse srkleme olaydir.

islemi gereklestiginde meydana gelen

Private Sub Image1_OLEGiveFeedBack ( ) : Bu olay, OLE


kaynaginin srkle ve birak islemi sirasinda fare seklinin degismesi gerektigi durumlarda gereklesir.

Private Sub Image1_OLEStartDrag ( ) : Srkleme islemi


basladiginda bu olay gereklesir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


OLE Properties (zellikler)

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

Microsoft Visual Basic 6.0


Nesnenin destekledigi baglanti seklini belirler. Nesnenin nasil boyutlandirilacagini belirler Nesneyi dosya olarak kaydeder. TAB tusu ile kisayol sektirmelerinde nesnenin kainci sirada oldugunu gsterir. Nesnenin TAB ini aktif eder. Nesnenin ek metin bilgisini ierir. Nesnenin stten hizasini belirler. Nesne iindeki veriyi yeniden gnceller. islem uygulamak iin seenekler sunar Nesnenin grnrlgn belirler. Bu nedir dosyasina ait numarayi ierir. Nesnenin genisligini belirler.

OLE Methodlari Action : Bu metoda degerler verilerek bazi olaylar gereklestirilir.


rnek : OLE1.Action OLE1.Action = 1 OLE1.Action OLE1.Action = 0 (Gml nesneyi olusturur.) (Dosya iindeki nesne ile baglanti kurar.) = 4 (Bir nesneyi panoya kopyalar.) = 1 14

Appearance : Nesnenin grns ile zelliklerin biimini saglar. Sadece


tasarim asamasinda kullaniciya aiktir. rnek : OLE1.Appearance = 0 OLE1.Appearance = 1

AppIsRunning : OLE kontrol iindeki uygulamanin o anda alisip


alismadigini belirler. rnek : OLE1.AppIsRunning = True / False

AutoActivate : OLE kontroln aktif hale getirmek iin kullanacagi


metodlari belirler. rnek : OLE1.AutoActivate = 0 (Manual)

267

Microsoft Visual Basic 6.0


OLE1.AutoActivate = 1 (Klavye kontrol)

AutoVerbMenu : OLE kontrol zerinde iken sag fare tusunun


kullanilmasi halinde Verb mensnn otomatik olarak ailip ailmayacagi belirlenir. rnek : OLE1.AutoVerbMenu = True / False

BackColor : Nesnenin zemininin rengini belirler.


rnek: OLE1.BackColor = &H0000C000&

BackStyle : Nesnenin arka stilini belirler.


rnek : OLE1.BackStyle = 0 (Tranparent) OLE1.BackStyle = 1 (Opaque)

BorderStyle : Nesneye ait erevenin tipini belirler.


rnek : OLE1.Borderstyle = 0 OLE1.BorderStyle = 1

Class : Embedded object in sinif ismini belirler.


rnek : OLE1.Class = midfile

Close : Sadece gmme sonucundaki baglantilar zerinde etkili olan bu


metod OLE nesnesi ile kaynak arasindaki baglantiyi keser. rnek: OLE1.Close

Container : Nesne ieriginin ne tip bir veri yapisi oldugunu tanimlar.


rnek : OLE1.Container = Picture1

Copy : OLE elemani iindeki veriyi panoya kopyalar.


rnek : OLE1.Close

CreateEmbed : Gml bir nesne olusturur.


rnek : OLE1.CreateEmbed , class

CreateLink : Baglantili bir nesne olusturur.


rnek : OLE1.CreateLink SourceDoc , SourceItem

268

Microsoft Visual Basic 6.0


Data : Nesneyi data kontrolne baglar.
rnek : OLE1.Data

DataChanged : Herhangi bir islem sonrasi, nesne data kontrolne


bagliysa ieriginde bir degisiklik olup olmadigini bildirir. rnek : OLE1.DataChanged = True / False

DataField : Kontrol data nesnesine bagliysa, veritabani dosyasindaki hangi


alana (Field a) bagli oldugunu gsterir. rnek : OLE1.DataField = Alan Adi

Delete : Ilgili nesneyi silerek o nesne iin ayrilan hafizayi bosaltir.


rnek : OLE1.Delete

DisplayType : OLE kontrolnn form zerinde nasil gsterilecegini


belirler. rnek : OLE1.DisplayType = 0

DoVerb : Nesneye girilen islemi uygular.


rnek : OLE1.DoVerb = -1 (Nesneyi dzenlemek iin aar.) OLE1.DoVerb = -2 (Nesneyi kendi penceresinde aar.) OLE1.DoVerb = -3 (Gml uygulamayi gizler.)

Drag : Srkleme isleminin baslatilmasini, sonlandirilmasini ve iptalini


belirle r. rnek : OLE1.Drag = 0 OLE1.Drag = 1 OLE1.Drag = 2

DragIcon : Srkle/birak islemi sirasinda fare imlecinin hangi sembol


gster-mesi gerektigini belirler. rnek : OLE1.DragIcon = Load Picture ( )

DragMode : Drag / Drop (srkle-birak) isleminin el yordami ile mi yoksa


otomatik olarak mi gereklestirilecegini belirtir.

269

Microsoft Visual Basic 6.0


rnek : OLE1.DragMode = 0 (Manual) OLE1.DragMode = 1 (Automatic) Nesnenin aktif olup olmayacagini belirleyen metoddur. OLE1.Enabled = True / False

Enabled :

rnek :

FetchVerbs : Nesnenin destekledigi fiilleri gnceller.


rnek: OLE1.FetchVerbs

FileNumber : Nesnenin kayitli oldugu dosya numarasini verir.


rnek: OLE.FileNumber

Format: Hangi formatin kullanilacagi belirlenir.


rnek : OLE1.Format =

Height : Nesnenin boyunu belirler.


rnek : OLE1.Height = 1440 Nesnenin hangi program tarafindan aildigini belirtmek

HostName:
iin kullanilir. rnek:

OLE1.HostName = Uygulama1

HelpContextID : Ierik bagimli yardim dosyalari iin, iliski kurulmasi


istenen baslik numarasini ierir. rnek : OLE1.HelpContextID

hWnd : Nesneyi referans gsteren handle i ierir. Bu zellik, API destekli


ileri dzey Visual Basic programlamada kullanilmaktadir. rnek : OLE1.hWnd

Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi


nesnelerden hangisi oldugunu belirten sayiyi ierir. rnek : OLE1.Index = index no

270

Microsoft Visual Basic 6.0


InsertObjDlg : Nesne yerlestirme diyalog kutusunu grntler.
rnek : OLE1.InsertObjDlg

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

MouseIcon : Fare imlecini belirler. Bu metodun 99 a esitlenmesi ise


farenin programci tarafindan tanimlayacagi zel bir imleci gsterecegini yansitir. rnek : OLE1.MouseIcon = LoadPicture (c:\...)

MousePointer : Farenin, nesne zerinde dolasirken hangi imleci


kullanacagini belirler. rnek : OLE1.MousePointer = 0 15

Move : Nesnenin ekrandaki konumlarinda degisiklik yapmasina izin veir.


rnek: OLE1.Move left,top

Name : Nesnenin adini gsterir.


rnek : OLE1.Name = resim1

ObjectGetFormats : Nesnenin destekledigi formati belirler.


rnek : OLE1.OnjectGetFormats

ObjectGetFormatsCount : Nesnenin destekledigi formati belirler.


rnek: OLE1.ObjectGetFormatsCount -1

ObjectVerbs : OLE uygulamasinda kullanilacak verb ler (fiil - islem)


belirlenir. ogunlukla bir mende gstermek iin kullanilir. rnek : OLE1.ObjectVerbs ( 0 )

ObjectVerbsCount : OLe uygulamasinin destekledigi verb sayisi


belirlenir.

271

Microsoft Visual Basic 6.0


rnek : OLE1.ObjectVerbsCount - 1

ObjectVerbFlags : ObjectVerb zelligi ile ilgili islemlerin kontrol bu


metodla belirlenir. rnek : OLE1.ObjectVerbFlags ( 1 )

OLEType : Nesnenin ierdigi bilginin tipi bu metodla belirlenir.


rnek : OLE1.OLEType = 0 / 1 / 3

OLETypeAllowed : OLE nesnesinin destekledigi baglanti sekli bu metodla


belirlenir. rnek : OLE1.OLEType = 0 / 1 / 3

Parent : Nesnenin hangi nesne zerinde bulundugunu veya hangi nesneye


bagli oldugunu bildirir. rnek : OLE1.Parent.MousePointer = 4 nesnesi tarafindan desteklenip

PasteOK

: Panodaki bilginin OLE desteklenme-digi bu metodla belirlenir.


rnek : OLE1.PasteOK = True

PasteSpecialDlg : zel yapistir diyalog kutusunu grntler.


rnek : OLE1.PastespecialDlg

Picture : Nesne ierigi olan resim dosyasinin bulundugu adresi ierir.


rnek : OLE1.Picture =LoadPicture (C:\...)

ReadFromFile: Bir dosyaya kaydedilen nesneyi ykler.


rnek : OLE1.ReadFromFile dosyano

Refresh : Nesnenin gncellestirilmesini saglar.


rnek : OLE1.Refresh

SaveToFile : Bir nesneyi OLE formatinda kaydeder. 272

Microsoft Visual Basic 6.0


rnek: OLE1.SaveToFile

SetFocus : Konumlanma noktasi.


rnek : OLE1.SetFocus

ShowWhatsThis : Bu nesir imlecini gsterir.


rnek: OLE1.ShowWhatsThis

Stretch : Resmin nesne boyutuna gelip gelmeyecegini belirler.


rnek: OLE1.Stretch = True / False

Tag : Nesne iin gereksinim duyulan ek metin bilgisini gsterir.


rnek: OLE1.Tag = (c:\...)

ToolTipText : Fare nesne zerindeyken verilecek mesaji belirler.


rnek : OLE1.ToolTiptext = mesaj

Top : Nesnenin zerinde bulundugu ana nesneden dsey olarak ne kadar


uzakta oldugunu belirtir. rnek : OLE1.Top = deger

Update : OLE kontrol iindeki veriyi yeniden gnceller.


rnek: OLE1.Update

Visible : Nesnenin form alisirken grnp grnmeyecegini belirler.


rnek : OLE1.Visible = True / False

Width : Nesnenin genisligini belirler.


rnek : OLE1.Width = 3000

ZOrder : Nesnenin diger nesnelere gre ne kadar stte ya da arkada


oldugunu belirler. Nesneler arasi geis ncelik tanimlamalari iin ideal bir metod.

273

Microsoft Visual Basic 6.0


OLE Events (Olaylar) Private Sub OLE1_Click ( ) : Olay OLE nesnesi zerine fare ile bir
kere tiklandiginda gereklesir.

Private Sub OLE1_DbClick ( ) : Olay OLE nesnesi zerine fare ile ift
tiklandiginda gereklesir.

Private Sub OLE1_DragDrop ( ) : Olay srkleme olayi OLE nesnesi


zerinde bittiginde alisir.

Private Sub OLE1_DragOver ( ) : Olay srkleme esnasinda fare


nesne zerinden geerken 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_KeyUp ( ) : Klavyede basili tustan elin ekildigi


an.

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_MouseUp ( ) : Butonuna basili olan farenin


butonunun birakilmasiyla gereklesir.

Private Sub OLE1_ObjectMove( ) : OLE kontrol tasindiginda veya


boyutlandirildiginda bu olay gereklesir.

Private Sub OLE1_Resize( ) : Nesnenin ilk kez grntlendiginde ya


da boyutunda bir degisiklik yapildigi an.

Private

gncellendiginde bu olay gereklesir.

Sub

OLE1_Updated(

OLE

kontrolnn

ierigi

274

Microsoft Visual Basic 6.0 20-DATA Kontrol


Veritabani dosyalari ile Visual Basic nesneleri arasinda iletisimi saglayan ve ynetim kontroldr.

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

Microsoft Visual Basic 6.0


Fare nesne zerindeyken verilecek mesaji belirler. Nesnenin stten hizasini belirler. Nesnenin grnrlgn belirler. Bu nedir dosyasina ait numarayi ierir. Nesnenin genisligini belirler.

DATA Methods Align : Nesnein form zerindeki hizasini belirler.


rnek : Data1.Align = 1 (Align Top)

Appearance : Nesnenin grns ile zelliklerin biimini saglar. Sadece


tasarim asamasinda kullaniciya aiktir. rnek : Data1.Appearance = 0 Data1.Appearance = 1

BackColor : Nesnenin zemininin rengini belirler.


rnek: Data1.BackColor = &H0000C000&

BOFAction : Dosya basi hareketini belirler.


rnek : Data1.BOFAction = 0 (MoveFirst) Data1.BOFAction = 1 (BOF)

Caption : Nesnenin adini belirler.


rnek :

Data1.Caption = veri1

Connect : Baglanilacak veritabani programi belirlenir.


rnek : Data1.Connect = Access

Databasename : Baglanilan veritabaninin ismi .


rnek : Data1.Databasename = tablo.mdb

276

Microsoft Visual Basic 6.0


Drag : Srkleme isleminin baslatilmasini, sonlandirilmasini ve iptalini
belirler. rnek : Data1.Drag = 0 Data1.Drag = 1 Data1.Drag = 2

DragIcon : Srkle/birak islemi sirasinda fare imlecinin hangi sembol


gster-mesi gerektigini belirler. rnek : Data1.DragIcon = Load Picture ( )

DragMode : Drag / Drop (srkle-birak) isleminin el yordami ile mi yoksa


otomatik olarak mi gereklestirilecegini belirtir. rnek : Data1.DragMode = 0 (Manual) Data1.DragMode = 1 (Automatic)

Enabled : Nesnenin aktif olup olmayacagini belirleyen metoddur.


rnek : Data1.Enabled = True / False

EOFAction : Dosya sonu hareketini belirler.


rnek : Data1.EOFAction = 0

FontBold : Yazinin kalinligini belirler.


rnek: Data1.FontBold = True

FontName : Yazinin tipini belirler.


rnek: Data.FontName = TimesNewRoman

Height : Nesnenin boyunu belirler.


rnek : Data1.Height = 1440

Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi


nesnelerden hangisi oldugunu belirten sayiyi ierir. rnek : Data1.Index = index no

277

Microsoft Visual Basic 6.0


Left : Nesnenin, zerinde bulundugu nesneden yatay olarak ne kadar uzakta oldugunu gsterir. Bu zellik, daima nesnenin sol kenarina bagli x koordinatini verir.
rnek: Data1.Left = 360

MouseIcon : Fare imlecini belirler. Bu metodun 99 a esitlenmesi ise

farenin programci tarafindan tanimlayacagi zel bir imleci gsterecegini yansitir. rnek : Data1.MouseIcon = LoadPicture (c:\...)

MousePointer : Farenin, nesne zerinde dolasirken hangi imleci


kullanacagini belirler. rnek : Data1.MousePointer = 0 15

Move : Nesnenin ekrandaki konumlarinda degisiklik yapmasina izin verir.


rnek: Data1.Move left,top

Name : Nesnenin programdaki adini gsterir.


rnek : Data1.Name = resim1

OLEDropMode : Srkle birak isleminin birakilmasinin el yordami ile mi


yoksa otomatik mi olacagini belirler. rnek : Data1.OLEDropMode = 1 / 2

Parent : Nesnenin hangi nesne zerinde bulundugunu veya hangi nesneye


bagli oldugunu bildirir. rnek : Data1.Parent.MousePointer = 4

ReadOnly: Sadece okunabilirlik zelligini belirler.


rnek : Data1.ReadOnly

RecordSet : Kayit ismi belirlenir.


rnek : Data1.RecordSet = c:\...

278

Microsoft Visual Basic 6.0


RecordSetType : Kayit tipini belirler.
rnek : Data1.RecordSetType = 0 / 1 / 2

Refresh : Nesnenin gncellestirilmesini saglar.


rnek : Data1.Refresh

ShowWhatsThis : Bu nesir imlecini gsterir.


rnek: Data1.ShowWhatsThis

Tag : Nesne iin gereksinim duyulan ek metin bilgisini gsterir.


rnek: Data1.Tag = (c:\...)

ToolTipText : Fare nesne zerindeyken verilecek mesaji belirler.


rnek : Data1.ToolTiptext = mesaj

Top : Nesnenin zerinde bulundugu ana nesneden dsey olarak ne kadar


uzakta oldugunu belirtir. rnek : Data1.Top = deger

UpdateRecord : Kayitlari gnceller.


rnek: Data1.UpdateRecord

Visible : Nesnenin form alisirken grnp grnmeyecegini belirler.


rnek : Data1.Visible = True / False

Width : Nesnenin genisligini belirler.


rnek : Data1.Width = 3000

ZOrder : Nesnenin diger nesnelere gre ne kadar stte ya da arkada


oldugunu belirler. Nesneler arasi geis ncelik tanimlamalari iin ideal bir metod. rnek : Data1.ZOrder = 0 (n) Data1.ZOrder = 1 (arka)

279

Microsoft Visual Basic 6.0


DATA Events (Olaylar) Private Sub Data1_DragDrop ( ) : Olay srkleme olayi Data
nesnesi zerinde bittiginde alisir.

Private Sub Data1_DragOver ( ) : Olay srkleme esnasinda fare


nesne zerinden geerken gereklesir.

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.

Private Sub Data1_MouseUp ( ) : Butonuna basili olan farenin


butonunun birakilmasiyla gereklesir.

Private Sub Data1_OLECompleteDrag ( ) : Srkleme islemi


tamamlandi-ginda ya da iptal edildiginde gereklesen olaydir.

Private Sub Data1_OLEDragDrop ( ) : OLEDropMODE zelligine


Manuel verilmisse birakma islemi gereklestiginde meydana gelen olaydir.

Private Sub Data1_OLEDragOver ( ) : OLEDropMODE zelligine


Manuel verilmemisse srkleme olaydir. islemi gereklestiginde meydana gelen

Private Sub Data1_OLEGiveFeedBack ( ) : Bu olay, OLE


kaynaginin srkle ve birak islemi sirasinda fare seklinin degismesi gerektigi durumlarda gereklesir.

Private Sub Data1_OLEStartDrag ( ) : Srkleme islemi


basladiginda bu olay gereklesir.

Private Sub Data1_Resize( ) : Nesnenin ilk kez grntlendiginde ya


da boyutunda bir degisiklik yapildigi an.

Private Sub Data1_Validate( ) : Farkli bir kayit aktif kayit anina


gemeden nceki an.

Private Sub Image1_Click ( ) : Olay image nesnesi zerine fare ile


bir kere tiklandiginda gereklesir.

280

Microsoft Visual Basic 6.0


Private Sub Image1_DbClick ( ) : Olay image nesnesi zerine fare
ile ift tiklandiginda gereklesir.

Private Sub Image1_DragDrop ( ) : Olay srkleme olayi image


nesnesi zerinde bittiginde alisir.

Private Sub Image1_DragOver ( ) : Olay srkleme esnasinda fare


nesne zerinden geerken gereklesir.

Private Sub Image1_MouseDown ( ) : Olay image nesnesi


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.

Private Sub Image1_MouseUp ( ) : Butonuna basili olan farenin


butonunun birakilmasiyla gereklesir.

Private Sub Image1_OLECompleteDrag ( ) : Srkleme islemi


tamamlandi-ginda ya da iptal edildiginde gereklesen olaydir.

Private Sub Image1_OLEDragDrop ( ) : OLEDropMODE zelligine


Manuel verilmisse birakma islemi gereklestiginde meydana gelen olaydir.

Private Sub Image1_OLEDragOver ( ) : OLEDropMODE zelligine


Manuel verilmemisse srkleme olaydir.

islemi gereklestiginde meydana gelen

Private Sub Image1_OLEGiveFeedBack ( ) : Bu olay, OLE


kaynaginin srkle ve birak islemi sirasinda fare seklinin degismesi gerektigi durumlarda gereklesir.

Private Sub Image1_OLEStartDrag ( ) : Srkleme islemi


basladiginda bu olay gereklesir.

281

Microsoft Visual Basic 6.0 B-Microsoft Common Dialog Kontrol


Windows tarafindan saglanan standart diyalog kutularinin kullanimini saglayan kontroldr. Bu kutular A, Yeni Adla Kaydet, Renk, Help, Yazdirve Font diyalog kutularidir. Diyalog kutularinin modal olmasi sebebiyle bir seim yapilmadan form zerinde islem yapilamaz. Asagida anlatilacak olan bu kontroller form zerinde tasarim zamani grlmesine ragmen alisma esnasinda grlmez. Bu kontroller, Action zelliklerine de ger atanmasiyla veya ilgili metod kullanilarak aktif hale gelirler. CMDialog k ontrolnde Iptal dgmesinin seilmesi halinde hata olusturulup olusturulmayacagini kullanicinin seimine birakmistir. Olusacak hata kontrollerin programlanmasindan kaynaklanan bir hata (BUG) degildir. Sadece Iptal dgmesinin seildigini programa belirtmek iin dsnlms bir yntemdir. Toolbox

282

Microsoft Visual Basic 6.0


CommonDialog Properties (zellikleri)

283

Microsoft Visual Basic 6.0


About: Diyalog penceresi telifi hakkinda bilgi verir. Custom: Alti diyalog kutusunun bazi nemli zellikleri buradan belirlenebilir.
Custom zelligine tiklandiginda su pencere karsimiza ikar.

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

Microsoft Visual Basic 6.0


4: Font diyalog kutusu CommonDialog1.Action = 4 veya CommonDialog1.ShowFont

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

Microsoft Visual Basic 6.0

Dialog Title : Ailacak pencerelerin basliginda yazilmasi istenen metni belirler. Bir deger atanmazsa standart baslik yazisi grntlenir.

A ve Yeniden Kaydet Diyalog Penceresi


FileName : Diyalog pencerelerinde Dosya Adi kutusunda yazilmasi istenen
veya kullanici tarafindan yazilan degerdir. Bu zellige, diyalog kutusu aktif hale getirilmeden bir deger atanmasi durumunda bu deger Dosya Adi kutusuna yazila- cak default deger olur. Diyalog kutusu kapandiktan sonra ise, bu zelligin aldigi deger kullanicinin setigi veya yazdigi dosya adidir. Bu zelligin ifade ettigi dosya adina src ve yol dahildir. Commondialog1.Action=1 veya CommonDialog1.Action=2 satirlari ile diyalog penceresini atiktan sonra kullanicinin setigi dosyanin adini grenmek iin bu zellik kullanilabilir.

FileTitle : Filename zelliginden farkli olarak dosya adina yol dahil degildir.
Sadece seilen dosyanin ismi ve uzantisini gsterir.

DefaultExt : Kullanici dosya isminde dosya uzantisi yazmazsa bu zellikle


belirlenen uzanti dosya adina eklenir. Commondialog1.DefaultExt = TXT Default uzanti TXT Diyalog penceresinde Dosya Adi kismina kullanici DENEME yazarsa CommonDialog1.FileTitle = DENEME.TXT olacak, DENEME.X yazarsa CommonDialog1.FileTitle = DENEME.X olacaktir. Yani bir uzanti belirtmezse DefaulExt uzantisi ile belirlenen uzanti dosyaya eklenecektir. Yaptiginiz programin kullandigi standart bir dosya uzantisi varsa, bu zellige o uzantiyi vererek, her seferinde uzanti yazma zahmetinden kurtarirsiniz.

Filter : A ve farkli kaydet diyalog pencerelerinde de grldg gibi

286

Microsoft Visual Basic 6.0


kutularina listelenecek dosyalarin tiplerini semeye yarayacak aiklamalar koymaya yarar. FilterIndex: Fitler zelligi ile listeye eklenen seimlerden hangisinin default olarak etkin olacagini belirleyen bir numaradir. Listedeki ilk elemanin numarasi 1 dir.

InitDir :

Diyalog kutularinin ilk aildiginda listeleyecegi dizini belirlemeyi saglar. Verilmezse aktif dizin kabul edilir.

Flags : Ailacak diyalog penceresinin bazi zelliklerini belirleyen bir zelliktir.


Bu zelligin alacagi degerler ve etkileri asagida verilmistir. Bu degerler OR islemine tabi tutularak birden fazla zellik verilebilecegi gibi hangi zelligin seili oldugu da asagidaki degerlerle AND islemine tabi tutularak grenilir.

&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

Microsoft Visual Basic 6.0


&H2000, cdlOFNCreatePrompt: 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.

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

Microsoft Visual Basic 6.0


&H2, cdlOFNOverwritePrompt: Bu degerin A diyalog kutusunda bir degeri yoktur. Yeni Adla Kaydet diyalog kutusunda yazilan dosya ismiyle ayni isimli bir dosyanin diskte olmasi durumunda Windows un asagidaki mesajla uyarmasini saglar.

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

Font diyalog Penceresi


Color: Diyalog penceresi iinde bulunan renk kutusunda seilen rengin numarasidir. FontBold, FontItalic, FontStrikeThru, FontUnderline: True veya False degeri alabilen bu zellikler diyalog penceresinde Koyu, Italik, st izili ve Altiizgili zelliklerinin durumunu belirler.

289

Microsoft Visual Basic 6.0


CommonDialog1.Flags = cdlCFEffects or cdlCFBoth CommonDialog1.ShowFont Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic Text1.FontUnderline = CommonDialog1.FontUnderline Fontname: Diyalog kutusunda seilen/seilecek fontun sistemdeki ismidir. Bu deger herhangi bir kontroln font name zelligine atanabilir. CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth CommonDialog1.ShowFont Text1.FontName = CommonDialog1.FontName FontSize: Seilen fontun byklgn verir. CommonDialog1.Flags =cdlCFEffects Or cdlCFBoth CommonDialog1.ShowFont Text1.FontSize =CommonDialog1.FontSize Min,max: Diyalog penceresindeki boyut listesinde boyutlarinin minimum ve maximum degerlerini belirler. gsterilecek font

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

Microsoft Visual Basic 6.0


&H8000, cdlCFWYSIWYG : Yalniz hem ekran hem de yazicida kullanilabilen fontlarin gsterilmesini saglar. Bu flags degeri zellikle yazicidan alinacak iktiyla ekranda grlen yazinin ayni kalitede olmasi istendigi durumlarda kullanilmalidir. Diger durumda da ekranda grlen yazi yazicidan aynen ikar ancak ekran ile yazicinin znrlkleri ayni olmadigi iin yazim kalitesi dsk olacaktir. Bu degerin etkili olmasi iin &H1, &H2, ve &H20000 degerlerinin de verilmis olmasi gerekir. Yani flags zelliginin &H28003 olmasi gerekir. &H400, cdlCFANSIOnly : Symbol fontlari gibi yazi iermeyen fontlarin listede grlmemesini saglar. &H800, cdlCFNoVectorFonts : Vektr fontlarinin seilmemesini saglar. &H4000, cdlCFFixedPitchOnly : Yalniz Fixed Pitched fontlarin grntlenmesini saglar. Windowsta kullanilan fontlardan ogunlugunun (Veriable Length Font-Times New Roman gibi) harf genislikleri sabit degildir. M harfi I harfinden daha genis bir alan kaplayacaktir. Fontlarin diger bir kisminda ise (Fixed Pitched Fontlar Courier New gibi) bu genislik her harf iin sabittir (DOS ta oldugu gibi). Font genisliginin sabit olmasi irkin bir grnt olustururken zellikle tablolarda kullanilmasi verilerin ayni hizaya gelmelerini saglayacaktir. &H10000, cdlCFForceFontExist : Kullanicinin listede olmayan bir font ismi yazmasi durumunda Windows un asagidaki mesaji grntlemesini saglar ve geerli bir font ismi seilmesi iin kontrol tekrar diyalog kutusuna birakir.

&H2000, cdlCFLimitSize : Diyalog kontrolnn Max ve Min zellikleriyle belirlenen sinirlar haricinde bir font byklg seilmesine izin vermez.

Renk diyalog penceresi


Windows tarafindan saglanan standart renk diyalog kurusunun kullanilmasini saglayan bir kontroldr. Bu kontrolle sistem renklerinin veya kullanicinin tanimlayacagi zel renklerin kullanilmasi mmkndr. CommonDialog kontrolnn Action zelligine vererek veya ShowColor metodunu kullanarak renk diyalog penceresi aktif hale getirilir. CommonDialog1.Action = 3 veya

291

Microsoft Visual Basic 6.0


CommonDialog1.ShowColor

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.

Yazdirma Diyalog Penceresi


Windows tarafindan saglanan standart Yazdir diyalog kutusunun kullanilmasini saglayan bir kontroldr. Bu kontrolle; baski kalitesini, basilacak

292

Microsoft Visual Basic 6.0


sayfa araligini, kopya sayisini ayarlamak ve Yazici Ayarlari diyalog kutusunu kullanmak mmkndr. CommonDialog kontrolnn Action zelligine 5 vererek veya ShowPrint metodunu kullanarak Yazdir diyalog penceresi aktif hale getirilir. CommonDialog1.Action = 5 veya CommonDialog1.ShowPrinter

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

Microsoft Visual Basic 6.0


Min, Max : Diyalog kutusundaki Ilk ve Son text kutularina girilebilecek minimum ve maximum siniri belirler. Kullanicinin bu sinir disinda bir deger girmesi halinde Windows asagidaki gibi bir mesaj grntler. 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. &H0, cdlPDAIIPages : Yazdir diyalog penceresinde Tm seeneginin seili olmasini saglar veya tm seeneginin seili olup olmadigi bu degerle grenilir. &H1, cdlPDSelection : Yazdir seeneginin seili oldugunu gsterir. diyalog penceresinde Seili Kisim

&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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

C-Microsoft MSFlexGrid (Izgara Kontrol)


Grid kontrol gibidir ancak bazi gelismis zelliklere sahiptir. Asagidaki zellikleri gride oldugu gibi kullanilir. 1. Cols ve Rows zellikleri ile satir ve stun sayisi belirlenir. 2. Fixedcols vr FixedRows zellikleri ile baslik olarak kullanilacak satir ve stunlar belirlenir. 3. Col ve Row zellikleri ile aktif kolon grenilebilir veya degistirilebilir. 4. Text zelligi ile aktif hcrenin ierigi grenilebilir ve degistirilebilir. 5. Clip zelligi ile seili blgenin ierigi grenilebilir ve degistirilebilir. 6. ColWidth ve RowHeight zellikleri ile stun genisligi ve satir yksekligi belir-lenebilir. 7. ColAlignment zelligi ile kolonlarin alignmentlari degistirilebilir. Toolbox

296

Microsoft Visual Basic 6.0


MSFlexGrid Properties (MSFlexGrid zellikleri)

About : MSFlexGrid telifi hakkinda bilgi verir. Custom : MSFlexGrid kontrolnn zellikleri pencereler halinde blmlere ayrilmistir. Buradan zellikler sanki kisa yolmus gibi ayarlanabilir.

297

Microsoft Visual Basic 6.0


Name : Kontroln programda kullanilan ismidir. AllowBigselection : Bir stun ya da satirin basina tiklandiginda tiklanan satir ya da stun boyunun tamaminin seilip seilmemesine izin verir. AllowUserResizing : Kullanicinin fare yardimiyla satir ya da stunlarin tekrar bytlp bytlmemesine seenekler sunar. Appearance : Kontroln formdaki grntsn belirler. BackColor : Kontroln satir ve stunlarinin rengini belirler. BackColorBkg : Kontroln zerinde bulundugu arka plan rengini belirler. BackColorFixed : Kontroldeki satir ve stun basliklarinin rengini belirler. BackColorSel : Satir ve stunlarin seildiginde alacagi rengi belirler. BorderStyle : Kenar izgilerini belirler. CausesValidation : Kontrol zerinde en son odaklanan noktanin geerli olup olamayacagini belirler. Cols : Kontroldeki stun sayisini belirlemeye yarar. DataSource : Veritabanindaki baglanacak tabloyu belirler. DragIcon : Srkleme birakma olayi basladiginda farenin alacagi sekli belirler. DragMode : Fareyi srklebirak olayinin manual ya da otomatik olacagini belirler. Enabled : kontrok zerinde fare ile tiklanip tiklanamayacagini belirler. True ise click olayi alisir. FillStyle : Sekilleri doldurma biimi. FixedCols : Kontrol zerinde sabit stunlarin sayisini belirler. FixedRows : Kontrol zerinde sabit satirlarin sayisini belirler. FocusRect : Flex Grid kontrol zerinde, hcre zerine tiklandiginda hcrenin etrafinda olusacak ereve seeneklerini belirler.

298

Microsoft Visual Basic 6.0


Font : Yazi tipini belirler. ForeColor : Aiklama yazisinin rengini belirler. ForeColorFixed : Flexgrid in kse basliginin rengini belirler. ForeColorSel : Hcreler iindeki yazinin rengini belirler. FormatString : FlexGrid in kse basligi yazisini belirler. GridColor : FlexGrid kontrolnde hcreler arasindaki izgilerin rengini belirler. GridcolorFixed : FlexGrid kontrolnde en son satir ve en son stun izgilerinin rengini belirler. GridLines : Hcreleri ayiran izgi tipini belirleyen seenekler sunar. GridLinesFixed : Fixed kismin izgi stilini belirleyen seenekler sunar. GridLinesWidth : Grid izgisinin kalinligini belirler. Height : Nesnenin yksekligini belirler. HighLight : Konumlanilan seenekler sunar. hcrenin belirgin olup olmamasi ile ilgili

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

Microsoft Visual Basic 6.0


RowHeightMin : Btn kontroller iin satirin minimum yksekligini belirler. Rows : Satir sayisini belirler. ScrollBars : Kaydirma ubuklari ile ilgili seenekler sunar. TabIndex : TAB tusuna basildiginda kainci tabda kendine ulasilacagini belirler. TabStop : TAB ile seilmesi sonlandirilir. Tag : Herhangi bir veriyi saklamak iin kullanilir. TextStyle : Yazilari yazma biimi. ToolTipText : Fare nesnenin zerindeyken olusacak mesaji belirler. Top : Nesnenin stten hizasini belirler. Visible : Form aktifken nesnenin grnr olu olmayacagini belirler. True = grnr False = grlmez Width : Nesnenin genisligini belirler. WhatThisHelpID : Baglam numarasinin birlestirilmesini belirler.

MSFlexGrid Metodlari (Methods)


Bu nesnenin btn zellikleri metod olarak da kullanilir. zelliklerden farkli olan metodlar ve kod sayfasinda kullanim sekilleri asagida verilmistir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


MSFlexGrid1.CellPicture= Load Picture ( ) CellPictureAlignment : Hcrenin iindeki resmin sag, sol, st vb. yerini belirler. MSFlexGrid1.PictureAlignment = justify CellTextStyle : Hcrenin iindeki yazinin grnme stilini belirler. MSFlexGrid1.CellTextStyle =flexTextFlat CellTop : Hcre iinde ste yaz. MSFlexGrid1.CellT op CellWidth : Hcrenin genisligini MSFlexGrid1.CellWidth CellClear : Hcrenin ierigini temizler. MSFlexGrid1.Clear CellClip : Bir izgara iindeki seilmis olan blgenin ierigini verir. Ayrica birok hcreye birden atama imkani verir. Ayni satirdaki hcreler arasinda chr(13) karakteri, bir sonraki stuna geis iinde Chr(9) karakteri bulunur. MSFlexGrid1.Clip = 1,1. hcre+ Chr(9) + 1,2. hcre + Chr(13) + 2,1. hcre CellColVisible : Stunun grnrlgn belirler. MSFlexGrid1.ColVisible =True /False CellColWidth : Stunun genisligini belirler. MSFlexGrid1.ColWidth FixedAlignment: Fixed olarak adlandirilan gri kolonlarin alignmentlarini ayarlar. MSFlexGrid1.fixedAlignment = hWnd : Windows altinda alisan kontrollerin handle diye adlandirilan tanitici bir numarasi vardir. Windows bu numarayi kullanarak kontrolleri tanir. Visual belirler.

302

Microsoft Visual Basic 6.0


Basic ta bu numara nesnenin hWnd zelligi ile programin alismasi esnasinda grenilebilir. hWnd zelligi genellikle Windows API agrilarinda gereklidir. MergeCol : Istenilen stunlarin birlestirme islemi yapilir. MSFlexGrid1.MergeCol (1) = True MergeRow : Istenilen satirlarin birlestirme islemi yapilir. MSFlexGrid1. MergeRow (1) = True Picture : FlexGrid in grntsn resim olarak belirlemeye yarar. MSflexGrid1.Picture = LoadPicture ( ) Refresh : Yenileme - gncelleme MSFlexGrid1.Refresh RemoveItem : Index numarasi verilen satiri siler ve yukariya dogru kaydirir. MSFlexGrid1.RemoveItem 1 Row : Satir sayisini belirler. RowHeight : Satir yksekligini belirlemeye yarar. RowVisible : Istenilen satirin grnrlgn belirler. SetFocus : Odaklanma noktasi. ShowWhatsThis : Bu nedir simgesini ekler. Sort : Asagidaki seeneklerden biri seilerek Grid iindeki stunlardan birine gre sirlanabilir. Eger seili bir alan varsa siralama islemi sadece o alanda uygulanir. Seili alan yoksa aktif stuna gre siralama yapilir. flexSortNone flexSortGenericAscending flexSortGenericDescending flexSortNumericAscending flexSortNumericDescending flexSortstringNoCaseAscending 0 1 2 3 4 5 Siralama yok Artalan Siralama Azalan Siralama Artan Sayisal Siralama Azalan Sayisal Siralama Byk kk harf ayrimi yapmayan, Artan Siralama

303

Microsoft Visual Basic 6.0


flexSortNoCseDescending flexSortStringAscending flexSortStringDescending flexSortCustom 6 Byk kk harf ayrimi yapmayan, Artan Siralama 7 Byk kk harf ayirimi yapan, Artan Siralama 8 Byk kk harf ayirimi yapan, Azalan Siralama 9 zel siralama. Siralamanin nasil olacagi Compare olayina yazilacak kodla yapilir.

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.

MSFlexGrid Events (Olaylar)


Click : Farenin sol tusuna bir kez tiklandigi an. DBClick : Farenin sol tusunun iki kez tiklandigi an. Dragdrop : Farenin srklenip birakilmasi ani. DragOver : Farenin nesne zerinden geerken olusan an. EnterCell : Bir hcrenin aktif hale geldigi an. GotFocus : Nesnenin zerine gelinip aktif oldugu an. Keydown : Klavyenin tusuna basildigi an. KeyPress : Klavyeden gelen herhangi bir tustan bir deger alindiginda yapilan olay. KeyUp : Key down olayinin tam tersi. LeaveCell : Hcrenin aktiviteyi kaybettigi an.

304

Microsoft Visual Basic 6.0


LostFocus : Nesne zerinden ayrilma ani. MouseDown : Herhangi bir olay zerindeyken farenin tuslarina tiklandigi an. MouseMove : Herhangi bir olay zerindeyken farenin hareket ettirildigi an. MouseUp : Mousedown olayinin tam tersi . OLECompleteDrag : Drag Drop islemi tamamlandiginda veya iptal edildiginde bu olay meydana gelir. OLEGiveFeedBack : bu olay, OLE kaynaginin srkle birak islemi esnasinda fare seklinin degismesi gerektigi durumlarda meydana gelir. OLEStartDrag : Srkleme (drag ) islemi basladiginda gereklesecek olan olaydir. RowColChange : Aktif olan hcre kontrolnn baska bir hcreye gemesi halinde yani o hcrenin aktif olmasi halinde gereklesen olaydir. SelChange : Seili alanin degismesi halinde gereklesen olaydir. Scroll : Bu olay hareket ubugundaki (scrollbar) kutucugu hareket ettirdigi zaman gereklesen olaydir. Validate : Farkli bir kayit aktif haline gelmeden nce , Update, Delete, Unload, Close metotlarindan nce meydana gelen olaydir.

305

Microsoft Visual Basic 6.0 D-Microsoft Forms 2.0 object Library:

Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Forms 2.0 object Library seenegi seilerek istedigimiz Companent' i ekleriz.

MultiPage: Bilginin ok ekranlarini tek set


olarak sunar. esitli siniflar iine siralanilabilen ok miktarda bilgi ile alisdiginizda multipage kullanilabilir. 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. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. Font: Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. HelpContextID: Indexli kullanimda indexini belirler. Index: Index numarasini belirler. Left: Sola hizasini belirler.

306

Microsoft Visual Basic 6.0


MultiRow: Kontroln listede daha ok n siraya sahip oldugunu belirler. Style: Belirtilmis listedeki karisik uzunluk ve genisligi belirler. TabFixedHeight: Belirtilmis listedeki uzunlugu belirtir. TabFixedWidth: Belirtilmis listedeki genisligi belirler. TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. TabOriertation: Listelerin yerini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. 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.

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

Microsoft Visual Basic 6.0


MultiPage1.SetFocus: Belirlenmis kontrol veya forma thefocus hareket eder MultiPage1.ShowWhatsThis: Pencereler 95nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gster .

ToogleButton: Bilginini seim

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

Microsoft Visual Basic 6.0


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. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. Font: Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. HelpContextID: Indexli kullanimda indexini belirler. Index: Index numarasini belirler. Left: Sola hizasini belirler Loced: Veri girisine izin verilip verilmeyecegini belirler. MouseIcon: Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Mouse nesnenin zerindeyken hangi sekli alacagini belirler. Picture: Bir resme baglanmayi saglar. PicturePosition: Belirlenen resimle aradaki baglantigi belirler. TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. TextAlign: Kontrole texttin nasil baglancagini belirtir. ToolTipText: Mouse nesne zerindeyken mesaj verdirmek iin kullanilir.

309

Microsoft Visual Basic 6.0


Top: stten hizasini belirler. TripleState: The Null Stote i in bir kontrol kutusunun ya da ToogleButtonun kullanici tarafindan belirtilip belirtilmeyecegini saglar. 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 bilgiyi forma kelime blerek ya da blmeden getirilecegini belirler.

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

Microsoft Visual Basic 6.0


Tabstrip: Grlebilir grup olarak bir
takim ilgili kontrolleri sunar. Ilgili kontroller iin bilginin farkli setlerini grmek iin tabstrib i kullanabiliriz. 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. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. Font: Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. HelpContextID: Indexli kullanimda indexini belirler. Index: Index numarasini belirler. Left: Sola hizasini belirler. MouseIcon: Mouse nesnenin zerindeyken hangi resmi alacagini belirler.

311

Microsoft Visual Basic 6.0


MousePointer: Mouse nesnenin zerindeyken hangi sekli alacagini belirler. MultiRow: Kontroln listede daha ok n siraya sahip oldugunu belirler. Style: Belirtilmis listedeki karisik uzunluk ve genisligi belirler. TabFixedHeight: Belirtilmis listedeki uzunlugu belirtir. TabFixedWidth: Belirtilmis listedeki genisligi belirler. TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. TabOriertation: Listelerin yerini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. 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.

TabStrip Fonksiyonlari: TabStrip1.Container: Formda kontrole ait mevcut atdesign zamanlamasi


yapmaz.

TabStrip1.Drag: : Herhangi bir kontrolun srkleme alismasini iptal eder


izgi men sekil zamanlayici veya commondialog kontrol eder . TabStrip1.Move: Mdiform form hareketini kontrol eder.

TabStrip1.Object: : zellik veya metodu grlebilir yolla kontrol eder


otomatik olarak ismini belirler.

312

Microsoft Visual Basic 6.0


TabStrip1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. TabStrip1.SetFocus: Belirlenmis kontrol veya forma thefocus hareket eder .

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

Microsoft Visual Basic 6.0


DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. HelpContextID: Indexli kullanimda indexini belirler. Index: Index numarasini belirler. Left: Sola hizasini belirler. Max: ScroolBar ya da SpinButton degeri iin max degeri belirler. Min: ScroolBar ya da SpinButton degeri iin min degeri belirler. MouseIcon: Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Mouse nesnenin zerindeyken hangi sekli alacagini belirler. Oriantation: SpinButton ya da ScroolBar!in karsidaki bilgi ile ilgili olup olmadigini belirler. Smallchange: ScroolBAr ya da SpinButtondaki belgelerin kullanici tarafindan girildiginde olusan hareketlerin oranini belirler. TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. 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.

314

Microsoft Visual Basic 6.0


Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0 E-Microsoft Hrerarchikal FilexGrid Control :

Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden seenegi Microsoft Hre rarchikal FilexGrid Control seilerek istedigimiz Companent' i ekleriz.

MshflexGrid: Microsoft hiyerarsik


flexgrid mshflexgrid gsterimleri kontrol eder ve tabular verisini isletir. Mshflexgrid in herhangi bir hcresinde metin resim veya her ikisini yerlestirebiliriz. Name: : Program ierisindeki ismini belirler. AllowbigSelection: Kolon veya sira basliginda, seilmek iin btn kolon veya sirayi belirler. AllowUserResizing: Kullanici, mshflexgrid ta resize siralari ve kolonlarda fareyi kullanabilir . Appearance: Formdaki grntsn belirler. Back color: Arka plan rengini belirler. BackColorBkg: Mshflexgridin esitli elemanlarinin zemin rengini belirler. BackColorFixed: Mshflexgridin esitli elemanlarinin zemin rengini belirler. BackColorSel: Mshflexgridin esitli elemanlarinin zemin rengini belirler. BackColorUnpoulated: Mshflexgri din esitli elemanlarinin zeminrengini belirler. BandDisplay: Mshflexgrid iindeki batlari gsterdigini belirtir.

316

Microsoft Visual Basic 6.0


BorderStyle: Kenar izgilerini belirler. CausesValitation: Controlde odaklanmasini kaybetmis olan olusumlarini tekrar dndrme ya da kurma islemini yapar. DataMember: Data baglantisi kurar ve bir deger belirtir. DataSource: Veritabaninin tablosunu belirler. DataField: Veritabanina baglanti iin alan seilmesini saglar. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. FillStyle: Sekilleri doldurma biimini belirler. FixedCols: Mshflexgrid iinde sabit kolonlarin toplam sayisini belirtir. FixedRows: Mshflexgrid iinde sabit siralarin toplam sayisi belirtir. FocusRect: Mshflexgrid gncel hcre etrafinda odak dikdrtgeni iz mis olmasi gerekdigini belirleyen degeri belirtir. Font: Yazi tipini belirler. FontFixed: Sabit hcrelerde metinin yazi tipini belirler.

317

Microsoft Visual Basic 6.0


FontWidth: Mshflexgrid veya iinde gsterilen metin iin kullanilan metnin genisligini belirler. FontWidthFixed: Fontwidth , fontwidthband , fontwidthfixed ve ontwidthheader zellikleri iin metin dizim kurallari bu parada belirlenir. ForeColor: Aiklama yazisinin rengini belirler. FormatString: Metini sabitlestirilen kolon genislikleri , siraya koyar ve mhflexgridin kolon metnini sabitlestirir . GridColor: Hcreler arasinda izgi, bant ve basliklar arasindaki rengini belirler. GridLines: izilen izgilerin kenar rengini belirler. HighLight: Seilmis hcreler mshflexgrid iinde nemli olaylari belirtdigini belirtir. MergeCells: Belirtilen hcreleri belirleyen deger ayni ierik , siralari veya kolonlari kapsayan tek hcrede gruplasmis degeri belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. PictureType: Resim zelligi yoluyla retilmek iin resimin tipini belirler. Redraw: Mshflexgridi belirleyen deger herbirisi degisdikten sonra mshflexgrid , otomatik olarak redrawn olmasini saglar. RowHeightmin: Btn kontrol , intwips iin minimum sira yksekligini belirler. Row: Satir ekleme sayisini belirler. RowSizingMode: Mshflexgridta siralarin size modunu tarif eden degeri belirler. ScrollBars: Mshflexgrid in yatay veya dikey barlarina sahip oldugunu belirleyen degeri belirtir. ScrollTrack: Mshflexgrid kullanirken , barlar boyunca bar kutusunu hareket et tirir. SelectionMode: Mshflexgridi kolonlar yoluyla siralar veya seim yoluyla dzenli hcre seimini belirler.

318

Microsoft Visual Basic 6.0


TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. TextStyle: zel hcre veya hcrelerin belirler. iinde metin iin boyutlu biim

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

Microsoft Visual Basic 6.0


MSHFlexGrid1.CellPicture: Gncel hcre veya hcrelerde gsterilmek iin grnt zelliklerini belirler. MSHFlexGrid1.Clear: Mshflexgrid in ierigini temizler. Bu btn metin resimler ve hcre formatini ierir. Bu metod mshflexgrid iinde siralar ve kolonlarin sayisini etkilemez. MSHFlexGrid1.Clip: Mshflexgrid in seilmis blgesinde hcrelerin ierigi bu zellikle belirlenir. MSHFlexGrid1.ColAlignment: Kolonda verinin siraya konmasini saglar. Bu baslik iinde bant veya kolon iinde standart kolon olabilir. MSHFlexGrid1.ColData: Uzun ve her birisi sirali kolon ile ilgili degerlendirmeleri veya bantlari belirler. MSHFlexGrid1.CollapseAll: Mshflexgrid iinde btn belirlenmis bantlarin siralarini belirler. MSHFlexGrid1.Sort: Seilmis kritere gre, seilmis siralari siralayan degeri belirler. MSHFlexGrid1.MergeCells: Ayni ierikli hcreler ok sayida sirayi veya kolonu kapsayan tek hcrede gruplama olmasi gerekdigini belirleyen deger belirler. MSHFlexGrid1.Recordset: Recordset veri kontrolu zellikleri yoluyla tanimli degeri setler.

320

Microsoft Visual Basic 6.0 F-Microsoft Internet Transfer Control :

Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Internet Transfer Control : seenegi seilerek istedigimiz Companent' i ekleriz.

Inet : Internet transfer kontrolu,


internet hypertext transfer protokol http ve dosya transfer protokol ftp de ok genisce kullanilan protokollerin ikisininde uyarlamasini saglar. Http protokolunu kullanarak html dokmanini geri alabilir, dnya apinda ag hizmetilerine baglayabiliriz. Ftp protokolu ile, download a ftp hizmetilerine baglanabiliriz. Name: : Program ierisindeki ismini belirler. Accesstype: Kontrol internet ile haberlesmek kullanacagini erisimin tipini belirleyen degerdir .Eszamanli olmayan talep , isleme tabi tutulur iken bu deger , degistirilebilir ama , etki almayacak sonraki baglanti , kurulana kadar .gerlidir. Document: Kullanilan dosya veya dokman , metodunu isletir. eger bu zellik , belirtilmezse , hizmetiden n deger dokman ,istenmez . eger hibir dokman , belirtilmezse alismalar yazmak iin engellenir. Password: Eger bu zellik bos birakilirsa kontrol n deger sifreyi gnderecek . Protocol: Kullanilan protokolu belirtilen deger ve metodta isletir . Proxy: Accesstype zelligi sadece Icnamedproxye kuruldugunda kullanilir . RemoteHost: Uzak bir bilgisayara baglanti yapilacagini belirler.

321

Microsoft Visual Basic 6.0


RemotePort: Uzak bir bilgisayarda kullanilmak iin Internet merkezini belirler. RequestTimeout: Talepi tamamlamak iin ikincinin sayisini bekler. Url: Bu kontrol yoluyla URL yi kullanir. Tag: Herhangi bir mesaj saklamak iin kullanilir. Top: stten hizasini belirler. UserName: Uzak bilgisayarlara talepler ile gnderilen ismi belirler.

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

Microsoft Visual Basic 6.0 G-Microsoft MAPI Controls:

Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft MAPI Controls seenegi seilerek istedigimiz Companent' i ekleriz.

Mapi Session: Message uygulama


programi ara birim mapi kontrolleri size grlebilir temel mapi uygulamalari saglanilan posta yaratmasina izin verirler. Iki mapi kontrolu vardir. Name: Program ierisindeki ismini belirler. DownLoadMail: Eger herhangi bir yeni posta dowloaded olmaliysa belirtilen yeni oturum baslatildiginda dowloaded edilir. True ise edilir. Index: Index numarasini belirler. Left: Sola hizasini belirler. LogonUI: Diyalog kutusunu belirtmek iin kullanilir. NewSession: Kullanilan geerli oturum varsa bile yeni posta oturumu kurulmus olmasi gerekdigini belirtir. Password: Username zelligi ile ilgili hesap sifresini belirtir. Tag: Herhangi bir mesaj saklamak iin kullanilir. Top: stten hizasini belirler. UserName: Hesap kullanici ismini belirler.

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

Microsoft Visual Basic 6.0


MAPISession1.SignOn: Username ve sifre zellikleri tarafindan belirtilen kullanici temelde olan mesaj alt sistemine oturumunu saglar.

Mapi Messages: Mapimessages

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

Microsoft Visual Basic 6.0


Mapimessages Fonksiyonlari :
MAPIMessages1.Action: Mapimessages kontrolunun istenildiginde hareket etmesini belirler. Bu zellik tasarim zamaninda kullanilmaz. MAPIMessages1.AttachmentCount: O anki indeksli mesaj ile ilgili baglantilarin toplam sayisi belirler. Bu zellik tasarim zamaninda kullanilmaz. MAPIMessages1.AttachmentIndex: O anki indeksli baglantiyi belirtir. Bu zellik tasarim zamaninda kullanilmaz. MAPIMessages1.AttachmentPathName: O anki indeksli baglantinin yol ismini belirtir. Bu zellik tasarim zamaninda kullanilmaz. MAPIMessages1.AttachmentPosition: Mesaj blm iinde o anki indeksli baglanti pozisyonunu belirtir. Bu zellik tasarim zamaninda kullanilmaz. msgindex - 1 kurulmaduka read-only dir. MAPIMessages1.Forward: Ileriye dogru mesaj gnderir. MAPIMessages1.MsgConversationID: O anki indeksli mesaj iin grsme tanimlanmasi degerini belirtir. Msgindex - 1 kurulmaduka read-only dir. MAPIMessages1.MsgID: O anki indeksli mesajin belirtecini belirtir. MAPIMessages1.MsgNoteText: Mesajin metin blmn belirtir. Bu zellik tasarim zamaninda kullanilmaz. Msgindex kurulmaduka read-only dir. MAPIMessages1.Reply: Mesaja cevap verir. MAPIMessages1.ResolveName: O anki indeksli alicinin ismini zer. MAPIMessages1.Send: Mesaji gnderir. MAPIMessages1.Show: Posta adres dialog kutusunu veya o anki indeksli alicinin detay bilgilerini gsterir.

325

Microsoft Visual Basic 6.0 H-Microsoft Masked Edit Control:

Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden Microsoft Masked Edit Control seenegi seilerek istedigimiz Companent' i ekleriz.

MasketBox: Girilen veya gsterilen


verinin tipi hakkinda grlebilir bilgiler saglar. Bu kontrol ikon olarak nasil grndgdr. Name: Program ierisindeki ismini belirler. Appearance: Formdaki grntsn belirler. Back color: Arka plan rengini belirler. BorderStyle: Kenar izgilerini belirler. CausesValitation: Controlde odaklanmasini kaybetmis olan olusumlarini tekrar dndrme ya da kurma islemini yapar. ClipMode: esik yapdiginda girdi maskelemesinde aynen karakterleri iermesi veya eger dislamasi geregine belirle veya kopya , kumanda eder . 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

326

Microsoft Visual Basic 6.0


belirler. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manuel olacagini belirler. Enable: Clicklenebilirligini belirler. Tru ise click olayi alisir. Font: Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. HelpContextID: Indexli kullanimda indexini belirler. Index: Index numarasini belirler. Left: Sola hizasini belirler. Mask: Kontrol iin girdi maskelemesini belirle . MaxLength: maskelenmisin maksimum uzunlugu , kontrolu yayina hazirlar . MouseIcon: Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Mouse nesnenin zerindeyken hangi sekli alacagini belirler. OLEDragMode: ya para ya da programci , ole drag/drop alismasini ele al . PromptChar: karakter , girdi iin kullaniciyi harekete geirdi . PromptInclude: abuk karakterler metin zellik degerinde kapsanildigini belirtir. TabIndex: TABa basildiginda kainci atlamada kendine ulasacagini belirler. Tabstop: Tab ile seilmesini sonlandirir. Tag: Herhangi bir mesaj saklamak iin kullanilir. ToolTipText: Mouse nesne zerindeyken mesaj verdirmek iin kullanilir. Top: stten hizasini belirler. Value: Seenek seildiginde true degeri alir.

327

Microsoft Visual Basic 6.0


Visible: Form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Bir nesne iin belirtilmis ierik numaralarini belirler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0 I-Microsoft Windows Common Controls 6.0


Project mensnden Companend (Ctrl+T) seenegi seilir. Karsimiza gelen menden Microsoft Windows Common Controls 6.0 seilerek, eklenir.

TOOLBAR : Toolbar kontrolu , dgme


nesnesinin koleksiyonunu kapsar. Name: Nesneyi tanimlamak iin kullanilan isim. Align: Nesnenin oldugu yeri belirleyen degeri setler. AllowCustomize: Toolbar kontrolu ise deger belirlemesi ve dzenlenmesi. son kullanici yoluyla, toolbar dialog kutusunu dzenler. Appearance: Nesnenin grntsn belirler. BorderStyle: Kenar izgilerini belirler. ButtonHeight: Toolbar kontrolu dgmelerinin yksekligi belirler. ButtonWidth: Toolbar kontrolu dgmelerinin genisligi belirler. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir. Height: Nesnenin yksekligini belirler.

329

Microsoft Visual Basic 6.0


HelpContextID: Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. HelpFile: Yardim veya baglantili dokmantasyonu gstermek uygulamaniz yoluyla kullanilanin dosyalar. Index: Indexli kullanimda indexini belirler. Left: Nesnenin sola hizasini belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. Negotiate: Siraya koyulabilen aktif nesneyi belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. ShowTips: Tooltips nesne iin gsterildigini belirleyen degeri belirler. Style: Nesnelerin biimini belirler. Tipini ve alisma dzeni gibi. TabIndex: TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. TextAlignment: Dgme ile ilgilini metinin pozisyonunu belirleyen deger. TooTipText: Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler. Wrappable: Belirleyen deger toolbar ise, dgmeleri kontrol eder. pencere, resized oldugunda otomatik olarak sarar.

330

Microsoft Visual Basic 6.0


Toolbar Fonksiyonlari:
Toolbar1.Buttons: Dgme nesnesinin toolbar kontrolu koleksiyonuna iliskin degerleri belirtir. Toolbar1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. Toolbar1.Controls: Nesnede kapsanilan kontrollarin koleksiyonuna iliskin degerleri belirtir. Toolbar1. DataBindings: Gelistiriciye bindable zelliklerini kapsayarak mevcut databindings koleksiyon nesnesini geri dndrr. Toolbar1. DisabledImageList: Etkisiz kilinmis grntleri kullanmak zere imagelist i kontrol eder. Toolbar1.HotImageList: Imle clickable spotunda kaldiginda hangi grntler iin kullanilmak zere imagelist kontrolu ve biim zelligini belirler, tbrtransparente kurulur. Toolbar1.HWnd: Form veya kontrole ahandle kurar. Toolbar1. ImageList: Baska kontrol ile ilgili olan herhangi bir kontrol eder. imagelist 'i

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

Microsoft Visual Basic 6.0


STATUS BAR : Statusbar kontrolu ve pencere saglar. Ana formda konum
verisinin esitlerini belirler. Name : Nesneyi tanimlamak iin kullanilan isim. Align: Nesnenin oldugu yeri belirleyen degeri setler. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir. Font: RemoteData kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. Height: Nesnenin yksekligini belirler. Index: Indexli kullanimda indexini belirler. Left: Nesnenin sola hizasini belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. Negotiate: Siraya koyulabilen aktif nesneyi belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. Show tips: Tooltips nesne iin gsterildigini belirleyen degeri belirler. Style: Nesnelerin biimini belirler. Tipini ve alisma dzeni gibi.

332

Microsoft Visual Basic 6.0


TabIndex: TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. 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. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

StatusBar Fonksiyonla ri:


StatusBar1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. StatusBar1.HWnd: Form veya kontrole ahandle kurar. StatusBar1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. StatusBar1. Panels: Panel nesnesinin koleksiyonuna iliskin degeri beliriler. StatusBar1. Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr.

333

Microsoft Visual Basic 6.0


PROGRESS BAR :
Progressbar, soldan kisa ve kalin paralar ile dikdrtgeni doldurarak uzun alismanin gelismesini kontrol eder. Name: Nesneyi tanimlamak iin kullanilan isim. Align: Nesnenin oldugu yeri belirleyen degeri setler. Appearance: Nesnenin grntsn belirler. BorderStyle: Kenar izgilerini belirler. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir. Height: Nesnenin yksekligini belirler. Index: Indexli kullanimda indexini belirler. Left: Nesnenin sola hizasini belirler. Max: ScroolBar ya da SpinButton degeri iin max degeri belirler. Min: ScroolBar ya da SpinButton degeri iin min degeri belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. Negotiate: Siraya koyula bilen aktif nesneyi belirtir.

334

Microsoft Visual Basic 6.0


OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. Orientation: Nesneyi ynn ( yatay veya dikey) olarak belirleyen deger. Scrolling: Gelisme gsterimini belirleyen degeri kurar. TabIndex: TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. 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. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0


TREEVIEW :
Treeview kontrol gsterimleri etiket ve istege bagli bitmapdan olusan her bir dgm nesnesinin hiyerarsik listesi belirtir. Name: Nesneyi tanimlamak iin kullanilan isim. Appearance: Nesnenin grntsn belirler. BorderStyle: Kenar izgilerini belirler. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. Checkboxes: Checkboxes' i belirleyen deger. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir Font: RemoteData kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. FullRowSelect: Belirtilen btn degeri sira ile seer. Height: Nesnenin yksekligini belirler. HelpContextID: Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. HideSelection: Kontrol odagi kaybettiginde metni setigini belirleyen degeri belirler.

336

Microsoft Visual Basic 6.0


HotTracking: Mouse sensitive saglanildigini belirleyen deger. Indentation: Kontrolda nesnelerin girinti genisligini belirler. Index: Indexli kullanimda indexini belirler. LabelEdit: Listview veya treeview kontrolundaki listitem veya dgm nesnesinin etiketlerini yayina hazirlayabilir. Left: Nesnenin sola hizasini belirler. LineStyle: Dgm arasinda gsterilen izgilerin biimi belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. OLEDragMode: Bu kontrol OLE srkleme olayinda kaynagi ve bu islem gibi davranabildigi belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. PathSeperator: Delimiter karakterini yol iin kullanir. Fullpath zelligi yoluyla geri dner. Scroll: Scrollbars ile belirten degeri gsterir. SingleSel: Belirten deger madde ise, genislik seilir. Sorted: Iinde bulunan seenekleri siralar. Style: Nesnelerin biimini belirler. Tipini ve alisma dzeni gibi TabIndex: TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. 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.

337

Microsoft Visual Basic 6.0


WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0


LISTVIEW :
Listview ,drt farkli grslerin birini kullanan gsterimler maddelerini kontrol eder. Name: Nesneyi tanimlamak iin kullanilan isim. Appearance: Nesnenin grntsn belirler. Arrange: Listview kontrolu ikonu veya smallicon grsnde ikonlarinin dzenlenildigini belirleyen deger. BackColor: Arka plan rengini belirler. BorderStyle: Kenar izgilerini belirler. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. Checkboxes: Checkboxes'i belirleyen deger. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir FlatScrollBar: Nesnede scrollbarin grnslerini belirleyen deger. Font: RemoteData kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. FullRowSelect: Belirtilen btn degeri sira ile seer GridLines: izilen izgilerin kenar rengini belirler. Height: Nesnenin yksekligini belirler.

339

Microsoft Visual Basic 6.0


HelpContextID: Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. HideColumnSelection: Columnheader listview kontrolunda , rapor grsnde saklanir . HideSelection: Kontrol odagi kaybettiginde metni setigini belirleyen degeri belirler. HotTracking: Mouse sensitive belirteni saglanildigini belirleyen deger belirnenir. HoverSelection: Belirleyen deger listitem nesnesi ise, fare seilen deger stnde durur. Index: Indexli kullanimda indexini belirler. LabelEdit: Kullanici eger belirttigi deger, listview veya treeview kontrolunda ise listitem veya dgm nesnesinin etiketlerini yayina hazirlayabilir . LabelWrap: Etiket degerini koyar. Left: Nesnenin sola hizasini belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. MultiSelect: Listeden birden ok seenegi semeyi saglayan zelliktir.3 seenegi vardir.0 oklu seim yok 1 oklu seenek bir btn halinde 2 toplu seenekler ctrl tusu ile teker teker yapilir. OLEDragMode: Bu kontrol OLE srkleme olayinda kaynagi ve bu islem gibi davranabildigi belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. Picture: Bir resme baglanmayi saglar. PictureAlignment: Nesnenin resmi siraya koymasini belirleyen deger. Sorted: Iinde bulunan seenekleri siralar. SortKey: Listitem listview kontrolnde belirtilen deger , siralanilir.

340

Microsoft Visual Basic 6.0


SortOrder: Listitem listview kontrolunde belirtilen deger , yukari ikmada veya inmede , siralayip dzenler. 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. TextBackground: Listitem nesnesi metin gerisisi ise iki tane belirtilen seenek vardir, 0 saydam 1 donuktur. TooTipText: Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. View: Listview kontrolnde listitem nesnesinin grnslerini belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0


ListView1.ListItems: Listview kontrolunda listitem nesnesinin koleksiyonuna iliskin degeri belirler. ListView1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. ListView1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. ListView1.Selecteditem: Seilmis listitem ve dgme iliskin listeleri belirler. ListView1.SmallIcons: Listview kontrolunda ikon ve smallicon grs ile ilgili imagelist kontrolun belirler.

IMAGELIST : I magelist kontrol, indeksi veya anahtar tarafindan basvurulabilen listimage


nesnesi, herbirin koleksiyonu kapsar . Name: Nesneyi tanimlamak iin kullanilan isim. BackColor: Arka plan rengini belirler. Index: belirler. Indexli kullanimda indexini

ImageHeight: yksekligini kontrol eder. ImageWidth: genisligini kontrol eder .

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

Microsoft Visual Basic 6.0


UseMaskColor: Renk Maskcolor zelliginde tahsis etdigini belirleyen deger , maskeleme olarak kullanilir.

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.

SLIDER : Slider kontrol, slideri


kapsayan penceredir ve istege bagli isareti isaretler. Name: Nesneyi tanimlamak iin kullanilan isim. BorderStyle: Kenar izgilerini belirler. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir Height: Nesnenin yksekligini belirler.

343

Microsoft Visual Basic 6.0


HelpContextID: Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. Index: Indexli kullanimda indexini belirler. Left: Nesnenin sola hizasini belirler. Max: ScroolBar ya da SpinButton degeri iin max degeri belirler. Min: ScroolBar ya da SpinButton degeri iin min degeri belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. Orientation: Nesneyi ynn ( yatay veya dikey) olarak belirleyen deger. SelectRange: Eger slider kontrol , seilmis alana sahip olabilirse belirlenir. SelLength: Seilen karakterlerin sayisini belirler. SelStart: Eger hibir metin seilmezse seilen metinin baslangi noktasi pozisyonunu belirtir . Smallchange: ScroolBAr ya da SpinButtondaki belgelerin kullanici tarafindan girildiginde olusan hareketlerin oranini 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 TextPosition:Gsterilen metinin pozisyonunu nesneye iliskin belirleyen deger. TickFrequency: Tickfrequency zelligini ne kadar siklikta gereklestirecegini belirler. TickStyle: Sliderde isaretin yerlestirmesi gsterir veya isaretleri kontrol eder.

344

Microsoft Visual Basic 6.0


TooTipText: Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. Value: Seenek seildiginde true degeri alir. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0


IMAGECOMBO : Kontroln liste kisiminda her bir maddenin resmini
belirler. Name: Nesneyi tanimlamak iin kullanilan isim. BackColor: Arka plan rengini belirler. BorderStyle: Kenar izgilerini belirler. CausesValidation: Onaylamada kaybeden kontrolda gereklesdigi setleri gsterir. 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. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enabled: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir Font: RemoteData kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. ForeColor: Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler.

346

Microsoft Visual Basic 6.0


HelpContextID: Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. Indentation: Kontrolda nesnelerin girinti genisligini belirler. Index: Indexli kullanimda indexini belirler. Left: Nesnenin sola hizasini belirler. Locked:Text kutusuna girisi engeller. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. OLEDragMode: Bu kontrol OLE srkleme olayinda kaynagi ve bu islem gibi davranabildigi belirtir. OLEDropMode: Hedef parasi alismalarini ele aldigini belirtir. 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 Text: Nesnede kapsanilan metini belirler. TooTipText: Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

347

Microsoft Visual Basic 6.0


ImageCombo Fonksiyonlari:
ImageCombo1.ComboItems: Comboitems koleksiyonu ile imagecombo kontrolndaki btn comboitem nesnesini kapsar . ImageCombo1.Container: Formda kontrole ait mevcut atdesign zamanlamasi yapmaz. ImageCombo1.DataChanged: Thebound kontrolnda veri degistirildigi degeri gsterir ImageCombo1.HWnd: Form veya kontrole ahandle kurar. ImageCombo1ImageList: Baska kontrol ile ilgili olan herhangi bir imagelist 'i kontrol eder. ImageCombo1.Object: zellik veya metodu grlebilir yolla kontrol eder otomatik olarak ismini belirler. ImageCombo1.Parent: Kontrol veya baska nesneyi kapsayan form nesneyi geri dndrr. ImageCombo1.Selecteditem: Seilmis listitem ve dgme iliskin listeleri belirler. ImageCombo1.SelLength: Seilen karakterlerin sayisini belirler. ImageCombo1.SelStart: Eger hibir metin seilmezse seilen metinin baslangi noktasi pozisyonunu belirtir . ImageCombo1.SelText: Eger hibir karakterler seilmezseler su anki seilmis metini kapsayan string'den olusur .

348

Microsoft Visual Basic 6.0 I-MICROSOFT MULTIMEDIA DTCs

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

Microsoft Visual Basic 6.0


WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

Page Transitions Fonksiyonlari


Pagetransitions1.Name: Form , kontrolu tanimlamak kodta kullanilan isim veya veri, nesneye erisir. Pagetransitions1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna Iliskin zellikler. Pagetransitions1.Parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form , nesne veya koleksiyon. Pagetransitions1.Setfocus: Nesnenin etkin konum nceligine sahip olmasini saglar. Pagetransitions1.Drag: Basla , bit veya herhangibir kontrolun srkleme alismasini iptal eder. izgi , men , sekil , zamanlayici veya commondialog , kontrol eder . Pagetransitions1.Move: Midiform veya formu hareket veya kontrol eder. Pagetransitions1.Showwhatsthis: Pencereler 95' nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gsterir.

350

Microsoft Visual Basic 6.0


Time Lines
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. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

351

Microsoft Visual Basic 6.0


Time Lines Fonksiyonlari
TimeLines1.Name: Form , kontrolu tanimlamak kodta kullanilan isim veya veri, nesneye erisir. TimeLines1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna Iliskin zellikler. TimeLines1.Parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form, nesne veya koleksiyon. TimeLines1.Setfocus: Nesnenin etkin konum nceligine sahip olmasini saglar. TimeLines1.Drag: Basla , bit veya herhangibir kontrolun srkleme alismasini iptal eder. izgi , men , sekil , zamanlayici veya commondialog , kontrol eder . TimeLines1.Move: Midiform veya formu hareket veya kontrol eder. TimeLines1.Showwhatsthis: Pencereler 95' nin yaninda yardim saglanilan bu popup ne oldugunun kullanarak yardim dosyasinda seilmis konuyu gsterir.

352

Microsoft Visual Basic 6.0 J-MICROSOFT REMOTEDATA CONTROL

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

Microsoft Visual Basic 6.0


DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enable: Nesneye karsilik verebildigini belirleyen deger, Clicklenebilirligini belirler. True ile Click olayi alisir. EOFAction: Alinilan dosya hareketi degerini sonlandigini belirler. ErrorThreshold: Programda byk derecedeki hatalari belirler. Font: RemoteData kontrolu gncel yazi tipini belirtir. Yazi tipini belirler. ForeColor: Remotedata kontrolu ForeColorunu belirtir. Aiklama yazisinin rengini belirler. Height: Nesnenin yksekligini belirler. Index: zerinde alisilan nesnenin, ayni ad altinda toplanan dizi nesnelerden hangisi oldugunu belirten sayiyi ierir. KeysetSize: Keyset tamponunda siralarin sayisini belirler. Left: Nesnenin sola hizali olacagini belirler. LockType: Concurrency tasimasinin tipini belirtir. LoginTimeout: Veri kaynagini baglamak iin zaman asimi degerini belirler. LogMessages: ODBC iz dosyasinin yerini belirtir. MaxRows: Geri dnlmek iin siralarin maksimum sayisi belirtir. Negotiate: Siraya koyulabilen aktif nesneyi belirtir. Options: Rdoresultsetin speciefies seenegi ayarlari yapilir. Password: Rdoenvironmentin yaratilmasi sirasinda sifre kullanimini saglar. Prompt: abuk seenegi ODBCU belirtir. QueryTimeout: Kusku isletimi iin zaman asimi degerini belirtir.

354

Microsoft Visual Basic 6.0


ReadOnly: RemoteData kontrolu veri kaynagi, sadece okunuldugunu belirtir. ResultsetType: RemoteData kontrolu yoluyla desteklenmis resultset tipini belirler. RowsetSize: Rowsetde siralarin sayisini belirler. SQL: SQL' de aik ve net bir sekilde sorgu veya anlatim tanimlamasi yapar. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar. TooTipText : Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. UserName: Kullaniciyi belirtir. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler.

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

Microsoft Visual Basic 6.0


MSRDC1.EditMode: Gncel sira iin yayina hazirlanin durumunu belirten deger. MSRDC1.Environment: RemoteData kontrolu temelde olan rdoenvironment nesnesisine iliskin deger.

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

Microsoft Visual Basic 6.0 K-MICROSOFT RICHA TEXTBOX CONTROLS


Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT RICHA TEXTBOX CONTROLS seenegi seilerek istedigimiz Companent' i ekleriz.

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

Microsoft Visual Basic 6.0


DataSource: Veritabanindaki baglanilacak olan yeri belirler. DisableNoScroll: RichTextBox kontrolunda tomar barlari oldugunu belirleyen degeri belirtir. DragIcon: Srkleme olayi basladiginda farenin alacagi sekli belirler. DragMode: Srkleme olayinin otomatik veya manual olacagini belirler. Enable: Nesneye karsilik verebildigini belirleyen degeri belirler. Kullanilabilirligini belirler. FileName: Tasarim zamaninda RichTextBox kontrolu iine yklenilen dosyanin ismini,FileName' mini belirler. Font: Yazi tipini belirler. Height : Nesnenin yksekligini belirler. HelpContextID : Bir nesne iin yardimci dosyanin ve kimligin ierigindeki yanlislari belirler. HideSelection: Eger seilmis nesne highligted (bir seyin zel bir blmne dikkat ekmek) kalirsa degeri belirtir. Index : zerinde alisilan nesnenin, ayni ad altinda toplanan dizi nesnelerden hangisi oldugunu belirten sayiyi ierir. Left: Nesnenin sola hizali olacagini belirler. Locked: RichTextBox kontrolunda ierik yayina hazirlanilabildigi degeri gstermesi saglar. MaxLength: RichTextBox karakterlerin maksimum sayisi oldugu degeri gstermesi saglar. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler.

358

Microsoft Visual Basic 6.0


MultiLine: RichTextBox kontrolu kabul edebildigi ve gsterebildigi degeri gstermesi saglar. OLEDragMode: Bu kontrol OLE srkleme olayinda kaynagi ve bu islem gibi davranabildigi belirtir. OLEDropMode: Bu kontrol OLE srkleme olayi bittiginde veya durduruldugunda alisir. RightMargin: Sag kenar iin kullanilan Textwrap, Ortalama gibi zelllikleri hazirlar. ScrollBars: RichTextBox kontrolunun yataya sahip oldugunu gsteren degeri 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. Text: Nesnede kapsanilan metini belirler. TooTipText : Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin stten hizasini belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


RichTextBox1.SelCharOffset: RichTextBox kontrolunda metin alttaki subscript olarak veya stte superscript olarak, ana hat (normal) de ana hat ana hat belirdigini belirler. RichTextBox1.SelColor: RichTextBox kontrolunda metinin rengini belirler. RichTextBox1.SelFontName: RichTextBox kontrolunda araya koymak noktasini izlemek iin kullanilir. RichTextBox1.SelPrint: Basmak iin cihaza RichtextBox kontrolunda formatli metini gnderir. RichTextBox1.SelStrikeThru: RichTextBoxde su anki seilmis metinin dnen veya set yazi tipi biimleri, kontrol ederler.

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

Microsoft Visual Basic 6.0 L-MICROSOFT SYSINFO CONTROLS


Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT SYSINFO CONTROLS seenegi seilerek istedigimiz Companent' i ekleriz.

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

Microsoft Visual Basic 6.0


SysInfo1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna Iliskin zellikler. SysInfo1.OSBuild: Su anki kullanilan isletim sistemi hakkinda bilgi saglayan deger. SysInfo1.OSPlatform: Su anki kullanilan isletim sistemini tanimlayan deger. SysInfo1.OSVersion: Su anki kullanilan isletim sisteminin versiyonunu tanimlayan deger. SysInfo1.Parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form , nesne veya koleksiyon. SysInfo1.WorkAreaHeight: Pencereler 95 iin taskbar grnebilir masast ayarlarinin yksekligini ayarlar. SysInfo1.WorkAreaTop: Pencereler 95 iin grnebilir masast ayarlarinin st kenari iin taskbar koordinat degerini belirler. SysInfo1.WorkAreaWidth: Pencereler 95 iin taskbar grnebilir masa st ayarlarinin genisligi degerini belirler.

363

Microsoft Visual Basic 6.0

M-MICROSOFT TABBED DIALOG CONTROL


Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT TABBED DIALOG CONTROL seenegi seilerek istedigimiz Companent' i ekleriz.

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

Microsoft Visual Basic 6.0


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 hizali olacagini belirler. MouseIcon: Davranis biimi fare ikonu kurar. Mouse nesnenin zerindeyken hangi resmi alacagini belirler. MousePointer: Gsterilen fare isaret edicisinin tipini gsteren degeri belirler. Mouse nesne zerindeyken hangi sekli alacagini belirler. OLEDropMode: Bu kontrol OLE srkleme olayi bittiginde veya durduruldugunda alisir. Picture: Kontrol zerinde gsterecegi resim tanimlanir. ShowFocusRect: Odak dikdrtgeninde izilecegini belirler. Style: Nesnelerin biimini belirler. Tipini ve alisma dzeni gibi. Tab: Aktif nesne sayisini belirler. TabHeight: Nesnelerin yksekligini belirler. TabIndex: TAB tusuna basildiginda kainci TAB' da kendine ulasacagini belirler. TabMaxWidth: Herbir nesnenin maksimum genisligi belirler. TabOrientation: Kontrol etiketlerinin hangi tarafa gidecegine karar verir. Kontrol etiketlerine ynlendirme yapar. Tabs: Nesnelerin sayisini belirler. TabPerRow: Herbirisi sirasinda belirmek iin nesnelerin sayisi belirler. TabStop: TAB ile seilmis olani sonlandirilir. Tag: Programiniz iin ihtiya duyulan herhangi bir ekstra veriyi depolar.

365

Microsoft Visual Basic 6.0


TooTipText : Mouse nesne zerinde iken mesaj verdirmek iin kullanilir. Top: Nesnenin i st kenari ile st arasindaki mesafeyi belirler. Visible: Nesnenin form zerinde grnp grnmeyecegini belirler. True grnr. WhatsThisHelpID: Nesne iin birlesmis ierik sayisi setler. Width: Nesnenin genisligini belirler. WordWrap: Herbir nesnenin nvaninda metin sonraki izgiye saracagini belirler.

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

Microsoft Visual Basic 6.0 N-MICROSOFT WINSOCK CONTROLS


Project mensnden Companents (Ctrl+T) seenegi seilir. Gelen pencereden MICROSOFT WINSOCK CONTROLS seenegi seilerek istedigimiz Companent' i ekleriz.

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

Microsoft Visual Basic 6.0


Winsock1.Close: Hem msteri hem de hizmeti uygulamalari iin TCP baglantisi veya dinleyis soketini kapat. Winsock1.Connect: Uzak bilgisayara baglantiyi talep et. Winsock1.Listen: Bu metod, TCP baglantilari iin sadece alisir. Winsock1.Object: zellik veya metod , grlebilir temel yoluyla kontrola otomatik olarak uzatilan isminin aynisindan zellik veya sahip olan kontrolun metoduna iliskin zellikler. Winsock1.Parent: Kontrol veya baska nesne veya koleksiyonu kapsayan form, nesne veya koleksiyon. Winsock1.PeekData: PeekData hari Getdataya benzer, girdi kuyrugundan veriyi kaldirmak iin kullanilir. Bu metod, TCP baglantilari iin sadece alisir. Winsock1.SendData: Uzak bilgisayara veriyi gnderir. Winsock1.State: Numaralandirilan tip olarak ifade edilen kontrolun durumunu belirler.

368

Microsoft Visual Basic 6.0 8-DOSYA ISLEMLERI

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

Microsoft Visual Basic 6.0


3. Write:Ailmis olan dosya yazma islemine karsi kilitlenir. 4. Read Write:Ailmis olan dosyamiz hem yazmaya hem de okumaya karsi kilitlenir. Dosya No:Dosyamizi aarken verecegimiz numarayi belirtir.1-255 sayilari arasinda numara verebiliriz. Dosyamizi agirmak istedigimiz zaman verdigimiz numarayi kullaniriz.

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

Microsoft Visual Basic 6.0


Get #1,2,a Msgbox(a) Bu rnekte de bir numarali dosyani iki numarali kaydini okur. Visual basic programlama dilinde properties iindeki degiskenleri direkt olarak dosyaya yazamayiz ve okuyamayiz. Bunun yerine su sekli kullaniriz: a=text1.text Put #1,2,a kaydindan okunur. Bu rnekte Text1 iindeli deger a degiskenine aktarilir ve bir numarali dosyanin iki numarali

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

Microsoft Visual Basic 6.0


close# iktisi:Ferda Uca 18 Ayse nal 20 Input moddaki dosyalarda okuma islemi Input ve Line input komutlariyla olmaktadir. Input: Kullanimi:Input #dosyano,degisken listesi Dosya No:Okuma yapilacak dosyanin numarasini belirtir. Degisken Listesi:Dosyadan okuma yapildigi zaman kayitlar bu degiskene aktarilir. Line Input: Kullanimi:Line Input #dosyano,degisken Dosya No:Okuma yapilacak dosyanin numarasini belirtir. Degisken :Dosyadan okuma yapildigi zaman kayitlar bu degiskene aktarilir. Input ve line input arasindaki farki kisaca syle aiklayalim: Input komutunda tirnak iinde yazilmis olan karakterler bir kayit olarak kabul edilir. Tirnak iinde bir karakter bulunmuyorsa satir sonuna kadar olan karakterler bir kayit olarak kabul edilir. Line input komutunda ise tirnak isaretleri dikkate alinmamakta ve her satir bir kayit kabul edilmektedir. Bir rnekle bunu daha iyi aiklayalim: RNEK:Deneme isimdeki dosyada su kayitlar olsun: Input: Line input: Ferda Uca 18 Ayse nal 20 Dim isim,yas Open "/deneme" for input as #1 Input #1,isim,yas Print "isim=",isim Print "yas=",yas Close #1 Ferda Uca 18 Ayse nal 20 Dim isim,yas Open "/deneme" for input as #1 Input #1,isim,yas Print "isim=isim",isim Print "yas=",yas Close #1

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

Microsoft Visual Basic 6.0


Kullanimi:Input(karakter sayisi,dosya no) RNEK: Dim d Open /deneme.dat for input as#1 Do while NOT EOF(1) Print input(2,#1) Loop Close #1 Bu rnekte bir numarali kayittan iki karakter okur. Dosyalari Kapatmak:her iki modda da atigimiz dosyalari kapatmak iin CLOSE komutunu kullaniriz. Kullanimi:Close[#dosya no] Dosya No:kapatilacak olan dosyamizin numarasinin belirtir. Dosya Kontrol Fonksiyonlari: EOF:Numarasi verilmis olan dosyanin sonuna kadar kontroln yapar. Kontrol tamamlanan dosya TRUE degerini alir. Kullanimi:EOF(dosyano) LOF:Dosyanin byte olarak uzunlugunu bulmak iin bu fonksiyondan yararlanilir. Kullanimi:LOF(dosyano) SEEK:Aktif olan kaydi degistirmek iin bu fonksiyondan yaralanilir. Yani numarasi verilmis olan dosyayi yeni konumuna tasir. Kullanimi:SEEK #dosyano,yenikonum Aktif gsterici konumunu grmek iin bu komutun fonksiyon formati kullanilir: SEEK(dosyano) FreeFile:Atigimiz dosyalara kayit numarasi verirken,okuma veya dzeltme iinde ayni numarayla dosyamizi agiriyorduk. Her verdigimiz dosya numarasinin sayisi farkli olacagi iin dosya numarasini bulmak zor olabilir. Bu zorlugu engellemek yani dosya numarasini bulmak iin FreeFile fonksiyonunu kullaniriz. Dim FreeFIle Dosya no=FreeFile Open dosyaadi For dosyamodu as #dosyano

UYGULAMA:grencilerin bilgilerini tutan bir men olusturalim:Bu mende Kayit no Adi Soyadi Numara Cinsiyet Okul 373

Microsoft Visual Basic 6.0


Blm bilgileri bulunsun. Bu mennn kayit,arama,dzeltme,silme,listeleme modllerini olusturalim. rnegimizdeki bilgileri degisken olarak kullanmak amaciyla programimiza Project Add Modul seenegi ile modl ekleyerek tanimlama kismini string olarak hazirlariz. Type kayitbilgisi adsoy As String * 30 adres As String * 30 cinsiyet As String * 5 okul As String * 10 blm As String * 10 End Type Global tanimlar As kayitbilgisi Kayit bilgilerinin her biri Tanim olarak gec mekde ve tm form veya modllerde geerli olabilmesi iin Global kisminda dosyalama adi verdim. Bu kismi tanimladiktan sonra ilk modlmz olan Kayit modlmzn grnts asagidaki gibi olacaktir:

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

Microsoft Visual Basic 6.0


olarak;projenin adini yine ayni pencerede Name kisminda GIRIS olarak degistirdim.

Simdi kodlama kismimiza geebiliriz:

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

Microsoft Visual Basic 6.0

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

Textbox kutularinin ieriklerini temizler. 376

Microsoft Visual Basic 6.0


ikis Butonu(Command3):

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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:

Formumuzun basligini Silme olarak degistiririz. 382

Microsoft Visual Basic 6.0

Silinecek dosya ailir ve kayit numarasi bulunur. Silme Butonu(Command1):

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

Silinecek kayit numarasi girildikten sonra Enter tusuna basilinca 383

Microsoft Visual Basic 6.0


silinecek kayit dosyadan okunur. LISTELEME MODL:

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

Yeni formumuzun grntsn asagidaki gibi sadece Command butonlari kullanarak hazirlariz:

386

Microsoft Visual Basic 6.0


Formumuzun adini Ana Men olarak degistirir ve Project Mensnden Add File komutuyla diger modul dosyalarini projeye dahil ederiz.

Kayit,arama,dzeltme,silme ve listeleme butonlarinin Properties penceresinde Caption kisminda isimlerini verdikten sonra har butonun Click olayina isimleriyle birlikte Show kisimlarini yazariz.

Bylece tek bir men altinda tm islemlerimizi grntlemis oluruz.

387

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


tabani nesnesidir.Bu nesnenin bir kopyasi program alistigi srece Database zellikli bir degiskende saklanacagi iin bu degiskenin daha nceden tanimlanmasi gerekir.Database nesnesinin ierigini program alistigi srece bellekte saklayacak degisken Database bildiri deyimiyle tanimlanir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Bu sekilde olusturulan TEST.MDB dosyasi program alistigi srece program dahilinde artik bir nesnedir.Bu Database tipigndeki nesnenin de kendine zg Properties veya zellikleri bulunur.Nasil ki daha nce hakkinda bilgi verilen degisik nesneler zerinde islem yapmak iin degisik ama ve isleve sahip methodlar kullaniliyorsa Database nesnesi zerinde etkili olan methodlar vardir. Bu sekilde olusturulan bu TEST.MDB adli veri tabani dosyasinin ierigi henz bostur.Bu dosyada bilgi kaydedebilecek tablo henz yoktur.Bunu gstermek iin Visual Basic ile birlikte verilen Visual Data Manager uygulamasini alistirip hazirladigim TEST.MDB dosyasini ainca asagida verilen ekran grntsn elde ettim.

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

Microsoft Visual Basic 6.0


Dim Alan5 As New Field Dim Alan6 As New Field Set Dosya=OpenDatabase(C:\ORNEK\TEST.MDB) Tablo.Name=ADRES Alan1.Name=Ad Alan1.Type=10 Alan1.Size=15 Tablo.Fields.Append Alan1 Alan2.Name=Soyad Alan12.Type=10 Alan2.Size=15 Tablo.Fields.Append Alan2 Alan3.Name=Adres Alan3.Type=10 Alan3.Size=30 Tablo.Fields.Append Alan3 Alan4.Name=Tel Alan4.Type=10 Alan14.Size=10 Tablo.Fields.Append Alan4 Alan5.Name=Sehir Alan5.Type=10 Alan5.Size=10 Tablo.Fields.Append Alan5 Idx.Name=primaryKey Idx.Unique=True Idx.Primary=True Idx.Fields=Soyad Tablo.Indexes.Append Idx Dosya.Tabledefs.Append Tablo End Sub

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

Microsoft Visual Basic 6.0


Dim Dim Dim Dim Alan2 Alan3 Alan4 Alan5 As As As As New New New New Field Field Field Field

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

Microsoft Visual Basic 6.0


Set Dosya=OpenDatabase(C:\ORNEK\TEST.MDB) Bu program satiri ile hard diskteki adi TEST:MDB olan Access formatindaki veri tabani dosyasi ailip Database tipliDosyadegiskenine SET edilir.OpenDatabase() fonksiyonu verilmeyen parametreler iin varsayilan degerleri kullanilir.Eger ailmak istenen dosya ok kullanicili bir ortamda kullaniliyorve baska kullanicilarin dosyaya erisimi engellemek isteniyorsa OpenDatabase() fonksiyonuna 2.parametre olarak Truedegeri verilmelidir. Set Dosya=OpenDatabase(C:\ORNEK\TEST.MDB,true) Amak istediginiz dosya zerinde islem yapilmasini istemiyorsaniz dosyayi ReadOnly modunda amalisiniz.Dosyayi ReadOnly modunda aabilmek iin 3.parametreden yararlanilir.OpenDatabase() fonksiyonuna 3.parametre olaraktruemantiksal degeri verilirse dosyada degisiklik yapilamaz.Daha nceki konularda belirtildigi gibi Visual Basic dahilinde baska veri tabani programlari ile hazirlanan veri tabani dosyalarini aip zerinde islem yapma imkani vardir.Eger ailmak istenen dosya MDB uzantili Access formatli dosya degilse,sz konusu dosyanin tipi 4.parametrede belirtilmelidir. Set Dosya=OpenDatabase(C:\ORNEK\TEST.MDB,True,False,Paradox) rnek yordaminin degisken tanimlanmasi yapilan satirlarinda Dim Tablo As New TableDef ile yeni bir tablo nesnesi hazirlamistik.Daha nceki konularda belirtildigi gibi yeni bir nesne ilk kez hazirlanirken varsayim olarak bir takim zelliklere sahip olur.Daha sonradan sz konusu nesnenin zelliklerinde degisiklik yapilabiliniyordu.Bunun iin nce nesnenin adi,ardindan nesnenin degistirilmek istenen zelliginin adi belirtiliyordu.Veri tabani dosyasi iin hazirladigimiz Table tipli nesnenin henz adi belli degildir.Asagida verilen program satiri ile Table nesnesinin adi belirlenmektedir. Tablo.Name=ADRES Table nesnesine ADRES adini verelim.Table nesnesinin adi belirlendikten sonra sira,bu nesneye Field veya alan eklemeye gelir.Daha nceden ADRES adli Table nesnesinde 5 adet alanin bulunmasina karar vermis ve her an iin Field tipi degisken tanimlama islemi yapmis veya 5 adet yeni Field nesnesi hazirlamistik.Tablo adli Table nesnesinin adini Table nesnesine ait Name degiskenine nasil aktardiysak,benzer islemi butun Field nesneleri iin yapma k gerekir.Ancak bir Field veya alanin adindan baska,alanin tipinin ve uzunlugunun mutlaka belirtilmesi gerekmektedir.Asagida verilen 3 program satiri ile bir alanin adi,tipi ve uzunlugu belirtilmektedir. Alan1.Name=ad Alan1.Size=15 Alan1.type=10 397

Microsoft Visual Basic 6.0


Ilk bakista bu 3 program satirindan ilk ikisi sanirim hemen anlasilmistir. Ancak alanin veya Field nesnesinin tipini belirtmeye yarayan Type degiskenine aktarilan sayisal deger hakkinda bilgi vermek gerekiyor.Bu blmn basinda Visual Basic dahilinde Data kontrolnden yararlanmadan veri tabani dosyalari zerinde islem yaparken bazi sabitlerden yararlandigini belirtmistim.Bu sabitlerin bir kisminiasagida verilen ekran grntsnde grebilirsiniz. Bu ekran grntsne dikatlice bakilacak olunursa,yukardaki sayfada Field nesnesine ait Type degiskenine aktarilan 10 sayisal degerinin gerekte Text tipindeki verileri temsil ettigi tespit edilir.Field nesnesine ait Type degiskenine aktarilan 10 sayisal degerin Text tipindeki verileri temsil ettigini ezbere bilmiyorsaniz,10 yerine Type degiskenine dbText degerini aktarabilirsiniz. Bu program satirlari ile alanin veya Field nesnesini,Table nesnesine dahil etmeye gelir.nk simdiye kadar verilen program satirlari ile zellikleri belirlenen Field nesnesinin Table nesnesi ile bir iliskisi henz yoktur.nce New Field bildiri deyimi ile olusturulup daha sonra kendine ait Name,Type ve Size degiskenleri ile zellikleri belirlenen bir Field nesnesini Table nesnesine dahil etmek veya Field nesnesinden Table nesnesi iinde yararlanmak iin Append zelligi sz konusu nesneye ait Properties penceresinde grlebiliyordu. New Field bildiri deyimi ile olusturulan Field nesnesinin zelliklerini saklamada kullanilan toplam 8 degisken otomatik olarak tanimlanir.Bunlar Attirubutes,Collatingorder,Name,OrdinallPosition,Size,SourceField,SourceTable ve Type Field nesnesine ait bu degiskenlerin bazilarinin Data kontrolune ynelik oldugunu hemen hatirlatmak istiyorum. Hazirlanan Field nesnesinin Append deyimi ile Table nesnesine nasil eklendigi konusunda bilgi vermeden nce Table nesnesinin zellikleri veya Table nesnesine ait degiskenler hakkinda kisa bilgi verelim.Nasilki yeni olusturulan bir Field nesnesinin gerek duydugu degiskenler Visual Basic tarafindan otomatik olarak tanimlaniyorsa,ayni islemler Table nesnesine ait Field adli degiskende saklanir.Ltfen dikkat edelim:Field kendi basina bir nesne iken,Fields Table nesnesine ait bir degiskendir.BUNdan ikarilmasi gereken sonu su olmalidir:Hazirlanan Field nesnesi daha nceden hazirlanan Table nesnesinin Fields degiskenine aktarilmalidir.Bir Table nesnesinde birden fazla Field(ala) bulunacagindan Table nesnesine ait Fields degiskeni Dizi degisken zelligine sahip olmak durumundadir. Tablo.Fields.Append Alan1 Bu program satiri ile rnegimize gre hard diskteki adli ADRES ve program iindeki adiTablo olan Table nesnesine Append methodu ileAlan1adli Field

398

Microsoft Visual Basic 6.0


nesnesi eklenmektedir.Table nesnesine eklenen bu Field nesnesi Table nesnesine ait Fields degiskeninde saklanmaktadir.Hazirladigimiz rnek Table nesnesinde 5 alan olacagi iin ayni islemler diger btn alanlar iin tekrarlanir. Simdi sira table nesnesine,yapilacak kayitlara erisimde kullanilacak olan Indexin belirlenmesine geldi.Table nesnesine eklenen alanlardan istenen alan Index anahtari olarak kullanilabilir.rnek olmasi iin soyadadli alani Index anahtari olarak kullanacagiz.rnek programin basinda New Index bildiri deyimi ile program iindeki adiidx olan bir index nesnesi tanimlamistik.Bu Index nesnesinden Table nesnesi iinde yararlanabilmek veya Index nesnesini Table nesnesine dahil edebilmek iin daha nce Index nesnesine ait Name,Unique,Primary ve Fields degiskenlerine bilgi aktarilmasi gerekiyor. Idx.Name=PrimaryKey Idx.Unique=True Idx.Primary=True Idx.Fields=soyad Indexin adi Name degiskenine,Index anahtari olarak kullanilacak alanin adi ise Index nesnesine ait Fields degiskenine aktarilir.Table nesnesine ait Fields degiskeni ile Index nesnesine ait olani birbirleriyle karistirmamak gerekir.Bir Table nesnesinde birden fazla Index kullanilabilir.Ancak bunlardan yalnizca biri Primary Index olarak seilebilir.Hazirlanan Index nesnesi birincil index olarak kullanilacaksa,index nesnesine ait primary degiskenine mantiksal True degeri aktarilamalidir.Bunun disinda ayni anahtar degerine sahip birden fazla kayda izin verilip verilmeyecegi Index nesnesine ait Unique zelligi ile belirlenir. Index nesnesinin gerekli olan btn zellikleri bu sekilde belirlendikten sonra yine Append methodu ile hazirlanan Index nesnesi Table nesnesine dahil edilmelidir.Table nesnesine dahil edilen Field nesneleri Table nesnesine ait Fields nesnesine ait Indexes degiskeninde saklanir.Bu nedenle Append methodundan nce Table nesnesinin Index aktarilan degiskenin adi verilmelidir. Tablo.Indexes.Append Idx Hazirladigimiz Index nesnesine Idx adini verdigimizi hatirlatalim.Bu islemlerden sonra Table nesnesi veri tabani nesnesine dahil edilebilir duruma geldi.Table nesnesini Database nesnesine dahil edebilmek iin yine Append methodundan yararlanilir.Database nesnesinde bulunan Tablelar Database nesnesine ait TableDefs adli degiskende saklandigi iin database nesnesine Table nesnesi eklemede kullanilan program satiri asagidaki gibi olmalidir.Hazirladigimiz rnekte Database nesnesineDosyaadini verdigimiz biliyorsunuz.

399

Microsoft Visual Basic 6.0


Dosya.TableDefs.Append Tablo Bu rnek program alistirildiktan sonra harddiskteki adi TEST:MDB olan Access formatindaki veri tabani dosyasina ADRES adindaki bir tablo eklenir.bunu gstermek iin TEST.MDB dosyasini Visual Data Manager ile aip ekrana getirdim.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


satirlarini alistirmadan nce Visual Data Managerdan yararlanarak ADRES tablosuna bir kaydin girisini yapalim.Henz kayit iermeyen bir tabloyu aip tablonun alanlari zerine islem yaparsaniz hata meydana gelir.

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

Microsoft Visual Basic 6.0


MDB Dosyasina Yeni Kayit Yazmak Yukaridaki sayfada verilen program kodu ile daha nce olusturulan MDB uzantili veri tabani dosyasinin ilk kaydinin Print deyimi ile ekrana yazilmasi saglandi.Simdi ise sz konusu veri tabani dosyasina yeni bir kaydin nasil yazildigi konusunda bilgi verilecektir.Bunun iin asagida ekran grnts verilen formu hazirliyalim.

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

Microsoft Visual Basic 6.0


Database tipli degiskene Dosya, RecordSet tipindeki degiskene ise Kayit adini verelim.Degisken tanimlama isleminden sonra dosyanin ve tablonun ailmasi saglanmali veya tanimlanan degiskenlere Set edilmelidir.Bu islemleri yapacak program satirlarini From_Load yordamina dahil edelim.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Yneltilen soruya evet cevabinin verilmesi halinde ilk olarak Addnew methodu ile tablonun sonuna bos bir kayit eklenir.Ardindan TextBoxlarin ierikleri tek tek kaydin alanlarina aktarilir.En son olarak Update methodu ile RecordSet nesnesinin ieriklerinin tabloya yazilmasi saglanmaktadir.Tabloya ayni sekilde yeni bir kayit yazmak iin ayni islemlerin tekrar edilmesi gerekir. Veri Tabani Dosyasindaki Kayitlarin Arasinda Dolasmak Data kontrolnn anlatildigi blmde veri tabani dosyasinin kayitla ri arasinda nasil dolastigi ve bu amala hangi methodlarin kullanildigi konusunda bilgi verilmisti.Bu islemler Data kontrol yardimiyla ok kolay bir sekilde yapilabiliyordu.Simdi size Data kontroln kullanmadan veri tabani dosyasinin tablolarinda bulunan bulunan kayitlar arasinda nasil dolastigi konusunda bilgi verecegim. Bu amala hazirladigimiz rnek projenin Declaration kisminda yine Database ve RecordSet tipinde iki degisken tanimlayalim.Bu projenin formuna yukarida verilen rnek projenin formundan farkli olarak Sonraki Kayit ve nceki Kayit baslikli iki dgme olacak.Yukarida hazirlayip program kodlarini verdigimiz basit projeyi tablonun sonuna yeni kayit yazmayi dsnerek hazirladigimiz iin sizinde asagidaki sayfalarda anlatacagim islemleri yeni bir proje zerinde gereklestirmenizi istiyorum.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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.

Kayitlarda Degisiklik Yapmak


Veri tabani dosyasinin table nesnesine yazilmis bir kaydi degistirmek iin nce sz konusu kayit tablodan aranilip bulunur.Arama MoveNext veya Seek gibi methodlarla yapilabilir.Simdiye kadar veri tabani dosyasi tablosunda bulunan kayitlarin ieriklerini ekrana getirmek veya kayit girisi yapmak iin her seferinde her alan iin forma eklemis oldugumuz TextBox nesnelerinden yararlandik.Bu islemler iin TextBoxlardan yararlanmak bir zorunluluk olmamakla birlikte TextBox kullanmak programciya kolayliklar saglamaktadir.Buna gre ierigi TextBoxlar araciligi ile ekrana getirilmis olan 415

Microsoft Visual Basic 6.0


bir kayitta degisiklik yapmak iin nce sz konusu TextBoxlarin ieriklerinde istenen degisiklik yapilmalidir.Ardindan bu degisiklikler Table nesnesinin zerinde bulunan aktif kaydina yansitilmalidir.Bu islemleri gsterebilmek iinyukarida verilen rnek projenin formuna Degistir baslikli bir dgme ekleyelim.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Data2.Recordset.MoveNext Next Combo1.Text = "" Text1.SetFocus Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Kayit Yok") Text1.SetFocus End Select End Sub Private Sub Form_Load() Form1.Height = 3600 Form1.Width = 7000 End Sub

Private Sub Command1_Click() Data1.Recordset.Delete Data1.Refresh Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = ""

421

Microsoft Visual Basic 6.0


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 Command4_Click() Data1.Recordset.Edit 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 Data1.Refresh Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text1.SetFocus End Sub Private Sub Form_Activate() Text1.SetFocus End Sub Private Sub Form_Load() Form2.Height = 3600 Form2.Width = 7000 End Sub 422

Microsoft Visual Basic 6.0


Private Sub Text1_KeyPress(KeyAscii As Integer) On Error GoTo k If KeyAscii = 13 Then SQL = "select ham.* from ham where(ham.ad_soyad Text1.Text & "')" Data1.RecordSource = SQL Data1.Refresh Text1.Text = Data1.Recordset("ad_soyad") Text2.Text = Data1.Recordset("numarasi") Combo1.Text = Data1.Recordset("bolumu") Text3.Text = Data1.Recordset("odev") Text4.Text = Data1.Recordset("vize") Text5.Text = Data1.Recordset("final") End If Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Kayit Yok") End Select Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text1.SetFocus End Sub

like'"

&

423

Microsoft Visual Basic 6.0

Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Form3.Height = 6300 Form3.Width = 9930 End Sub

424

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Data1.Recordset.Update Data1.Refresh Text1.Text = "" Text1.SetFocus End If End Sub

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

Microsoft Visual Basic 6.0


Text9.Text = "CB" Text10.Text = "2.5" End If If Text8.Text > 70 And Text8.Text < 81 Then Text9.Text = "BB" Text10.Text = "3" End If If Text8.Text > 79 And Text8.Text < 96 Then Text9.Text = "BA" Text10.Text = "3.5" End If If Text8.Text > 94 And Text8.Text < 101 Then Text9.Text = "AA" Text10.Text = "4" End If End Sub Private Sub Command2_Click() Data3.Recordset.AddNew Data3.Recordset("numara") = Text6.Text Data3.Recordset("yil_ici") = Text7.Text Data3.Recordset("yil_sonu") = Text8.Text Data3.Recordset("harf") = Text9.Text Data3.Recordset("rakam") = Text10.Text Data3.Recordset.Update Data3.Refresh Text1.Text = "" Text2.Text = "" Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Text6.Text = "" Text7.Text = "" Text8.Text = "" Text9.Text = "" Text10.Text = "" Frame2.Visible = False Text1.SetFocus End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Command4_Click() Text1.Text = "" 427

Microsoft Visual Basic 6.0


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() Form6.Height = 3720 Form6.Width = 8190 Frame2.Visible = False End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) On Error GoTo k If KeyAscii = 13 Then SQL = "select ham.* from ham where(ham.ad_soyad Text1.Text & "')" Data1.RecordSource = SQL Data1.Refresh Text1.Text = Data1.Recordset("ad_soyad") Text2.Text = Data1.Recordset("numarasi") Combo1.Text = Data1.Recordset("bolumu") Text3.Text = Data1.Recordset("odev") Text4.Text = Data1.Recordset("vize") Text5.Text = Data1.Recordset("final") End If Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Kayit Yok") End Select Text1.Text = "" Text2.Text = ""

like'"

&

428

Microsoft Visual Basic 6.0


Combo1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text1.SetFocus End Sub

Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Form7.Height = 6300 Form7.Width = 9930 End Sub

429

Microsoft Visual Basic 6.0

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

Private Sub Text1_KeyPress(KeyAscii As Integer) On Error GoTo k 430

Microsoft Visual Basic 6.0


If KeyAscii = 13 Then SQL = "select ham.* from ham where(ham.ad_soyad Text1.Text & "')" Data1.RecordSource = SQL Data1.Refresh Text1.Text = Data1.Recordset("ad_soyad") Text2.Text = Data1.Recordset("numarasi") Combo1.Text = Data1.Recordset("bolumu") Text3.Text = Data1.Recordset("odev") Text4.Text = Data1.Recordset("vize") Text5.Text = Data1.Recordset("final") SQL = "select islenmis.* like'" & Text2.Text & "')" Data2.RecordSource = SQL Data2.Refresh from islenmis like'" &

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

Microsoft Visual Basic 6.0 10-VERI ERISIM YNTEMLERI


Veri erisim yntemleri (data access objects) programlama araciligiyla veritabani dosyalarina erismek iin kullanilan tekniklerdir. Veri erisim nesneleri (data access objects) ise veritabanlarina erisimi saglayan elemanlardir. Bugn uygulamalarda kullandigimiz verilerin bir kismi yerel birogu da uzak veritabanlarinda gelirler yada orada saklanirlar. Bu nedenle diger veritabanlarindaki verilere erisim yada client/server uygulamalar gelistirmek olduka yaygin bir programlama islemidir. Yapilan arastirmalarda kullanilan uygulamalarin ogunun dagitilmis yapida ve birok kullanici tarafindan kullanildigini gstermektedir. Microsoft Visual Basic, veri erisimi iin ok sayida arabirim(yntem,teknoloji) gelistirilmistir. Bunlar; VB-SQL, Jet/DAO, RDO ve ADOdur. Gelistirilen veri erisim teknikleri daha az katmanla ve daha etkin bir biimde verilere ulasmayi saglar. VBSQL DAO(Data Access Objects) RDO(Remote Data Objects) ADO(ActiveX Data Objects) Microsoft SQL Server iin gelistirilmis bir API-arabirimdir. Microsoft SQL Server ve Sybase SQL Servera erisim saglar. Microsoft Jet veritabanlarina erismek iin gelistirilmis ilk nesne temelli arabirimdir. DAO ayrica ISAM ve ODBC veritabanlarina erisim iin de kullanilir. Visual Basic ortaminda yer alan veri kontrollerine(Data Control) baglanarak kullanilan DAO veri erisim teknigi ile ok kolay bir sekilde veritabani yaratilir. Remote Data Objects,ODBC verilerine ulasmak iin kullanacaginiz diger bir arabirimdir. RDO, Jet ve ISAM veritabanlarina erisim iin kullanilmaz. RDOnun islevi ODBC zerinden iliskisel veritabanlarina baglanmaktir. ActiveX Data Objects veri erisim yntemi OLE DBye arabirim olan bir veri erisim yntemidir. OLE DB ve ODBC srcleri kullanir. ADO; RDO ve DAOnun gelismis biimidir. ODBC srcs ile ok sayida iliskisel veritabanina erisim iin gelistirilmis bir arabirimdir. zellikle DAO, RDO ve ADO gibi nesne-temelli erisimlerde yaygin olarak kullanilir. Alt dzey bir veri erisim yntemidir. Herhangi bir veritabani tipi ile kisitli degildir. Biim yada saklama yntemine bakmaksizin

DAO

RDO

ADO

ODBC

OLE DB

432

Microsoft Visual Basic 6.0


tm veritabanlarina erisim iin kullanilir. ODBCnin gelismis biimidir. RDS Remote Data Service ise ADO ile btnlesik Web verilerine erisim iin kullanilir.

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

Microsoft Visual Basic 6.0


RDO kullanimi DAO kullanimina benzer. Ancak RDOnun en nemli zelligi OBBC APInin gelismis zellikleridir. RDOnun standart VB Data Control gibi veri kendi kontrol vardir. 32-bitlik bu yeni programlama modeli olan RDO sayesinde Visual Basic programcilari ODBC zerinden AS/400 yada diger bilgisayar sistemlerine baglanabilirler. Visual Basicin standart veritabani motoru Jetdir. Veritabani motoru Microsoft Access veritabanlarina erisim iin gelistirilmistir. Jetin verilere erisim teknigi DAOdur. DAO ile veri erisimi Jet zerinden olurken, RDO ile ODBC verilere dogrudan erisim saglanir. Yerel mi? Uzak mi? (Local mi? Remote mi?) Eger verilere dosya sistemi araciligiyla erisiyorsaniz yere l verilerden sz ediyorsunuz demektir. Diger bir deyisle uygulamanin dogrudan ulastigi veriler yerel verilerdir. Uzak veriler ise uygulamanin yani sira diger bir islem ile ulasilan verilerdir. Bu islem genellikle DBMS olarak adlandirilir. Bir diger kavram client/server dir. Client/server uygulamalarinin amaci da uzak verilere erismektir. Client/Server sistemde veritabani motoru (veritabani islemlerini dzenleyen ktphane) merkezi bir server zerindedir. Bir veritabani motoru ok sayida clienta ayni anda hizmet verir. rnegin SQL-Server gibi. Uzak veritabani ise veritabani motorunun ayni bilgisayarda, sadece farkli bir bilgisayarda, sadece verinin farkli bir bilgisayarda olmasi anlamina gelir. Cursor Tipleri Bir veri erisim nesnesinin cursor tipi (gsterici tipi) verilere erisimin seklini belirlemek ve erisimin performansini artirmak iin kullanilan bir gedir. Bir veri erisim nesnesi yaratilacagi zaman drt degisik gsterici (cursor) tipinden birisi kullanilabilir. Dynamic Cursor Keyset Cursor Static Cursor Forward-Only Cursor

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

Microsoft Visual Basic 6.0


Sabit Gsterici(static cursor), ise belli bir verinin bulunmasi yada raporlarin retilmesi iin kullanilacak veri setinin degismeyen bir kopyasini yaratir. Veri nesnesi zerinde her trl harekete izin verir. Diger kullanicilar tarafindan yapilan eklemeler, degisiklikler ve silmeler grnmezler. Sadece-Ileri Gsterici(forward-only cursor), ise sabit gstericiye benzer bir sekilde alisir. Fakat kayitlar arsinda sadece ileriye dogru hareket etmeye izin verir. Veri nesnesi(recoordset) ailmadan nce onun CursorType zelligi ayarlanir. Eger hibir gsterici tipi belirtilmezse varsayilan gsterici kullanilir. rnegin ADO veri erisim yntemlerinde forward-only gsterici tipi varsayim olarak kullanilir. Veritabani islemlerinde zaman uyumluluk zelligi vardir. zellikle client/server uygulamalarda bu islem trleri ok nemlidir. Iki zaman uyumluluk islemi yapilir. Synchronous(zaman uyumlu) Asynchronous(zaman uyumsuz)

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

Microsoft Visual Basic 6.0

Zaman uyumlu ve zaman uyumsuz islemlerin isleyisi

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

Microsoft Visual Basic 6.0


Mesela Data Control kolay bir veritabani uygulamasidir ayrica Microsoft Accesse erismek iin Data Control kolaylikla kullanabilirsiniz. Remote Data Control(RDO) ise zellikle uzak veritabanlarina erisim iin kullanilan bir veri kontroldr. Ayrica 32-bit uygulamalar sunan RDC, yksek performans saglar.

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

Microsoft Visual Basic 6.0


Her bir TableDef bir yada daha fazla Field(alan) ierebilir. DAO Microsoft Access dosyalari kullanir. tarafindan olusturulan .MDB formatindaki

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

Microsoft Visual Basic 6.0


bilgisayarda,sadece verinin farkli bir bilgisayarda oldugu anlamina gelir. Yani Microsoft Jet Database Engine, client/server bir veritabani yneticisi degildir.

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:

DBEngine Workspaces Databases TableDefs QueryDefs RecordSet Containers

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

Microsoft Visual Basic 6.0

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.

DefaultUser Olusturulacak workspace nesnesinin varsayilan kullanici adini belirler.

DefaultPassword Workspace nesnesi olusturuldugunda varsayilan sifreyi belirler. DBEngine.defaultuser=AKTAN DBEngine.Default.Password=SIFRE IniPath 440

Microsoft Visual Basic 6.0


Jet database engine iin Windoes registreyinde kullanilan yol bilgilerini belirler. LoginTimeout ODBC veri kaynagina baglanti olusmadan nceki sreyi belirler. saglamaya alisildiginda bir hata

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

Microsoft Visual Basic 6.0


OpenDatabase Bir veritabani aar. Dim v_taban As workspace Dim data As Database Set data=v_taban.OpenDatabase(dosya.mdb.True)

RegisterDatabase Bir ODBC veri kaynaginin bilgilerini Windows registreyine aktarir.

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

Close Workspace nesnesini kapatir.

Dim dosya As Recordset Dosya.close

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

Microsoft Visual Basic 6.0

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)

OpenConnection ODBC veri kaynagi iin bir baglanti aar.

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)

Database Database nesnesi aik olan veritabani dosyalarina erisim saglar.

Metod lar i Close Aktif Database nesnesini kapatir.

CreateProperty 443

Microsoft Visual Basic 6.0


Yeni kullanici tanimli olan bir property nesnesi olusturur.

CreateTableDef Yeni bir TableDef nesnesi olusturur.

Execute Belirlenen SQL ifadesini alistirir.

NewPassword Database nesnesine yeni bir sifre atanir.

OpenRecordset Yeni bir Recordset nesnesini olusturarak onu Recordset koleksiyonuna ekler.

TableDef TableDef nesnesi veri tabaninda bulunan tablolara erismek ve onlari kullanmak iin kullanir.

Properties

RecordCount Tablodaki kayit sayisini belirler.

Replicable Nesnenin kopyasinin alinip alinmayacagini belirler. ReplicaFilter Kopyalama isleminden hangi kayitlarin alinacagini belirler.

SourceTableName 444

Microsoft Visual Basic 6.0


Baglantisi saglanmis tablonun adini belirler.

Updatable DAO nesnesinin gncellenebilir durumunu belirler.

ValidationRule Bir tablodaki alana girilecek veri iin gerekli kurallari belirler.

ValidationText Kuralin,sartin belirler. gereklesmemesi durumunda grntlenecek mesaji

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.

CreateProperty TableDef iin yeni bir property nesnesi olusturur.

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

Microsoft Visual Basic 6.0


Table Dynaset Snapshot Bu tip birbirinden farkli zelliklere sahiptir. Table

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

Microsoft Visual Basic 6.0


Burada nesne_adi olarak verilen ifade DataBase,TableDef,QueryDef ve RecordSet nesnelerine karsilik gelmektedir. Kaynak parametresi etmektedir. TableDef veya QueryDef nesnelerini temsil

Type parametresi ise RecordSetin tipini belirler.

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

Microsoft Visual Basic 6.0


Veritabaninda kayitlarin konumunu belirlemek iin kullanilir. Bookmark ile aktif olan kaydin konumu bir degiskene atabilir,gerektiginde geri agirip kullanabiliriz. Dim Dim Dim Dim w_space As Workspace data As Database r_set As Recordset bas As variant

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

eski yerine tekrar dndrlyor.

Bookmarkable Kayit setinin Bookmark islemini onaylayip onaylamadigini kontrol etmek iin kullanilir.

LastModified Recordset nesnesinin en son yenileme yerini belirler.

CacheSize ODBC veri kaynagindan alinacak ve saklanmis kayit sayisini belirler.

Connection Recordset nesnesine sahip olan Connection nesnesini atarlar.

DataCreated Bulunan nesnesinin olusturuldugu tarih ve saati gnderir.

EditMode 448

Microsoft Visual Basic 6.0


Bulunan kaydin bildi giris durumunu belirler.

Fitler Kayitlari filtrelemek iin gerekli sarti ayarlar.

Name DAO nesnesi iin kullanicinin tanimladigi adi belirler.

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

Microsoft Visual Basic 6.0


ValidationText Bir veri alanina bilgi giris sartini belirler. Mesela sadece 1 ve 50 arasi sayilarin kullanilmasini istedigimizde asagidaki gibi bir kod yazilir. Sayi.ValidationText=Gireceginiz olmalidir Sayi 1 ve 50 arasinda

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

Cancel Tm yapilan islemleri iptal eder.

CancelUpdate Bekleyen gncellemeleri iptal eder.

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

Microsoft Visual Basic 6.0


Delete Aktif kaydin silinmesi islevini yapar.

Edit Aktif kaydi dzenleme moduna alir.

FindFirst Belirlenen sarta uyan ilk kaydi bulur. Dim ara As String Ara= adsoy=Ayse Sahin r_set.FindFirst ara

FindLast Belirlenmis olan sarta uyan son kaydi bulur.

FindNext Belirlenmis olan sarta uyan sonraki kaydi bulur.

FindPrevious Belirlenmis olan sarta uyan nceki kaydi bulur.

Move Aktif olan kaydin yerini Recordset nesnesinde hareket ettirir.

MoveFirst Recordset nesnesi iindeki ilk kayda yerlesir.

MoveLast Recordset nesnesi iindeki son kayda yerlesir.

451

Microsoft Visual Basic 6.0


MoveNext Recordset nesnesi iindeki sonraki kayda yerlesir.

MovePrevious Recordset nesnesi iindeki nceki kayda yerlesir. r_set.MovePrevious

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

Microsoft Visual Basic 6.0


Veritabanlarini meydana getiren en temel taslardan biridir. Her tablo degisik alanlardan(field) olusur.

Pr opert ies

AllowZeroLength Veri alaninin uzunlugunun sifir olup olmayacagini belirler.

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

DataUpdatable Nesnenin gncellenebilme durumunu belirler.

DefaultValue Alan degisebilir. ii varsayilan deger belirlenir. Kullanicinin istegine gre

Tdfogr.Fields!Not.DefaultValue=50

FieldSize Kullanilacak olan alanin byklgn belirler.

Name DAO nesnesi iin kullanici tanimli adi belirler.

453

Microsoft Visual Basic 6.0


OrdinalPosition Fields koleksiyonuna alanin sira numarasini belirler.

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.

Type Nesnenin hangi islem tipinde oldugunu belirler.

ValidationRule Bir alana girilecek olan bilginin sinirlari belirlenir. Mesela sirket personeli kayitlari kontrol yapildiginda kayit disinda bir numara girilmesi engellenmis olur.

ValidaionText 454

Microsoft Visual Basic 6.0


Belirlenen sartlarin disinda bilgi veya mesaj girildiginde ekranda grntlenecek hata mesajini belirler.

Value Alanda sakli olan degeri gnderir.

DAOnun Forma Eklenmesi

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Yani baglantilari tamamlamak iin DataSource ve DataField seimleri yapilir. Asagidaki grnm elde edilir:

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

Microsoft Visual Basic 6.0

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.

Yada program kodu ile bunu kontrol ettirmek istersek

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

Microsoft Visual Basic 6.0


olan dosyalarda Connect degiskenine atama yapmaya gerek yoktur. Fakat digerlerinde durum byle degildir.

Tablodaki Kayitlar Arasinda Dolasmak

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

Projemiz en son haliyle alistirildiginda:

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

Microsoft Visual Basic 6.0

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.

Tabloya Yeni Kayit Girmek ve Kayit Silmek

466

Microsoft Visual Basic 6.0


Bu projemiz ile adres.mdb ierisinde degisiklikler yapabiliriz. Yeni kayit ekleme ekledigimiz kayitlari silmeSimdi formumuzu daha da genisleterek iki buton daha ekleyelim. Yeni kayit ve kayit silme

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

Microsoft Visual Basic 6.0

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.

Action Degiskeninin Ierigi

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

Microsoft Visual Basic 6.0


10 11 Close ile dosyayi kapatmak UnLoad ile formu yani dosyayi bellekten silmek

Bunlari grendikten sonra simdi kk bir rnek yapalim:

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

Microsoft Visual Basic 6.0

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.

Dosyayi Baska Kullanicilara Kapatmak Exlusive zelligi

470

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


KAYIT MODL

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

Microsoft Visual Basic 6.0


Text1.SetFocus End Sub Private Sub cikis_Click() Unload Me End Sub Private Sub Form_Activate() On Error GoTo k Data2.RecordSource = "TANIM" Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Data2.Recordset.MoveFirst For i = 1 To a Combo1.AddItem Data2.Recordset("Bolum1") Data2.Recordset.MoveNext Next i Combo1.ListIndex = 0 Text1.SetFocus Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Tanimlanmis Blm Kaydi Yok") End Select Text1.SetFocus End Sub

ARAMA MODL

474

Microsoft Visual Basic 6.0


Private Sub Form_Activate() On Error GoTo k Data2.RecordSource = "TANIM" Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Data2.Recordset.MoveFirst For i = 1 To a Combo1.AddItem Data2.Recordset("BOLUM1") Data2.Recordset.MoveNext Next i Combo1.ListIndex = 0 Text1.SetFocus Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Tanimlanmis Blm Kaydi Yok") End Select Text1.SetFocus End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) On Error GoTo k If KeyAscii = 13 Then sql1 = "select HAM.* from HAM where(HAM.ADSOYAD Text1.Text & "')" Data1.RecordSource = sql1 Data1.Refresh Text1.Text = Data1.Recordset("adsoyad") Text2.Text = Data1.Recordset("no") Combo1.Text = Data1.Recordset("bolum") Text3.Text = Data1.Recordset("odev") Text4.Text = Data1.Recordset("vize") Text5.Text = Data1.Recordset("quiz") End If Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Bu Kayit Yok") End Select Text1.SetFocus End Sub

like'"

&

Aramayi yapmak iin aradiginiz ismi yazip Enter a basmaniz yeterli olacaktir. 475

Microsoft Visual Basic 6.0

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

&

Microsoft Visual Basic 6.0


Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Activate() On Error GoTo k Data2.RecordSource = "TANIM" Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Data2.Recordset.MoveFirst For i = 1 To a Combo1.AddItem Data2.Recordset("BOLUM1") Data2.Recordset.MoveNext Next i Combo1.AddItem "tm kayitlar" Combo1.ListIndex = 0 Data1.RecordSource = "ham" Data1.Refresh Exit Sub k: Select Case Err Case Is = 3021 MsgBox ("Tanimlanmis Blm Kaydi Yok") End Select End Sub

Listelemek iin yani tm kayitlari gsterecegimiz nesne iin DbGrid kullandik. Istediginiz blm listeleyebilmeniz iin combo kutusundan bir blm ismi veya tmkayitlari seiniz alistirildiginda:

477

Microsoft Visual Basic 6.0

Bir baska proje:

478

Microsoft Visual Basic 6.0

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.

Datamizin baglanisi da sekilde grdgnn sekilde

olacaktir. Bundan sonra iseolusturulan tablonun baglanmasi 479

Microsoft Visual Basic 6.0

seklinde olacaktir. Access veritabanina baktigimizda ise

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

Microsoft Visual Basic 6.0


DBGrid1.Columns(3).Caption = "Raf Numarasi" DBGrid1.Columns(4).Caption = "Kritik Seviye" DBGrid1.Columns(5).Caption = "BirimFiyat" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1500 DBGrid1.Columns(1).Width = 3350 DBGrid1.Columns(2).Width = 800 DBGrid1.Columns(3).Width = 1300 DBGrid1.Columns(4).Width = 1000 DBGrid1.Columns(5).Width = 1000 End Sub Private Sub YeniKayit_Click() Form2.Show 1 End Sub Private Sub KayitSil_Click() If Data1.Recordset.EOF Then Exit Sub End If silkod = Trim(DBGrid1.Columns(0).Value) mesaj = MsgBox(silkod + " kodlu rn" + Chr(13) + "ve ona ait tm hareket bilgileri kayitlardan silinecektir.", vbOKCancel) If mesaj = 1 Then Data1.Recordset.Delete Data1.Refresh DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Para Adi" DBGrid1.Columns(2).Caption = "Miktar" DBGrid1.Columns(3).Caption = "Raf Numarasi" DBGrid1.Columns(4).Caption = "Kritik Seviye" DBGrid1.Columns(5).Caption = "BirimFiyat" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1500 DBGrid1.Columns(1).Width = 3350 DBGrid1.Columns(2).Width = 800 DBGrid1.Columns(3).Width = 1300 DBGrid1.Columns(4).Width = 1000 DBGrid1.Columns(5).Width = 1000 Set veri = OpenDatabase(Form1.Data1.DatabaseName) veri.Execute "delete * from hareket where parcano='" + silkod + "'" veri.Close End If End Sub Private Sub KayitAra_Click() Form3.Show 1 End Sub 481

Microsoft Visual Basic 6.0


Private Sub Kritik Seviye_Click() Data1.RecordSource = "select * from stok where miktar<=kritik order by parcano" Data1.Refresh DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Para Adi" DBGrid1.Columns(2).Caption = "Miktar" DBGrid1.Columns(3).Caption = "Raf Numarasi" DBGrid1.Columns(4).Caption = "Kritik Seviye" DBGrid1.Columns(5).Caption = "BirimFiyat" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1500 DBGrid1.Columns(1).Width = 3350 DBGrid1.Columns(2).Width = 800 DBGrid1.Columns(3).Width = 1300 DBGrid1.Columns(4).Width = 1000 DBGrid1.Columns(5).Width = 1000 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 Listesi" Printer.FontSize = 10 Printer.CurrentX = 0 Printer.CurrentY = 1000 Printer.Print "Para Numarasi" Printer.CurrentX = 1800 Printer.CurrentY = 1000 Printer.Print "Para Adi" Printer.CurrentX = 6000 Printer.CurrentY = 1000 Printer.Print "Miktar" Printer.CurrentX = 7000 Printer.CurrentY = 1000 Printer.Print "Raf Numarasi" Printer.CurrentX = 8500 Printer.CurrentY = 1000 Printer.Print "Kritik Seviye" Printer.CurrentX = 10000 Printer.CurrentY = 1000 Printer.Print "Birim Fiyat" 482

Microsoft Visual Basic 6.0


Printer.DrawWidth = 10 Printer.Line (0, 1250)-(11500, 1250) Form1.Data1.Recordset.MoveFirst Do While Not Form1.Data1.Recordset.EOF Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 0 Printer.Print Form1.Data1.Recordset.Fields(0).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 1800 Printer.Print Form1.Data1.Recordset.Fields(1).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 6000 Printer.Print Form1.Data1.Recordset.Fields(2).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 7000 Printer.Print Form1.Data1.Recordset.Fields(3).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 8500 Printer.Print Form1.Data1.Recordset.Fields(4).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 10000 Printer.Print Form1.Data1.Recordset.Fields(5).Value Form1.Data1.Recordset.MoveNext satir = satir + 1 If satir = 45 Then Printer.NewPage satir = 3 Printer.CurrentX = 0 Printer.CurrentY = 500 Printer.FontSize = 20 Printer.Print "Stok Listesi" Printer.FontSize = 10 Printer.CurrentX = 0 Printer.CurrentY = 1000 Printer.Print "Para Numarasi" Printer.CurrentX = 2000 Printer.CurrentY = 1000 Printer.Print "Para Adi" Printer.CurrentX = 8000 Printer.CurrentY = 1000 Printer.Print "Miktar" Printer.CurrentX = 9500 Printer.CurrentY = 1000 Printer.Print "Raf Numarasi" Printer.CurrentX = 10800 Printer.CurrentY = 1000 Printer.Print "Kritik Seviye" Printer.CurrentX = 11800 Printer.CurrentY = 1000 483

Microsoft Visual Basic 6.0


Printer.Print "Birim Fiyat" Printer.DrawWidth = 10 Printer.Line (0, 1100)-(11500, 1100) End If Loop Printer.EndDoc End Sub Private Sub Cikis_Click() Unload Me End Sub Private Sub TmKayitlar_Click() Data1.RecordSource = "select * from stok order by parcano" Data1.Refresh DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Para Adi" DBGrid1.Columns(2).Caption = "Miktar" DBGrid1.Columns(3).Caption = "Raf Numarasi" DBGrid1.Columns(4).Caption = "Kritik Seviye" DBGrid1.Columns(5).Caption = "BirimFiyat" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1500 DBGrid1.Columns(1).Width = 3350 DBGrid1.Columns(2).Width = 800 DBGrid1.Columns(3).Width = 1300 DBGrid1.Columns(4).Width = 1000 DBGrid1.Columns(5).Width = 1000 End Sub Private Sub StokHareketi_Click() Form4.Show 1 End Sub Private Sub Form_Activate() If ilk Then Data1.RecordSource = "select * from stok order by parcano" Data1.Refresh DBGrid1.Columns(0).Caption = "Para Numarasi" DBGrid1.Columns(1).Caption = "Para Adi" DBGrid1.Columns(2).Caption = "Miktar" DBGrid1.Columns(3).Caption = "Raf Numarasi" DBGrid1.Columns(4).Caption = "Kritik Seviye" DBGrid1.Columns(5).Caption = "BirimFiyat" DBGrid1.Columns(5).NumberFormat = "#,##0.00" DBGrid1.Columns(0).Width = 1500 DBGrid1.Columns(1).Width = 3350 DBGrid1.Columns(2).Width = 800 DBGrid1.Columns(3).Width = 1300 484

Microsoft Visual Basic 6.0


DBGrid1.Columns(4).Width = 1000 DBGrid1.Columns(5).Width = 1000 ilk = False End If End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Form6.Show 1 End Sub Private Sub Form_Load() ilk = True ileri = True Data1.DatabaseName = App.Path + "\" + Data1.DatabaseName Data1.RecordSource = "select * from stok order by parcano" Data1.Refresh End Sub Private Sub Timer1_Timer() If ileri Then Line1.X1 = Line1.X1 + 250 Line2.X1 = Line2.X1 + 250 Line1.X2 = Line1.X2 + 250 Line2.X2 = Line2.X2 + 250 If Line1.X1 = 9870 Then ileri = False Else Line1.X1 = Line1.X1 - 250 Line2.X1 = Line2.X1 - 250 Line1.X2 = Line1.X2 - 250 Line2.X2 = Line2.X2 - 250 If Line1.X1 = 120 Then ileri = True End If End Sub

Form2:

485

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Form1.Data1.Refresh If Not Form1.Data1.Recordset.RecordCount = 0 Then Form1.Data1.Recordset.Edit Form1.Data1.Recordset.Fields(1) = Text2.Text Form1.Data1.Recordset.Fields(2) = Text3.Text Form1.Data1.Recordset.Fields(3) = Text4.Text Form1.Data1.Recordset.Fields(4) = Text5.Text Form1.Data1.Recordset.Fields(5) = Text6.Text Form1.Data1.Recordset.Update Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "Birim Fiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Text1.SetFocus Exit Sub End If Form1.Data1.Recordset.AddNew Form1.Data1.Recordset.Fields(0) = Text1.Text Form1.Data1.Recordset.Fields(1) = Text2.Text Form1.Data1.Recordset.Fields(2) = Text3.Text Form1.Data1.Recordset.Fields(3) = Text4.Text Form1.Data1.Recordset.Fields(4) = Text5.Text Form1.Data1.Recordset.Fields(5) = Text6.Text Form1.Data1.Recordset.Update Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Text6.Text = "" Form1.Data1.RecordSource = veritab Form1.Data1.Refresh 487

Microsoft Visual Basic 6.0


Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "Birim Fiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Text1.SetFocus End Sub Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then SendKeys "{TAB}" End Sub Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 End Sub Private Sub Text1_Change() veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok parcano='" + Text1.Text + "'" Form1.Data1.Refresh If Not Form1.Data1.Recordset.RecordCount = 0 Then Text2.Text = Form1.Data1.Recordset.Fields(1).Value Text3.Text = Form1.Data1.Recordset.Fields(2).Value Text4.Text = Form1.Data1.Recordset.Fields(3).Value Text5.Text = Form1.Data1.Recordset.Fields(4).Value Text6.Text = Form1.Data1.Recordset.Fields(5).Value Text3.SetFocus End If Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "Birim Fiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 488

where

Microsoft Visual Basic 6.0


Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 End Sub Private Sub Text1_LostFocus() deger = "" For i = 1 To Len(Text1.Text) harf = UCase(Mid(Text1.Text, i, 1)) If harf = "*" Then harf = "-" End If deger = deger & harf Next i Text1.Text = deger End Sub

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

Microsoft Visual Basic 6.0


deger = deger & harf Next i Text1.Text = deger Form1.Data1.Recordset.FindFirst "parcano = '" + Text1.Text + "'" If Form1.Data1.Recordset.NoMatch Then mesaj = MsgBox("Aradiginiz kayit bulunamamistir.") Text1.SetFocus Exit Sub End If Form1.DBGrid1.Refresh Unload Me End Sub Private Sub Command2_Click() If Len(Text2.Text) = 0 Then mesaj = MsgBox("Ltfen Para Adi verin") Text2.SetFocus Exit Sub End If Form1.Data1.Recordset.FindFirst "parcaadi = '" + Text2.Text + "'" If Form1.Data1.Recordset.NoMatch Then mesaj = MsgBox("Aradiginiz kayit bulunamamistir.") Text2.SetFocus Exit Sub End If Form1.DBGrid1.Refresh Unload Me End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Command4_Click() If Len(Text3.Text) = 0 Then mesaj = MsgBox("Ltfen Raf Numarasi verin") Text3.SetFocus Exit Sub End If Form1.Data1.Recordset.FindFirst "rafnumarasi = '" + Text3.Text + "'" If Form1.Data1.Recordset.NoMatch Then mesaj = MsgBox("Aradiginiz kayit bulunamamistir.") Text3.SetFocus Exit Sub End If Form1.DBGrid1.Refresh 490

Microsoft Visual Basic 6.0


Unload Me End Sub Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then SendKeys "{TAB}" End Sub Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then deger = "" For i = 1 To Len(Text1.Text) harf = UCase(Mid(Text1.Text, i, 1)) If harf = "*" Then harf = "-" End If deger = deger & harf Next i Text1.Text = deger KeyAscii = 0 End If End Sub

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Unload Me End Sub

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

Microsoft Visual Basic 6.0


Printer.CurrentX = 3000 Printer.CurrentY = 1000 Printer.Print "Tarih" Printer.CurrentX = 4200 Printer.CurrentY = 1000 Printer.Print "Miktar" Printer.CurrentX = 5800 Printer.CurrentY = 1000 Printer.Print "Tutar" Printer.CurrentX = 7100 Printer.CurrentY = 1000 Printer.Print "agri Numarasi" Printer.DrawWidth = 10 Printer.Line (0, 1250)-(11500, 1250) Form4.Data1.Recordset.MoveFirst Do While Not Form4.Data1.Recordset.EOF Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 0 Printer.Print Form4.Data1.Recordset.Fields(0).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 1800 Printer.Print Form4.Data1.Recordset.Fields(1).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 3000 Printer.Print Form4.Data1.Recordset.Fields(2).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 4200 Printer.Print Form4.Data1.Recordset.Fields(3).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 5800 Printer.Print Form4.Data1.Recordset.Fields(5).Value Printer.CurrentY = 500 + satir * 300 Printer.CurrentX = 7100 Printer.Print Form4.Data1.Recordset.Fields(4).Value Form4.Data1.Recordset.MoveNext satir = satir + 1 If satir = 45 Then Printer.NewPage 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 494

Microsoft Visual Basic 6.0


Printer.Print "Islem" Printer.CurrentX = 3000 Printer.CurrentY = 1000 Printer.Print "Tarih" Printer.CurrentX = 4200 Printer.CurrentY = 1000 Printer.Print "Miktar" Printer.CurrentX = 5800 Printer.CurrentY = 1000 Printer.Print "Tutar" Printer.CurrentX = 7100 Printer.CurrentY = 1000 Printer.Print "agri Numarasi" Printer.DrawWidth = 10 Printer.Line (0, 1100)-(11500, 1100) End If Loop Printer.EndDoc End Sub Private Sub DBGrid1_DblClick() Form5.Show 1 End Sub Private Sub DBGrid1_HeadClick(ByVal ColIndex As Integer) Select Case ColIndex Case 0 deger = InputBox("Para Numarasi") If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket parcano='" + deger + "' order by hareket,tarih" Data1.Refresh gduz Case 1 deger = InputBox("Hareket Tipi") If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket hareket='" + deger + "' order by parcano,tarih" Data1.Refresh gduz Case 2 deger = InputBox("Islem Tarihi") If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket tarih=#" + deger + "# order by parcano,hareket" Data1.Refresh gduz Case 3 deger = InputBox("Miktar")

where

where

where

495

Microsoft Visual Basic 6.0


If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket miktar=" + deger + " order by parcano,hareket,tarih" Data1.Refresh gduz Case 4 deger = InputBox("agri Numarasi") If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket cagri=" + deger + " order by parcano,hareket,tarih" Data1.Refresh gduz Case 5 deger = InputBox("Tutar") If Len(deger) = 0 Then Exit Sub Data1.RecordSource = "select * from hareket tutar=" + deger + " order by parcano,hareket,tarih" Data1.Refresh gduz End Select End Sub Private Sub Form_Load() ilk = True Data1.DatabaseName = Form1.Data1.DatabaseName End Sub Private Sub Form_Activate() If ilk Then Data1.RecordSource = "select * from hareket parcano,hareket,tarih" Data1.Refresh gduz ilk = False End If End Sub where

where

where

order

by

Form5:

496

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Form4.Data1.Recordset.AddNew Form4.Data1.Recordset.Fields(0) = Text1.Text If Combo1.ListIndex = 0 Then Form4.Data1.Recordset.Fields(1) = "GIRIS" Form4.Data1.Recordset.Fields(4) = "0" Else Form4.Data1.Recordset.Fields(1) = "IKIS" Form4.Data1.Recordset.Fields(4) = Text4.Text End If Form4.Data1.Recordset.Fields(2) = DTPicker1.Value Form4.Data1.Recordset.Fields(3) = Text3.Text Form4.Data1.Recordset.Fields(5) = Text5.Text Form4.Data1.Recordset.Update Text1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" Unload Me End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Activate() Combo1.ListIndex = 0 veritab = Form1.Data1.RecordSource Text1.Text = Form4.Data1.Recordset.Fields(0) Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" Form1.Data1.Refresh If Form1.Data1.Recordset.RecordCount = 0 Then mesaj = MsgBox("Ana dosyada byle bir para numarasi bulunmamaktadir." + Chr(13) + "Ltfen nce para girisini yapiniz.") Form1.Data1.RecordSource = veritab 498

Microsoft Visual Basic 6.0


Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Unload Me Else Label7.Caption = Form1.Data1.Recordset.Fields(1) Label9.Caption = Form1.Data1.Recordset.Fields(2) Label11.Caption = Form1.Data1.Recordset.Fields(5) Text3.SetFocus Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Text3.SetFocus End If End Sub Private Sub Text3_Change() Text5.Text = Val(Label11.Caption) * Val(Text3.Text) End Sub

Form6:

499

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Set veri = OpenDatabase(Form1.Data1.DatabaseName) Set tablo = veri.OpenRecordset("hareket") tablo.AddNew tablo.Fields(0) = Text1.Text If Combo1.ListIndex = 0 Then tablo.Fields(1) = "GIRIS" tablo.Fields(4) = "0" Else tablo.Fields(1) = "IKIS" tablo.Fields(4) = Text4.Text End If tablo.Fields(2) = DTPicker1.Value tablo.Fields(3) = Text3.Text 'Text5.Text = Text3.Text * Val(Label9.Caption) tablo.Fields(5) = Text5.Text tablo.Update Text1.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" veri.Close Text1.SetFocus End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Combo1.ListIndex = 0 If KeyAscii = 13 Then deger = "" For i = 1 To Len(Text1.Text) harf = UCase(Mid(Text1.Text, i, 1)) If harf = "*" Then 501

Microsoft Visual Basic 6.0


harf = "-" End If deger = deger & harf Next i Text1.Text = deger veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" Form1.Data1.Refresh If Form1.Data1.Recordset.RecordCount = 0 Then mesaj = MsgBox("Ana dosyada byle bir para numarasi bulunmamaktadir." + Chr(13) + "Ltfen nce para girisini yapiniz.") Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Unload Me Else Label7.Caption = Form1.Data1.Recordset.Fields(1) Label9.Caption = Form1.Data1.Recordset.Fields(2) Label11.Caption = Form1.Data1.Recordset.Fields(5) Text3.SetFocus Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 502

Microsoft Visual Basic 6.0


End If End If End Sub Private Sub Text1_LostFocus() If Len(Text1.Text) = 0 Then Exit Sub End If Combo1.ListIndex = 0 deger = "" For i = 1 To Len(Text1.Text) harf = UCase(Mid(Text1.Text, i, 1)) If harf = "*" Then harf = "-" End If deger = deger & harf Next i Text1.Text = deger veritab = Form1.Data1.RecordSource Form1.Data1.RecordSource = "select * from stok where parcano='" + Text1.Text + "'" Form1.Data1.Refresh If Form1.Data1.Recordset.RecordCount = 0 Then mesaj = MsgBox("Ana dosyada byle bir para numarasi bulunmamaktadir." + Chr(13) + "Ltfen nce para girisini yapiniz.") Form1.Data1.RecordSource = veritab Form1.Data1.Refresh Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 Unload Me Else Label7.Caption = Form1.Data1.Recordset.Fields(1) Label9.Caption = Form1.Data1.Recordset.Fields(2) Label11.Caption = Form1.Data1.Recordset.Fields(5) Text3.SetFocus Form1.Data1.RecordSource = veritab Form1.Data1.Refresh 503

Microsoft Visual Basic 6.0


Form1.DBGrid1.Columns(0).Caption = "Para Numarasi" Form1.DBGrid1.Columns(1).Caption = "Para Adi" Form1.DBGrid1.Columns(2).Caption = "Miktar" Form1.DBGrid1.Columns(3).Caption = "Raf Numarasi" Form1.DBGrid1.Columns(4).Caption = "Kritik Seviye" Form1.DBGrid1.Columns(5).Caption = "BirimFiyat" Form1.DBGrid1.Columns(5).NumberFormat = "#,##0.00" Form1.DBGrid1.Columns(0).Width = 1500 Form1.DBGrid1.Columns(1).Width = 3350 Form1.DBGrid1.Columns(2).Width = 800 Form1.DBGrid1.Columns(3).Width = 1300 Form1.DBGrid1.Columns(4).Width = 1000 Form1.DBGrid1.Columns(5).Width = 1000 End If End Sub Private Sub Text3_Change() Text5.Text = Val(Label11.Caption) * Val(Text3.Text) End Sub

Form7:

504

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Form4.Data1.RecordSource = "select * from hareket parcano='" + Text1.Text + "' order by hareket,tarih" Form4.Data1.Refresh gduz Unload Me End Sub where

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

Microsoft Visual Basic 6.0


gduz Unload Me End Sub Private Sub Command6_Click() If Len(Text5.Text) = 0 And Len(Text6.Text) = 0 Then Exit Sub If Len(Text5.Text) = 0 Then deg6 = Val(Text6.Text) Form4.Data1.RecordSource = "select * from hareket where tutar=" + Str(deg6) + " order by parcano,hareket,tarih" End If If Len(Text6.Text) = 0 Then deg5 = Val(Text5.Text) Form4.Data1.RecordSource = "select * from hareket where tutar=" + Str(deg5) + " order by parcano,hareket,tarih" End If If Len(Text5.Text) > 0 And Len(Text6.Text) > 0 Then deg5 = Val(Text5.Text) deg6 = Val(Text6.Text) Form4.Data1.RecordSource = "select * from hareket where tutar>=" + Str(deg5) + " and tutar<=" + Str(deg6) + " order by parcano,hareket,tarih" End If Form4.Data1.Refresh gduz Unload Me End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1_Click End If End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command5_Click End If End Sub Private Sub Text5_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text6.SetFocus End Sub Private Sub Text6_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command6.SetFocus End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) 507

Microsoft Visual Basic 6.0


If KeyAscii = 13 Then Text3.SetFocus End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command4.SetFocus End Sub

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

Microsoft Visual Basic 6.0

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.

Bir Baglantiyi Amak

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

Microsoft Visual Basic 6.0


Set env=rdoEngine.rdoEnviroments(0) Set con=env.Open Connection(Ali) Set tablo=con.OpenResultset(Tablo) tablo.Addnew

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

RDCnin birok zelligi DAOnun DataControl ile aynidir:

RDC zellikleri BOFAction

Data zellikleri BOFAction

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

Rdcnin kullanimi iin nce RDCnin projeye eklenmesi gerekir. 510

Microsoft Visual Basic 6.0


1. Islem ilk olarak Componenets mensn aarak olusmaktadir.

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

Microsoft Visual Basic 6.0

5. 6.

Name ve Caption zellikleri dzenlenir. DataSourceName zelligi dzenlenir.

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

Microsoft Visual Basic 6.0


DAO ve RDO Karsilastirilmasi

RDO ve DAO birbirlerine ok benzerler. Benzer nesneler:

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 ve DAO metodlari karsilastirilmasi

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

Microsoft Visual Basic 6.0


RDO ve DAO ortak metod ve islevleri: AddNew Delete Edit MoveFirst MoveLast MoveNext MovePrevious Update Yeni bir kayit ekler. Aktif kaydi siler. Aktif kaydin zerinde degisiklik yapar Ilk kayda gider. Son kayda gider. Bir sonraki kayda gider. Bir nceki kayda gider. Yapilan degisikliklerin etkin olmasini saglar.

RDOnun zayif Ynleri Sadece 32bit uygulamalar iin tasarlanmistir. ODBC srcsnn tanimlanmasi gerekir. ODBC API kadar hizli degildir.

Access ve ISAM veritabanlari zerinde alisabilen Jet 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.

Microsoft Visual Basic 6.0


Sonu bilgisini retir. Uygulama hatalari konusunda kullaniciyi uyarir, sorunun zlmesini saglar.

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

Microsoft Visual Basic 6.0


Uygulama Src Yneticisi Src (Driver) Veri Kaynagi

ODBC fonksyonlarini agirarak gnderir ve sonulari elde eder.

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

Microsoft Visual Basic 6.0

ODBC Verisine Erisim


Varolan ODBC kaynagina erisim iin asagidaki bilesenler gereklidir. Kaynak verinin adi. Src ve diger ilgili yazilim. Time -out degeri.(zaman asimi)

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.

Sistem DSN rnegi

517

Microsoft Visual Basic 6.0


2-File DSN (Dosya DSN): DSN bilgileri bir text dosyasinda saklanir.(Ayar dosyasi)Bu dosya veritabani srcs ve yeri hakkinda bilgi ierir. File DSN makinaya zel degildir. Herhangi bir network srcs zerinde olabilir.

(Dosya DSN (File DSN) rnegi) 3-User DSN (Kullanici DSN): Belirli bir user profile iin kullanilabilir. DSN bilgisi lokal bilgisayarin Registry defterinde saklanir.

(User DSN (Kullanici DSN) rnegi) 518

Microsoft Visual Basic 6.0

Adim Adim Windows 9x te DSN Tanimi


Visual basic ile hazirlanmis bir programda eger ODBC kullaniliyorsa programin kullanilabilmesi iin ODBC DSN taniminin yapilmasi gerekir.
Bu islem iin Denetim Masasindaki ODBC simgesine ift tiklanir.

Sonra tm sistemde kullanilmak zere tanimlanmasi gereken DSN olan Sistem DSN sekmesine geilir ve Ekle.. (Add..) butonuna tiklanir.

519

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Islem onaylanir ve Database dosyasinin seildig kisim ekrana gelir.Burada Veri kaynagi adi nemlidir nk kullanilacak DSN isim anahtaridir.Ayrica Se... butonuna tiklanarak mevcut .mdb dosyalari ierisinden istenen dosya ODBC ye atanir.

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.

ADO Veri Erisim Teknigi


Visual basic dilinde database uygulamalarin fazla sayida yapimasi Visual basic te database erisimi iin birok teknik olmasi ve yazilimi hazirlayan kisi(ler) iin zaman kazandirabilecek derecede az kod yazilip kolayca veritabani zerinde islemler yapabilen bilesenlerin olmasindan ileri gelmektedir. Database erisimi iin kullanilan bir baska erisim yntemi de ADO (ActiveX Data Objects) yntemidir. ADO ve ADO Data Control (ADODC) kullanilarak ok az kod ile veritabani erisimli uygulamalar gelistirebiliriz. Kk uygulamalarda Ado ve Ado ya bagli bilesenler ile ok basit sekillerde yazilim gelistirebiliriz.ADO OLEDB zerinden verilere erisir.

521

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

(Resim 2) 2-Sistem DSN Sekmesine geilir Ekle butonuna tiklanir

(Resim 3) 523

Microsoft Visual Basic 6.0


3-Ailan diolog kutusundan Mevcut srcler arasindan veritabanina uygun olan src seilir ve Islem onaylanir. kullanacagimiz

(Resim 4) 4-Ailan pencerede Veri kaynagi Adi kismina DSN ismini yazariz .

(Resim 5) 524

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


(Resim 6) DSN olusturulduktan grntlenebilir. ADO Data Control sonra ODBC de Sistem DSN altinda

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

Microsoft Visual Basic 6.0


3-Gerekli ayarlar ve yapilir. (DSN baglantilari gibi) 1-Ado Data Objectin kullanilmasi iin ilknce diger componentler gibi projeye dahil edilmesi gereklidir.(Bu islem iin Project mensndeki Components seenegine ardindan ailan diolog kutusundaki Microsoft ADO Data Control 6.0 (OLEDB) seenegine tiklanarak yapilabilir)

(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

Microsoft Visual Basic 6.0

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

Connection String Ayarlari ;


Connection String , baglanti cmlecigidir bu cmlecikte ADODC nin hangi data kaynagina baglanilacagi,DSN ismi vb. bilgiler bulunur.rnegin Sistemimizde MS-Access ile hazirlanmis veritabani.mdb database dosyamizi ORNEK isimli DSN ile tanimlamis olalim (DSN tanimlama islemi nceki ADO Veri Erisim teknigi basligi altinda ayrintili olarak anlatilmistir.)Bu islem iin asagidaki adimlar izlenebilir;

528

Microsoft Visual Basic 6.0

Adim mevcut farenin ADODC seilir.

1-Form zerinde olan ADODC ye sag tusu ile tiklayip Properties seenegi

(Resim 12)

Adim 2-Islem sonucunda Property Pages penceresi ailir.

(Resim 13)

529

Microsoft Visual Basic 6.0


Adim3- Bu pencerede General, Authentication, RecordSource, Color, Font gibi ayar sekmeleri bulunur.General sekmesi DSN nesnesi ile baglanti kurulmasi iin gerekli ayarlarin yapilacagi kisimdir. Use Data Link File seenegi seilirse DSN, UDL formatindaki daha nceden hazirlanmis sablon dosyalari kullanilir.Use ODBC Data Source Name seenegi seilirse olusturulmus olan DSN direkt olarak ADODC ye baglanir.Bu sekmeden Use Connection String seenegi ile baglanti cmlesi olusturma diolog penceresi ekrana getirilir.Bu pencereden Microsoft OLE DB Provider for ODBC Drivers seenegi tiklanarak ileri (next) butonuna tiklanidiginda ekrana ODBC DSN isminin seildigi pencere gelir. (Resim 14) Adim 4- Bu pencerede daha nceden tanimlanmis olan ODBC DSN i seilir.Eger baglanti konrolu yapilmak isteniyorsa Baglantiyi sina (Test Connection) butonuna tiklanarak kontrol yapilabilir.

530

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(Resim 16: ADODC nesnesinin properties bilgileri)

(Resim 17 ADODC nesnesinin Properties kismina tiklandiginda ailan pencere) 532

penceresindeki

recordsource

Microsoft Visual Basic 6.0

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.

ADO Data Controlun Proje alisirken Dzenlenmesi


ADODC nesnesinin alisma esnasinda yapilacak ayarlamalari tasarim asamasinda yapilabilecek ayarlar ile aynidir. rnegin Yukarida baglanti nesnesi yaratilmisti,baglanti nesnesi ODBC DSNine baglanmisti,ve CmdType seilip Recordsource seilmisti.Yukaridaki ayarlar eger proje alisirken ayarlanmak veya degistirilmek istenirse asagidaki gibi bir yol izlenmelidir. 533

Microsoft Visual Basic 6.0


(Not :ncelikle ADODC forma dahil edilmelidir.) Projenin ilgili kismina; Adodc1.ConnectionString = "ORNEK" Adodc1.CommandType = adCmdTable Adodc1.RecordSource = "telefon" Kodlarinin eklenmesi yeterlidir. DSN kullanilmadan Baglantinin Yapilmasi DSN kullanilmaksizin JET OLEDB saglayicisi ile bir veritabanina baglanti yapilacaksa nemli olan ConnectionString zelliginin dikkatlice ayarlanmasi gerekmektedir. Yukaridaki baglanti DSN siz olarak JET OLEDB ile yapilacaksa kodlar Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\veritabani.mdb;Persist Security Info=False Adodc1.CommandType = adCmdTable Adodc1.RecordSource = "telefon" seklinde olmalidir.

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

Adim 1:Form zerine gerekli nesneler yerlestirilir. 534

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0


Program alistirildiginda label nesneleri ilk etapta alanlarin ierigini listelememektedir.Fakat Command2 butonuna tiklandiginda gerekli baglantilar yapilir ve form nesneleri ADODC1 nesnesine baglanir ve eger adodc1 nesnesinin birsonraki kayit anlamindaki simgesine tiklanmasi sonucunda label nesnelerinin ieriklerinin degistigi grlr. rnek Program bulunmaktadir. kitap ile verilen rnek Program CD si ierisinde

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

Microsoft Visual Basic 6.0


Adim 4: Textbox nesnesinin DataField ayari bagli bulundugu ado nesnesinin de bagli bulundugu recordsource ierisindeki listelenen alanlarin birinin seilmesi ile son bulur (Resim 21).

(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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0


(Resim 26) DataGrid bagli bulundugu Ado Data Control nesnesinin RecordSourceindeki bilgileri listeler, bu listelemede eger istenirse stun basliklari degistirilebilir. Bu yarlara kolaylikla DataGrid bileseninin properties penceresindeki. zelliklerinden (Custom...) seenegine tiklanmasi sonucunda ailan diolog Penceresinden yapilabilir. (Resim 27 de kisi_ad isimli alanin Kisinin Adi basliginda listelenmesi iin gerekli ayar yapilmaktadir.) (Resim 27)

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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(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

ADO (ActiveX Data Objects) Temelleri


Ado nesnesi mevcut bir veri saglayicisi sayesinde uzak yada yerel databaselere erismeyi saglayan bir yntemdir.ADO bagimsiz olarak kullanilabilen ve hiyerarsik olmayan bir yapidadir, bu tipte tanimlanan nesneler ile verilere kolayca ulasilabilir. ADO hizli bir sekilde alisir bylece veritabani uygulamalari daha etkin birsekilde gereklesebilir. Bellek gereksinimi diger tekniklere gre daha 542

Microsoft Visual Basic 6.0


azdir.RDO,DAO gibi veri erisim tekniklerinden daha gelismistir, daha anlasilabilir ve kolay bir yapida veritabani nesneleri ile veritabani islemlerini sadelestirir.

(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

Microsoft Visual Basic 6.0


sistemi, grafik ve text gibi veriler.) OLE DB bir veri saglayicisidir. OLE DB araciligi ile uygulanan arabirimlere , program paralarina Consumer denir. ADO nun projede kullanilmasi iin ilknce referansin projeye dahil edilmesi gerekir.Bunun iin Project mensnden References () seenegi seilir. Microsoft ActiveX Data Objects 2.0 Library () seilir. Ve islem onaylanir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Mode zelligi Connection nesnesi kapaliyken kullanilir, mevcut izinleri dzenler.

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

Dim bagl As New ADODB.Connection bagl.open telefon

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

Microsoft Visual Basic 6.0


AdCmdStoredProc AdCmdUnknown AdExecuteAsync AdFetchAsync Komut metninin bir Stored Proc. Olarak degerlendirilmesi. Komut tipinin argumaninin bilinmemesi. Komutun zaman uyumsuz olarak isletilmesi. CacheSize zelligi ile belirtilen miktarin disinda kalan satirlari belirtir.

rnegin bir komutu alistirmak iin komutu , Set kayit = bagl.Execute(SELECT * FROM telefon) Seklinde kullanabiliriz.

Bir SQL Server Veritabanina Baglanti Kurulmasi


Dim baglanti as New ADODB.Connection Baglanti.open driver=(SQL Server);Server=<Servername>;uid=<uid>;pwd=<sifre>;database=<databa sename>

Access Veritabanina Baglanti Kurulmasi


Asagidaki rnekte JOLT OLE DB saglayicisi kullanilarak Access veritabanina baglanti yapilmamistir. Dim baglanti as New ADODB.Connection Baglanti.ConnectionString = c:\veritabani.mdb Baglanti.Provider = Microsoft.Jet.OLEDB.3.51 Baglanti.open

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

Microsoft Visual Basic 6.0


Error Nesnesi Error Object (Hata nesnesi), iinde olusan hatalarla ilgili bilgi bulunduran bir degerdir. Error nesnesi iindeki zellikler vasitasi ile hatalar kolaylikla tespit edilebilir
Description Number Source (kaynak) Helpfile,HelpContext SQLState,NativeError Hata alarm Metnidir. Hata numarasidir. Hataya neden olan nesnedir. Hata iin uyhun help dosyalaridir. ODBC verikaynaklari hk. Bilgi ierir.

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

Microsoft Visual Basic 6.0


Active Connection zelligi ile aik bir baglantiyla bir komut nesnesi birlestirilebilir. Command Text zelligi, komutun metinsel tanimini ierir.Bu metinsel tanimin ierigi kullaniciya zeldir fakat veri saglayicisinin destekleyebildigi bir komut olmalidir.Bu zellik Command nesnesine baglandiginda nesne aik bir baglantiya ilistilendirilmis ise, Execute ve Open metodlari agirildigi zaman sorgu ADO tarafindan hazirlanir. Command Type zelliginin degerine gre ADO tarafindan CommandText zelligi degistirilebilir. rnek kullanim Command nesnesi herhangi bir kayitseti gndermek zorunda degildir. rnek olarak verilen kodlarda UPDATE islemi yapilmaktadir.(Commmand nesnesi komut olarak adlandirilmistir)
Dim baglanti As New ADODB.Connection baglanti.Cursorlocation = adUseClient baglanti.ConnectionString = C:\veritabani.mdb baglanti.provider = Microsoft.Jet.OLEDB.3.51 baglanti.open sql=UPDATE borc set borc = borc * 1.1 Set komut.ActiveConnection =baglanti komut.CommandText = sql komut.Execute intRecordsAffected MsgBox Str(intRecordsAffected) & degistirildi. CommandTimeout zelligi ile bir komutun isletilmesi iin geecek sre saniye cinsinden belirtilebilir.Eger sre asilirsa hata olusur.CommandType zelligi ise performansi artirmak iin komut alistirilmadan nce komut tipini belirtir. Komut yaratildiginda komut isleyisini denetlemek iin belirli zellikler dzenlenir. Asagida verilen rnekte bir komuta CommandText, CommandType ve CommandTimeout zellikleri dzenlenmektedir. komut.CommandType = adCmdStoredProc komut.CommandTimeout = 30 komut.CommandText = UPDATEPROCEDURE Set komut.ActiveConnection = baglanti komut.Execute intRecordsAffected Execute methodu kullanilarak komut iletilir ve recordset olusur, bu metod komut nesnesi zerinde islenir, CommandText zelliginde belirtilen sorguyu alistirir. Set kayit.activeconnection = cnn Baglanti.commandText sql Execute intRecordsAffect 550

Microsoft Visual Basic 6.0


Execute metodu ile recordset olusturulabilir. Dim kayit As New ADODB.Recordset Dim baglanti As New ADODB.Connection Baglanti.Cursorlocation = adUseClient Baglanti.ConnectionString =c:\veritabani.mdb Baglanti.Provider =Microsoft.Jet.OLEDB.3.51 Baglanti.Open Set kayit = baglanti.Execute(Select * From telefon) Set Datagrid1.Datasource = kayit

CommandType zelliginin Degerleri


AdCmdText AdCmdTable AdCmdStoredProc AdCmdUnknown AdCmdFile 1 CommandText degerini bir metin olarak girilmesi saglanir. 2 CommandText!in bir tablo adi iermesi saglanir. 4 CommandTextin bir Stored Proc iermesi saglanir 8 CommandType bilinmiyor. 256 Verile rin dosyadan alinmasini saglar. dur. Birok durunda

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

Microsoft Visual Basic 6.0


adStateOpen adStateConnecting AsStateExecuting 1 Command nesnesi aik. 2 Command nesnesi baglaniyor. 4 Command nesnesi bir komut isletiyor.

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

Microsoft Visual Basic 6.0


Static Cursor, Belli bir veri bulunmasi ya da raporlama islemi iin szlen verilerin degismeyen kopyasini yaratir. Kullanici veriler zerinde hertrl izine sahiptir. Diger istemcilerin yaptiklari eklemeler, degisiklikler ve silmeler grlmezler. Forward-Only-Cursor sabit gstericiye benzer bir alisma sekline sahiptir. Fakat sadece ileriye dogru harekete izin verir.

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

Microsoft Visual Basic 6.0


Next j rnek: Recordset tanimlamasi; Dim kayit as New ADODV.Recordset Kayit.open SELECT * FROM TELEFON,DSN=ORNEK,adOpenKeyset, adLockOptimistic rnek: Recordset ieriginin datagrid zerinde gsterilmesi; Dim baglanti As New ADODB.Connection Dim komut As New ADODB.Command Dim kayit As New ADODB.Recordset baglanti.CursorLocation=adUseServer baglanti.Open ORNEK komut.CommandText=SELECT * FROM telefon Set komut.ActiveConnection = baglanti Kayit.CursorType=adOpenDynamic Kayit.LocakType=adLockOptimistic Kayit.Open Kayit.open komut Set Datagrid1.DataSource = kayit Command ve Connection nesnelerini kullanmadan dogrudan recordset vasitasi ile verilere erismek daha kolay ve zahmetsiz bir islemdir. Ancak bir komut islendiginde recordset yaratilmamissa dnen kayitlar recordse ve default iinde yer alir. Ancak default R ecordsetin kullanimi iin LockType ve CursorType zelliklerinin dzenlenmesi gerekmektedir. Dim baglanti As New ADODB.Connection Dim komut As New ADODB.Command Dim def As New ADODB.Recordset baglanti.CursorLocation = adUseClient baglanti.Open ORNEK Set def =baglanti.Execute(SELECT * FROM telefon)

554

Microsoft Visual Basic 6.0


Recordset olusturuldugunda herhangi bir komut kullanilmadiginda bos olur. Bylece Recordset nesnesi istendiginde doldurulabilir. Bir diger olanak ise recordset nesnesinin istendigi zaman kapatilabilmesi veya ailabilmesidir. rnek: Recordset nesnesi kapatiliyor ve tekrar ailiyor; Dim kayit As New ADODB.Recordset Kayit.close Kayit.open SELECT tel, ad, FROM telefon Recordset Nesnesinin alisma sirasinda kullanilan zellikleri;
zellik AbsolutePage AbsolutePosition ActiveCommand ActiveConnection BOF Bookmark CacheSize CursorLocation CursorType EditMode EOF Fields Filter LockType MaxRecords PageCount PageSize RecordCount Sort Source State Status Aiklama Kayitseti iindeki mutlak sayfayi dndrr. Aktif kaydin mutlak komutunu dndrr. Aktif komutu verir. Aktif baglantiyi verir. Kayit gsterici ilk kayittan nceye gemesi. Mevcut kaydi belirleme bilgisi. nbellege atilabilecek kayit sayisi degeri. Cursorun yerini belirler. Cursor tipi. Mevcut kayit degistirme modu. Kayit gstericinin son kayittan nce olmasi Veri alani (tablonun iindeki alanlar) Filtre degeri. Kilitleme degeri. Alinacak max kayit sayisi. Sayfa sayisi. Bir sayfadaki kayit sayisi. Kayit sayisi. Siralama dzeni. Komutun kaynagi. Recordsetin mevcut durumu. Kodlarin gncelleme durumu. Varsayim -1 -1 Yok Yok True Saglayiciya bagli 1 sadece ileri 10 tm gstericiler Saglayiciya bagli AdOpen/Forward only AdEditNone True N/A AdFilterNone AdLockRead 0 0 0 1 -Bos-BosAdStateClosed N/A Aralik >=0 >=0 Komut nesnesi Baglanti nes. Degeri. True-false Saglayiciya bagli >=-1 Enum Enum Enum True/False N/A Enum Enum >=0 >=0 >=0 >=0 Deyim Deyim/Nesne Enum Enum

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

Microsoft Visual Basic 6.0

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.

LockType zelligi LockType zelligi bir recordseti kilitlemek iin kullanilir.


adLockReadOnly adLockPessimistic adLockOptimistic 1 Veriler sadece okunur sekildedir degisemez. 2 zerinde islem yapilan veriler satir bazinda kilitlenmektedir.Baskalarin erisimi engellenir. 3 zerinde islem yapilan veriler kilitlenmez.Baskalarinin erisimi kontrol edilebilir

556

Microsoft Visual Basic 6.0


adLockOptimistic Batch 4 Degisiklikler toplu yapilir

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

Microsoft Visual Basic 6.0


BOF zelligi Kayit setinin basini isaret eder.Eger isareti ilk kayittan bir ste geerse degeri true olur eger recordset nesnesi bos ise EOF ve BOF true degerini alir. Recordset Nesnesinin Metodlari; Recordset nesnesi zerindeki ogu islem asagidaki metodlarla yapilabilir.
AddNew Cancel CancelBatch CancelUpdate Clone Close Delete Find GetRows GetString Move MoveNext MovePrevious MoveFirst MoveLast NextRecordset Open Requery Resync Save Supports Update UpdateBatch Kayit ekler. Yrrlkteki islemi iptal eder. Islenecek kayit kmesini iptal eder. Mevcut kayita yapilacak islemleri iptal eder.(ekleme,degistirme) Recordseti kopyalar. Recordseti kapatir. Kayit silmede kullanilir. Bir kaydi bulur. Bir kayit kmesini iki boyutlu diziye kopyalar. Kayitlari Text string olarak geri dndrr. Belirli bir kayida gitme islemi iin kullanilir. Bir sonraki kayita gidilir. Bir nceki kayita gidilir. Ilk kayita gidilir. Son kayita gidilir. Birlesik bir komut iindeki bir sonraki recordseti aar. Bir komutu isletir ve kursoru aar. Bir Recordseti yeniden olusturur, komutu yeniden isletir. nbellege alinan kayitlari yineler. Mevcut bir recordseti bir dosyaya kayit eder. Bu dosya sonradan ailabilir. Veri saglayicisi tarafindan desteklenen cursor seeneklerini belirtir. Yapilan degisiklikleri recordsete kaydeder. Kaynak zerindeki bir grup gncelleme islemini yapar.

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

Microsoft Visual Basic 6.0


End If End Sub nceki kayita ulasmak iin ise asagidaki komutlar kullanilabilir. Private Sub onceki_Click() Sonraki kayita geiliyor Kayit.MovePrevious BOF kontrol yapilyor if kayit.BOF Then beep kayit.MoveNext End If End Sub

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

Microsoft Visual Basic 6.0


saklanir ve Sonra UpdateBatchmetodu ile yapilir.Gncelleme islemi esnasinda recordsetin status zelligi sayesinde durum grenilebilir. Recordset Ile Verilere Erismek ve Grmek Kayitlara, verilere erismek iin recordsetin metodlari kullanilir. Asagidaki rnekte ise SQL server zerinde bir recordset nesnesinin Connection nesnesi ile olusturulmasi ve doldurulmasi konu alinmistir. Dim kayit As New ADODB.Recordset Dim baglanti As New ADODB.Connection Baglanti.open driver={SQL Server};Server=BIM;uid=sa;pwd=;database=telefon Baglanti.open SELECT * FROM telefon, baglanti, adOpenKeyset, adLockOptimistic Set DataGrid1.DataSource = kayit Asagidaki rnekte Microsoft Access zerinde; bir Recordset nesnesinin Connection nesnesi ile yaratilmasi ve doldurulmasi rneklenmektedir. Dim kayit As New ADODB.Recordset Dim baglanti As New ADODB.Connection Baglanti.open ORNEK DSN ismidir kayit.open SELECT * FROM telefon, adOpenKeyset,adLockOptimistic Set DataGrid1.DataSource= kayit

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

Microsoft Visual Basic 6.0


kayit.Sort =BORCU DESC,[ADI, SOYADI] ASC

Recordseti tekrar eski haline getirmek iin ise


kayit.Sort=

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

Filter methodundan sonra tm kayitlari gstermek iin adFilterNone kullanilabilir.


kayit.Filter = adFilterNone

Ayrica filtreleme isleminde Or ve And kullanilabilir.


kayit.filter =(ad=Ali or ad=Veli)

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

Microsoft Visual Basic 6.0

DATA Environment

DATA Environment Designerin Kullanilmasi


Command ve Connection Nesneleri Komutlarin Isletilmesi

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 Designer

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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(Bkz Resim 4) Command Ve Connection Nesneleri

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

Microsoft Visual Basic 6.0

( 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

Microsoft Visual Basic 6.0


Eger OLE DB Provider for ODBC Drivers seenegi seilir ve ileri (veya next) butonuna tiklanirsa islemin bir sonraki adimina geilir.Bu adimda veri kaynagi adi seilir (ODBC DSN) (bkz Resim 7)

(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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(Resim 11) Yukaridaki islem adimla ri sonucunda ayarlamalarin yapilacagi diolog penceresi ekrana gelir.(bkz Resim 12)

(Resim 12)

569

Microsoft Visual Basic 6.0


Command1 zellikleri (veya Command1 Properties) baslikli pencerede command1 isimli komut nesnesinin tm ayarlari yapilabilir.
Bu bilesenin alismasi iin ilknce baglanti nesnesine baglanmasi gereklidir. Bu islem iin General Sekmesindeki Connection liste kutusu kullanilir.(Connection liste kutusunda Data Environment Designer iindeki tm baglanti nesnelerini grmek mmkndr.) Sonra da Datase object seimi yapilir. Daha nceden de anlatildigi gibi Database Object olarak Stored Procedure, SQL sorgusu veya Command1 nesnesinin bagli bulundugu veri kaynaginin iindeki herhangi bir tablo olabilir.(bkz Resim 13)

(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

Varsayilan Recordset ismi : rstelefon Seklinde olmustur 570

Microsoft Visual Basic 6.0

Komut Nesnesi zerinde Komutlarin Isletilmesi

Data Environmentte komutlarin isletilmesi iki sekilde olabilir


Recordset kullanilabilir.) olusrma sekli ile.(recordset olusturulur ve iktilar

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

Microsoft Visual Basic 6.0


olmaktadir.Form nesnelerinin kaynak ile iliskisinin olmasi iin srkle birak teknigi kullanilir.

(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

Microsoft Visual Basic 6.0


Data Environment ierisinden listelenen alanlardan kisi_ad seenegine sag tusla tiklanir ailan menden Propertiese tiklanir.(bkz Resim 16)

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

(Degisiklikten Sonra) rnek Uygulama

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

Microsoft Visual Basic 6.0

(Resim 17) Projeye Data Environment Designer Eklendi

(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

Microsoft Visual Basic 6.0


(bkz Resim 19)

(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

Microsoft Visual Basic 6.0


Command nesnesi olusturuldu ve ayarlari yapildi. (bkz Resim 21)

(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

Microsoft Visual Basic 6.0


(Resim 22) Kayitlar zerinde gezinme iin (ileri-geri) gerekli butonlar eklendi ve kodlari yazildi. (bkz Resim 23)

(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

Microsoft Visual Basic 6.0

rnek Programlar Ve Aiklamalari


1-ADO Kontrol ile yapilmis rnek Uygulama FORMLARIN AIKLAMASI 2-ActiveX Uygulama Data Object ile yapilmis rnek

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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0


KAYIT_ISL_1 Formunun Aiklamasi Kullanici bu form yardimi ile ad,soyad,telefon,adres,mail adresi gibi bilgileri Veritabanina ekleyebilir.

(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

Microsoft Visual Basic 6.0


'Ado nesnesi yeni kayit modunda ailir Adodc1.Recordset.AddNew 'ado nesnesine bagli olan alanlarin ii doldurulur. Adodc1.Recordset("ad") = Trim(UCase(ad.Text)) Adodc1.Recordset("soyad") = Trim(UCase(soyad.Text)) Adodc1.Recordset("adres") = Trim(UCase(adres.Text)) Adodc1.Recordset("tel") = Trim(UCase(telefon.Text)) Adodc1.Recordset("mail") = Trim(mail.Text) 'Ado nesnesi gncellenir Adodc1.Recordset.Update 'Ado nesnesi tazelenir Adodc1.Refresh 'Form elemanlarinin ii bosaltilir. temizle End Sub Private Sub Command2_Click() Unload Me 'Form Unload edilir. End Sub Private Sub Form_Load() 'Form yklenirken form elemanlarinin ii bosaltilir. temizle End Sub Private Sub mail_KeyPress(KeyAscii As Integer) 'mail text'ine deger yazilip entere basildiktan sonra 'cursor Command1 (kayit) butonuna konumlanir If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Sub soyad_KeyPress(KeyAscii As Integer) 'soyad text'ine deger yazilip entere basildiktan sonra 'cursor adres textine konumlanir. If KeyAscii = 13 Then adres.SetFocus End If End Sub Private Sub telefon_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Telefon textine bilgi girildikten sonra Enter'a basildiginda 'cursor mail text'ine konumlanacaktir. 'Programin akisini hizlandirmak amali yapilmis ynlendirme cursor islemidir mail.SetFocus 582

Microsoft Visual Basic 6.0


End If End Sub

KAYIT_ISL_2 Formunun Aiklamasi


KAYIT_ISL_2 formu kullanicinin veriler zerinde genel islemleri yapmasini saglar (Arama, Degistirme, Silme gibi).Kullanici KAYIT_ISL_2 formuna MDI form zerinden ulasabilir. Proje alisirken form aktif oldugunda kullanici text1 nesnesine bilgileri zerinde islem yapmak istedigi kayitin ad text2 nesnesine soyad bilgilerini girer ve ara butonuna tiklar, arama islemi Adodc1 nesnesinin CommandType zelliginin adCmdText sekline dnstrlmesiyle sql sorgusunu adodc nesnesine gnderir ve ikti olarak gelen veriler form elemanlarina dagitilir.Bu islem sonrasinda basta pasif halde olan silme ve degistirme butonlari aktiflesir ve kullanici istedigi islemi yapar . KAYIT_ISL_2 Formunun Kodlari asagida aiklamalari ile incelenebilir; Private Sub Command1_Click() 'Ado nesnesinin komut tipi Text olarak degistirilir Adodc1.CommandType = adCmdText 'Adodc1 nesnesinin kayit kaynagina SQL sorgusu yazilir Adodc1.RecordSource = "SELECT * FROM TELEFON WHERE(AD='" & Trim(UCase(Text1.Text)) & "' AND SOYAD='" & Trim(UCase(Text2.Text)) & "')" 'Sorgu kayit arama amalidir 'form elemanlarinin ii kayit taki alan bilgileri ile dolar. ad.Text = Adodc1.Recordset.Fields("ad") soyad.Text = Adodc1.Recordset.Fields("soyad") adres.Text = Adodc1.Recordset.Fields("adres") tel.Text = Adodc1.Recordset.Fields("tel") mail.Text = Adodc1.Recordset.Fields("mail") 'kayit silme ve kayit degistirme butonlari aktif hale getirilir. kayit_degistir.Enabled = True kayit_sil.Enabled = True End Sub Private Sub Command4_Click() Unload Me 'Form Unload edilir. End Sub Private Sub temizle() 'Form elemanlarini ii temizlenir. ad.Text = "" soyad.Text = "" adres.Text = "" tel.Text = "" mail.Text = "" 583

Microsoft Visual Basic 6.0


End Sub

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

Microsoft Visual Basic 6.0


'kullanici text2 text kutusunda iken kullanici Enter'a basarsa 'kursor Command1 nesnesine odaklanir Command1.SetFocus End If End Sub

Liste1 Formunun Aiklamasi


Liste1 formu kullanicinin SELECT deyimi sayesine veritabanindan szlen verileri datagrid nesnesine ynlendirmesi ile tm kayitlarin kullanici tarafindan grlmesini saglar.

(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

Microsoft Visual Basic 6.0

FILTRE_ILE_LISTE Formunun Aiklamasi


Filtre_ile_liste formunun amaci kullanicinin form zerindeki data grid nesnesinde gsterilen tm kayitlari filtre text nesnesine girilen metin kriterinde filtrelenmesini rneklemektir.

(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

SORGU_ILE_LISTE Formunun Aiklamasi


Adodc nesnesininde SQL sorgulari alistirilabilir.SORGU_ILE_LISTE formunun amaci adodc nesnesi ile sql sorgularinin alistirilmasini rneklemektir.

586

Microsoft Visual Basic 6.0

(Formun Ekran Grnts)

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

Microsoft Visual Basic 6.0


Ana form bir MDI formdur ve grevi kullanicinin diger formlara ulasmasini saglamaktir.

(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

Microsoft Visual Basic 6.0


baglanti.Open "ACTIVEX", uid = "", pw = "" End Sub Private Sub s_ile_liste_Click() sorgu_ile_liste.Show End Sub Private Sub tk_l_Click() Listele.Show End Sub Private Sub yeni_kayt_Click() yeni_kayit.Show End Sub YENI_KAYIT Formu Aiklamasi Yeni_kayit formu kullanicinin yeni kayit girilmesi amaciyla kullanabilecegi bir formdur. Formda ilgili yordamlarda kayit nesnesi ailir ve form elemanlarinin ierigi kayit nesnesinin alanlarina yazilir.

(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

Microsoft Visual Basic 6.0


End If End Sub Private Sub adres_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 'Eger kullanici adres text'inde iken enter tusuna basarsa 'kursor mail text'ine konumlanir. mail.SetFocus End If End Sub Private Sub cikis_Click() Unload Me End Sub Private Sub Form_Activate() 'Form aktif hale geldiginde kursor ad textbox'una konumlanir. ad.SetFocus End Sub Private Sub Form_Load() 'Form yklendiginde form bilesenleri temizlenir. temizle 'komut command nesnesi olusturulur With komut .CommandType = adCmdText .CommandText = "SELECT * FROM telefon" Set .ActiveConnection = baglanti End With 'kayit isimli recordset olusturulur. With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With End Sub

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

Microsoft Visual Basic 6.0


kayit.Fields("tel") = Trim(UCase(telefon.Text)) 'kayit recordseti gncellenir. kayit.Update 'Form elemanlari temizlenir. temizle 'kullanici bilgilendirilir. MsgBox "Kayit Tamamlandi" End Sub

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

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0


.CommandText = "SELECT * Trim(UCase(Text1.Text)) & Trim(UCase(Text2.Text)) & "')" 'aktif baglanti seilir. Set .ActiveConnection = baglanti End With FROM "' TELEFON AND WHERE(AD='" SOYAD='" & &

'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)) & "')"

& & 593

Microsoft Visual Basic 6.0


'baglanti ile komut nesnesi baglanir, yani aktif baglanti olarak 'mevcut baglanti seilir. Set .ActiveConnection = baglanti End With 'kayit isimli recordset tanimlanir. With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With 'form nesnelerinin ierigindeki degistirilmis veriler 'recordset nesnesinin iindeki alanlara esitlenir kayit("ad") = Trim(UCase(ad.Text)) kayit("soyad") = Trim(UCase(soyad.Text)) kayit("adres") = Trim(UCase(adres.Text)) kayit("mail") = Trim(mail.Text) kayit("tel") = Trim(UCase(telefon.Text)) 'recordset gncellenerek degisiklikler kaydedilir. kayit.Update 'Form elemanlari temizlenir. temizle 'degistirme ve silme butonlari eskisi gibi pasifize edilir. degistir.Enabled = False sil.Enabled = False 'kayit recordseti kapatilir. kayit.Close End Sub Private Sub Form_Activate() 'Form aktif hale geince kursor text1'de konumlanir. Text1.SetFocus End Sub Private Sub Form_Load() 'Form yklendiginde form elemanlarin ii temizlenir. temizle End Sub Private Sub sil_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)) & "')" Set .ActiveConnection = baglanti End With 'kayit isimli recordset nesnesi olusturulur. 594

& &

Microsoft Visual Basic 6.0


With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With 'kayit isimli recordsetin iindeki kursorun aktif oldugu 'kayit silinir. kayit.Delete 'kayit isimli recordset gncellenir. kayit.Update 'Form elemanlari temizlenir. temizle 'recordset kapatilir kayit.Close 'Degistirme ve Silme butonlari aktif hale getirilir. degistir.Enabled = False sil.Enabled = False End Sub Listele Formunun Aiklamasi Listele formu vasitasi ile kullanici databasedeki tm kayitlari dbgrid nesnesinde grntleyebilir.

(Formun Ekran Grnts) Formun kodlari ve kodlarinin aiklamalari asagida incelenebilir. Private Sub temizle() 'form elemanlarinin ierigi temizlenir. filtre_.Text = "" 595

Microsoft Visual Basic 6.0


sql.Text = "" End Sub Private Sub cikis_Click() Unload Me 'form geriyklenir edilir. End Sub Private Sub tum_kayitlar_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 .CommandText = "SELECT * FROM telefon" Set .ActiveConnection = baglanti End With 'kayit nesnesi olusturulur ve komutla baglanir With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut End With 'grid nesnesi gncellenir Set Grid.DataSource = kayit 'grid tazelenir Grid.Refresh End Sub SORGU_ILE_LISTE Formunun Aiklamasi SQL sorgularinin ado nesnesinde kullanimina rnek olmasi aisindan tasarlanmistir.Kullanici sorgu text kutusuna istedigi sql sorgusunu yazar ve alistirabilir.

596

Microsoft Visual Basic 6.0

(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

Microsoft Visual Basic 6.0


FILTRELI_LISTE Formunun Aiklamasi
Formun amaci recordset nesnesinin filter zelligini rneklemektir. Kullanici form zerinde filtre nesnesine girecegi degere gre (ad alanini etkiler) kayitlari filtrelenmis sekilde listeleyebilir.

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

Microsoft Visual Basic 6.0


.CommandText = "SELECT * FROM telefon" Set .ActiveConnection = baglanti End With 'kayit isimli recordset olusturulur ve komut nesnesi ile 'baglanir. With kayit .CursorType = adOpenStatic .LockType = adLockOptimistic .Open komut 'komut nesnesi ile recordset baglanir. End With 'Girilen kritere gre sorgu olusturulur ve isletilir. kayit.Filter = "ad='" & filtre_.Text & "'" 'grid gncellenir Set Grid.DataSource = kayit End Sub Private Sub Form_Load() 'Eger kayit isimli recordset aiksa kapatir 'nk asagidaki ayarlar recordset olusturulurken yapilmalidir. If kayit.State = 1 Then kayit.Close End If 'Komut nesnesi ayarlanir With komut .CommandType = adCmdText .CommandText = "SELECT * FROM telefon" 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 'Grid nesnesi tazelenir. Grid.Refresh End Sub

599

Microsoft Visual Basic 6.0 11-CYRISTAL REPORTS KULLANIMI


Crystal reports,Visual Basic ile beraber gelen bir rapor retim programidir. Crystal reports ile farkli formatlardaki databaselerden ve SQL querylerinden rapor almak mmkndr.

Crystal Reports Menleri:


1New: FILE:

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

Microsoft Visual Basic 6.0


Opitons:Genel olarak veya esitli blmlerin (fields,database)parametre ve formatlarini degistirmek iin kullanilir.Degistirilen ayarlar daha sonra yaratilacak olan raporlar iin de geerlidir. Exit :Crystal Reports u sona erdirir. 2-EDIT Cut:Seili nesneyi siler. Copy:Seili nesneyi hafizaya alir. Paste:Cut veya Copy edilen nesneyi bulunulan noktaya yapistirir. Paste Special:Paste isleminin istenen formatta yapilmasini saglar. Select Fields:Rapor nesnesinde bulunan alanlari semek iin kullanilir. Formula:Ierigi forml olan bir fieldin formln degistimek iin kullanilir. Text Field :Ierigi forml olan bir fieldin textini degistirmek iin kullanilir. Summary Field:Ierigi zet bilgi olan bir fieldin zet bilgi tipini degistirmek iin kullanilir. Browse Field Data:Seili olan fieldin ierigini grntlemek iin kullanilir. Show/Hide Sections:Istenen kesimleri gizlemeye veya gstermeye yarar. Group Section:Varolan bir grup kesiminin zelliklerini degistirmek iin kullanilir. Delete Section:Varolan bir kesimi silmek iin kullanilir. Object:Daha nceden degistirmeye yarar. eklenmis bir olan windows database nesnesinin linklerinin zelliklerini zelliklerini

Links:Daha nceden yaratilmis degistirmek iin kullanilir. 3-INSERT

561

Microsoft Visual Basic 6.0


Database Field:Rapora bir database field eklemek iin kullanilir. Text Field :Rapora sabit bir bilgi eklemek iin kullanilir.

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

Microsoft Visual Basic 6.0


Box:Drtgen Section:Kesimleri formatlamak iin kullanilir. 5-DATABASE

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

Microsoft Visual Basic 6.0


Set Alias:Bir database veya tablea takma ad vermeye yarar.Takma adlar kolay kullanim,hatirlama,v.b.iin kullanilabilir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Save Data With Closed Report:Seimlik bir komuttur.Seili oldugunda program ikisinda otomatik olarak rapor datasi kaybolur.Seili olmadiginda data kaybolmayarak,rapor tekrara aildiginda databaseden gelir.

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

Microsoft Visual Basic 6.0


CRYSTAL REPORTS ILE RNEK RAPOR HAZIRLAMA
Bir rapora baslamadan nce raporun kaynak database ve tablelari gzden geirilerek rapor hazirligi yapilir.yeni bir rapor iin File mensnden New Report komutu verilir. Daha sonra gelen ekranda hangi databasein kaynak olarak kullanacagi belirtir. Biz bu rnekte stok.mdb adli bir access database be bu databasee ait tanim adli bir tablei kullandik. Kullanilacak tablei zerine ift tiklandiginda tablea ait fieldlar listesi gelecektir. Burada kullanilmak istenen fieldlar srkle birak ynetimi ile rapor sayfasini details kisminda istenen yere birakilarak rapora konulmus olur.Rapor sayfasinda baslangita 3 ana grup vardir: Report Header,Details,Report Footer.Report Header, sayfanin basina 1 kere yazilacak sabit bilgileri ierir. rnegin field basliklari gibi.Report Footer da ierik olarak report Header ile aynidir,farki,bilgileri sayfa sonuna yazmasidir.Details kismi ise, datalarin konuldugu ierigi degisen ve data geldike genisleyen bir kismidir. Database fieldlar bu kisma konulur. Tanim tableinda 4 field bulunmakta ve bunlarin hepsi raporda yerini almaktadir. Gereklilik halinde daha nce bahsedilen komutlarla istenen fieldla ilgili olarak bir grup kismi yaratilabilir. Fieldlar detaile konulduktan sonra Format mensnden istenilen sekle getirilebilir. Baski nizleme iin File mensnden Print Preview komutu verilir. Yapilan raporu kaydetmek iin ise File mensnden Save komutu kullanilir. Crystal Reportsa yapilan bir raporu Visual Basicde kullanmak iin Custom Controlsden Crystal Report nesnesi VB toolbarina eklenir.Bu nesne araciligiyla rapor agrilir.

567

Microsoft Visual Basic 6.0

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.

Dosyaya kayit yazma


Bir kayitta kitap numarasi.kitap adi,raf numarasi,konu,yazar ismi ve yayin evi bilgileri olsun. Bu bilgilerin her birine alan denir. Form1 de her alan iin Label ve textbox lar command buttonlar sekildeki gibi hazirlanir. labellarin her birinin, properties penceresindeki caption alanlarinin her biri yazilir. Textboxlarin ise yine properties penceresindeki textlerin ii bosaltilir.

568

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

Form kapatilirken open deyimi ile ailan dosyanin da kapatilmasi gerekir. Formun unload kismina close #1 seklinde yazilarak kapatilir.

571

Microsoft Visual Basic 6.0


Kodlarin ilk satirlarinda textbox a girilen bilgiler teker teker alanlara aktariliyor. Kaydi dosyaya yazdirmadan nce msgbox ile ekrana onay kutusu ikartiriz. Cevap degiskenine kullanici evet dgmesine tiklama yaparsa 6, hayir dgmesine tiklama yaparsa 7 d egeri aktarilir. Bundan sonra if kontrol ile evet tiklandiginda yapilacak islemler siralaniyor.nce put deyimiile alanlar ierigi dosyaya yazdiriliyor. Kitap no bir artiriliyot. Bu islemden sonra textbox larin ierigine teker teker bosluk degeri aktarilir.

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

Microsoft Visual Basic 6.0

Dosyadan kayit okuma


Program alistiginda, Text1 e kitap numarasi yazilip, Arama dgmesine basildiginda yazilan kitap numarasina ait bilgileri grntleyecek.bunun iin kod sayfasinda arama click yordaminda GET deyimi ile, girilen kitap numarasina ait bilgileri dosyadan okutmak gerekir.

573

Microsoft Visual Basic 6.0


Formun load olayina; open kayit.dat for random as #1 len=len (alanlar) yaz

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.

Dosyadan kayit silme


Ilk olarak kullanicidan kitap numarasi istenir ve arama mantigiyla grntlenir. Formu silmek iin textboxlari bosluklara esitleyip alanlara atariz.

574

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Menleri girdikten sonra ok deriz ve mdiformun ekran grnts asagidaki gibidir.

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

Microsoft Visual Basic 6.0


Private Sub form_Activate() If text1.text = 0 Label11.left = 9480 End if End Sub Private Sub form_Unload(Cancel As Integer) Unload CARI Unload CRAPOR Unload KUR Unload SRAPOR Unload STOK Unload THSTDY End Sub Private Sub Sscommand1_Click() Text1.text=1 CARI.Show End Sub Private Sub Sscommand10_Click() Unload Me End Sub Private Sub Sscommand2_Click() Text1.text=1 Stok.Show End Sub Private Sub Sscommand3_Click() End Sub Private Sub Sscommand4_Click() Text1.text=1 SRAPOR.Show End Sub Private Sub Sscommand5_Click() Text1.text=1 KUR.Show End Sub Private Sub Sscommand6_Click() Text1.text=1 THSTDY.Show End Sub Private Sub Sscommand7_Click() Text1.text=1 577

Microsoft Visual Basic 6.0


CRAPOR.Show End Sub Private Sub Sscommand8_Click() Text1.text=1 HAKKINDA.Show End Sub Private Sub Text1_Change() If Text1.Text = 1 then Label11.Left = 7440 : BEEP End Sub Private Sub Timer1_Timer() If Text1.Text = 0 Then Label11.Left = Text2.Text Text2.Text = Val(Text2.Text) - 120 If Text2.Text = 7320 Then Text1.Text = 1 Timer1.Enable = False End If Enf If End Sub

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

Microsoft Visual Basic 6.0


AY$ = Left#(TAR$, 2) Yil$ = Right$(TAR$, 4) Text4.Text = GUN$ + / + AY$ + / + YIL$ End If If Text5.Text = Then Text8.Text = If Text6.Text = Then Text9.Text = If Text7.Text = Then Text10.Text = If Combo1.Text = Then Combo1.Text = TL Data1.Recordset.Edit Data1.Recordset(CariKodu) = Text1.Text Data1.Recordset(Cariadi) = Text2.Text Data1.Recordset(ilgili) = Text3.Text Data1.Recordset(Acilistarihi) = Text4.Text Data1.Recordset(kuru) = Combo1.Text Data1.Recordset(adresi) = Text5.Text Data1.Recordset(ili) = Text6.Text Data1.Recordset(VDVN)= Text7.Text Data1.Recordset(Tel1)=MaskEdBox1.Text Data1.Recordset(Tel2)=MaskEdBox2.Text Data1.Recordset(Faks) = MaskEdBox3.Text Data1.Recordset.Update Data1.Refresh List1.RemoveItem(Text200.Text) List1.AddItem (Text1.Text & String(15 Len(Text1.Text),_)&Text2.Text) Private Sub Command3_Click On Error Goto 50 Cevap=Msgbox(Bilileriniz silinsinmi,52,Texttile For Windows) If cevap = 6 Then Data1.Recordset.Delete Data1.Recordset.MoveFirst a% =List1.Listcount 1 For i% 0 to a% List1.Selected(i%) = True 20 Next i% Private Sub Command4_Click On Error Goto 1000 For i% = 0 To List1.Listcount 1 If Text1.Text & String(10 Len(Text1.Text),_) = Rtrim (Left(List1.Text,10))Then Msgbox Ayni kodda baska bir kayit tespit edildi,vbOKOnly Text1.Setfocus Goto 1001 End If Next i% 579

Microsoft Visual Basic 6.0


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 1000 If Text3.Text = Then Text3.Text = If Text4.Text = Then TAR$ = DATE$ GUN$ = Mid$(TAR$, 4, 2) AY$ = Left#(TAR$, 2) Yil$ = Right$(TAR$, 4) Zaman% = Asc(2)*Asc(() If yil$ = Zaman% Then Error Number = 1 : Goto 1000 Text4.Text = GUN$ + / + AY$ + / + YIL$ End If If Text5.Text = Then Text8.Text = If Text6.Text = Then Text9.Text = If Text7.Text = Then Text10.Text = If Combo1.Text = Then Combo1.Text = TL Data1.Recordset.AddNew Data1.Recordset(CariKodu) = Text1.Text Data1.Recordset(Cariadi) = Text2.Text Data1.Recordset(ilgili) = Text3.Text Data1.Recordset(Acilistarihi) = Text4.Text Data1.Recordset(kuru) = Combo1.Text Data1.Recordset(adresi) = Text5.Text Data1.Recordset(ili) = Text6.Text Data1.Recordset(VDVN)= Text7.Text Data1.Recordset(Tel1)=MaskEdBox1.Text Data1.Recordset(Tel2)=MaskEdBox2.Text Data1.Recordset(Faks) = MaskEdBox3.Text Data1.Recordset(ToplamBorc) = 0 Data1.Recordset(ToplamAlacak) = 0 Data1.Recordset.Update Data1.Refresh List1.AddItem (Text1.Text & String(15 Len(Text1.Text),_)&Text2.Text) Private Sub Command6_Click Text1.Text = Text2.Text = Text3.Text = Text4.Text = Combo1.Text = TL Text5.Text = Text6.Text = Text7.Text = MaskEdBox1.Text = (___) ___ __ __ 580

Microsoft Visual Basic 6.0


MaskEdBox2.Text = (___) ___ __ __ MaskEdBox3.Text = (___) ___ __ __ Text1.Setfocus End Sub Private Sub Form_Activate() Anamenu.Hide Data1.Recordset.MoveFirst List1.AddItem (Data1.Recordset(Carikodu) & String(15 Len (Data1.Recordset(caricodu)),_)& (Data1.Recordset(cariadi))) 10: Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Goto 20 List1.AddItem (Data1.Recordset(Carikodu) & String(15 Len (Data1.Recordset(caricodu)),_)& (Data1.Recordset(cariadi))) If Data1.Recordset.EOF Then Goto 20 Else Goto 10 End Sub Private Sub Text3_Keypress(KeyAscii AS Integer) If KeyAscii = 13 Then TAR$ = DATE$ GUN$ = Mid$(TAR$, 4, 2) AY$ = Left#(TAR$, 2) Yil$ = Right$(TAR$, 4) Zaman% = Asc(2)*Asc(() If yil$ = Zaman% Then End If Text4.Text = Gun$ + / + ay$ + / + yil$ Text4.Setfocus End If End Sub Private Sub Text3_Keypress(KeyAscii AS Integer) TAR$ = DATE$ GUN$ = Mid$(TAR$, 4, 2) AY$ = Left#(TAR$, 2) Yil$ = Right$(TAR$, 4) Zaman% = Asc(2)*Asc(() If yil$ = Zaman% Then Err.Number = 1 : End Text4.Text = Gun$ + / + ay$ + / + yil$ Text4.Setfocus End Sub 581

Microsoft Visual Basic 6.0 12-VBde GRAFIK KULLANIMI


Bu kontrol elamani kullanilarak veri grafikleri izilebilir. Keza kopyalama ve yapistirma kaydetme ve yazdirma gibi islemler de gereklestirilebilir. Verilerin grafiksel olarak izimi ok sayuda grafik sitili tarafindan desteklenir.

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

Microsoft Visual Basic 6.0

583

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

Charttype=0,VtVhChartType2dBar

Charttype=1,VtVhChartType2dBar

Charttype=2,VtVhChartType3dLine

585

Microsoft Visual Basic 6.0

Charttype=3,VtVhChartType2dLine

Charttype=4,VtVhChartType3dArea

Charttype=5,VtVhChartType2dArea

586

Microsoft Visual Basic 6.0

Charttype=6,VtVhChartType3dStep

Charttype=7,VtVhChartType2dStep

Charttype=8,VtVhChartTypeCombination 587

Microsoft Visual Basic 6.0

Charttype=9,VtVhChartType2dCombination

Charttype=14,VtVhChartType2dPie

Charttype=16,VtVhChartType2dXY 588

Microsoft Visual Basic 6.0


ColumnCount Birka farkli grafik ayni anda bir grafik kontrol zerinde gsterilebilir. Bu zellige verilecek deger ile ka trl grafigin gsterilecegi belirtilebilir. Bu zellik ile belirlenen her grafik iin RowCount zelligi ile belirlenen sayida ayri ayri degerlerin atanmasi gerekir. RowCount Her bir grafigin nokta sayisi bu zellik araciligiyla belirlenir. Bu zellige yapilan atama ile veri ekseni okadar paraya blnr. Row,Column zerinde islem yapilacak nokta bu zellik ile belirlenir. Data Row ve Column zellikleri ile belirlenen noktanin degeri bu zellikle belirlenir. ChartData Grafik zerinde bir noktanin degerini belirlemek iin Data zelligini kullaniyorduk. Ayrica yukaridaki rnekte grdgmz gibi toplu deger atamada data ok etkili bir yntem degildir. Bunun yerini ChatrData daha avantajlidir. Tanimlanacak dizi iki boyutlu olmalidir. Dizinin ikinci boyutu hangi grafik setinin kullanilacagi, birinci boyutu grafik zerindeki veriyi gsterir. rnegimizde iki farkli yila ait 3 ayin grafigini izdira biliyorduk. Budurumda tanimlayacagimiz dizi x(3,2) olmalidir. Yani noktadan olusan iki farkli grafik Ayrica VBde diziler ilk elmandan baslamaktadirlar. Chart kontrolnde ise Column ve Row numarasi birden baslar. Bu yzden diziyi x(1 To 3,1 To 2) seklinde olmalidir.

589

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


TitleText,FootnoteText Grafigin stne ve altina yazilmasi istenen metinler bu iki zellikle belirlenir. Title,Footnote Grafigin stne ve altina yazilacak yazilari Titletext ve FootnoteText zellikleri ile belirliyebiliyorduk. Bunlara ait zellikleri bu iki zelligin alt zelligi ile belirtiyoruz. VtFont Mentnin yazi tipi bu zellikle belirlenir MsChart1.Title.VtFont.Name=Times New Roman Tur Location Metnin yeri bu zelligin alt zellikleri sayesinde belirtilir. Location.Visible Bu zellige False verilerek metin gizlenebilir. Location.LocationType Bu zellige asagidaki degerlerden biri verilerek metnin yazilacagi konum belirlenir. VtChLocationTypeTop : st VtChLocationTypeTopLeft : Sol st VtChLocationTypeTopRight : Sag st VtChLocationTypeLeft : Sol VtChLocationTypeRight : Sag VtChLocationTypeBottom : Alt VtChLocationTypeBottomLeft : Alt sol VtChLocationTypeBottomRight : Alt sag VtChLocationTypeCustom : Rect zelligi ile belirlenen koordinat TextLayout Metnin yerlesimi bu zelligin alt zelligi ile belirlenir. TextLayout.Orientation Metnin yataymi yoksa dikeymi olacagi bu zelikle belirlenir. Alacagi degerler ve anlamlari sunlardir. VtOrientationHorizontal : Metin yatay olarak yazilir. VtOrientationVertical : Metin dikey olarak yazilir. VtOrientationUp : Metin asagidan yukariya dogru yazilir. VtOrientationDown : Metin yukaridan asagiya dogru yazilir. TextLayout.HorzAligment Metnin yatay yerlesimi bu zellige verilecek degerlerle belirlenir. VtHorizontalAligmentLeft : Sola VtHorizontalAligmentRight : Saga 592

Microsoft Visual Basic 6.0


VtHorizontalAligmentCenter : Ortaya TextLayout.VtVerticalAligment Metnin dikey yerlesimi bu zellige belirlenir. VtVerticalAligmentTop : ste VtVerticalAligmentBottom : Alta VtVerticalAligmentCenter : Ortaya Chart Metodlari (Methods) EditCopy Bu zellik kullanilarak grafik panoya kopyalanabilir. MSChart1.EditCopy EditPaste Bu metodla panodaki bilgi grafige alinabilir.

veriliecek

degerler

ile

593

Microsoft Visual Basic 6.0

13-MICROSOFT OFFICE'E BAGLANMAK


A. Bir Isletme Bilgi Sistemi Olusturmak
Tutarli ve kullanimi kolay bir arabirim araciligi ile ise iliskin nemli bilgiler saglayan uygulamalara Isletme Bilgi Sistemleri adi verilir. Isletme Bilgi Sistemleri genellikle Ynetim Bilgi Servisi blmlerince ya da veri tabani uzmanlarinca hazirlanir (bu kisiler Oracle ve SQL Server gibi veri tabani programlarindan bilgi toplama ve biimlendirme konularinda bilgi sahibi olmalidir). Isletme Bilgi Servisi uygulamalarini kullananlar ise genellikle veri tabani ynetimi konusunda fazla deneyim sahibi olmayanlardir.

B. Isletme Bilgi Sistemlerinin Kullanim Alanlari


Iyi hazirlanmis Isletme Bilgi Sistemleri, gl is ynetim aralari olusturmak iin bir dizi uygulamanin esitli zellik ve verilerini birlestirir. Kurumunuz ve isletmeniz iin zellestirilmis zmler hazirlamak iin Visual Basic OLE Denetimi ve elinizdeki Office belgeleri kullanilir. Bu kullanimlara rnek verilecek olursa:

B.1. Siparis girme sistemi: Kullanicilar, Excel kullanarak veri giris

formlarini ve gelen siparisleri grntleyebilir. Ayrica Word araciligi ile satis raporlari hazirlayabilirler.

B.2. Insan kaynaklari ynetimi: Kullanicilar bir Access veri


tabanindaki kayitlari ve Word belgelerinde saklanan personel grsmelerini ynetebilir. Ayni zamanda Paint ile fotograf dzenleyebilir.

B.3. Mali analiz araci: Kullanicilar Excel dosyalarinda saklanan sirket


kayit ve defterlerini, inceleyebilirler. ag hizmetlerinden indirilen yatirim

bilgilerini

B.4. Envanter ynetim bilgi sistemi: st dzey ynetim ve satis

personeli, Oracle ya da SQL sunucularinda depolanmis envanter bilgilerinden yararlanarak retim ve fiyatlandirma kararlarini daha iyi bir sekilde alabilirler.

B.5. Ynetim bilgi sistemi: st ynetim, Microsoft Outlook ile


elektronik posta servislerini kullanabilir. Word belgelerine depolanan sirket bilgilerine girebilir ve Access'te zellestirilmis veri tabani sorgularini alistirabilir.

B.6. Proje ynetim sistemi: Kullanicilar Microsoft Project'i kullanarak


takvim 594 bilgilerini ynetebilir. Excel ararciligi ile pazarlama tahminlerini

Microsoft Visual Basic 6.0


izleyebilir, Word ile zellestirilmis durum raporlari hazirlayabilir ve Microsoft Pawer Point ile de elektronik sunular hazirlayabilir. Bit Microsoft Access veri tabanindaki kayitlari, Paint'te hazirlanmis personel fotograflarini ve bir Excel alisma sayfasi ve grafigindeki satis verilerini gsteren ve basit bir Isletme Bilgi Sistemi hazirlamak iin Visual Basic OLE denetimi kullanilir.

C. OLE (Nesne Baglama ve Gmme Elemani)

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

Microsoft Visual Basic 6.0


uygulama ile baglanti saglanacagi gibi Dosyadan Yarat dgmesi kullanarak ta daha nce kaydedilmis dosya ile baglanti kurulabilir. OLE islemlerinde bir nesne iki trl kullanilabilir. 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 kaplar ancak bu tip baglantilarla olusturulmus dosyalarin baska bilgisayara gtrlmesi durumunda orada alisacagi garanti edilmez. nk baglantinin kuruldugu program o bilgisayarda bulunmayabilir. Embedded olarak iliski kuruldugunda ise veri ile birlikte p rogrami dzenleyecek kodda nesneye dahil oldugu iin bu tip dosyalar rahatlikla baska bilgisayara gtrlp alistirilabilir. Embedded olarak kaydedilen OLE dosyalari Linked olanlara gre daha ok yer kaplar.

D. OLE Teknolojisinin Gelisimi


OLE DB (object linking and embedding), Microsoftun yeni jenerasyon veri erisimi tanimidir.Bu teknolojinin amaci uygulamalarin genis bir esitlilikteki verilere servis saglayicilar yoluyla erismesinin saglanmasidir.

D.1. DDE Teknolojisi (Dynamic Data Exchange)


DDE (Dynamic Data Exchange), uygulamalarin birbiriyle haberlesmesini saglama yolunda ilk adimi olusturan teknolojiydi. Bu yntemle uygulamalar, veri alisverisi yapabiliyor, bir uygulama diger bir uygulamadaki komutu alistirabiliyordu. Fakat bu sinirli, yavas ve kullanmasi zor bir teknolojiydi.

D.2. OLE 1.0


OLE 1.0 (object linking and embedding), veri bagimli bilgisayar uygulamalarinda ok nemli bir kavramin gelistirilmesinde ilk adimi olusturdu. Bu kavram bir dokmanin farkli tiplerde nesneler ierebilmesi fikriydi. Nesnelerin dokman iine gml veya bulundugu yere bir baglanti saglanarak dokmanla btnlg saglaniyordu.

596

Microsoft Visual Basic 6.0

Bir Word dokmani iine gml Excel dokmani


Bu dokmanda bir metin ve bir hesap tablosu nesnesi bulunmaktadir. Bu dokman bir kelime islemcisi kullanarak aildiginda her iki nesne de grlebilir ve eger hesap tablosu nesnesi zerinde islem yapilmak istenirse zerine ift tiklandiginda hesap tablosu uygulamasi ailarak hesap tablosu zerinde islem yapilmasi saglanir. Donanim kisitlamalari bu teknolojinin basarisiz olmasinin sebebiydi.

D.3. OLE 2.0


Bu teknoloji belki de anlasilmasi en zor ve karmasik yazilim teknolojilerinden birisidir. Fakat bu karisiklik Visual Basic gibi uygulama programlari tarafindan gizlendiginden kullanimi iin bu teknolojiyi tamamen anlamak sart degildir. OLE teknolojisi aslinda birbiriyle pek az iliskisi bulunan bir grup teknolojinin birlesimidir. Bunlarin tek ortak yani nesneye dayali olarak alismalaridir. Bu nesneler zel olarak COM (component object model) olarak bilinir.

D.4. COM Teknolojisi (component object model)


COM (component object model)'un genel zellikleri sunlardir: Nesnelere erisme ve zerinde islem yapmada genel bir yntemdir. Nesnelerin, kullanimdaysa izlenmesini, kullanimda degilse silinmesini saglar. Standart bir hata raporlama mekanizmasidir. Uygulamalarin nesne degisimini saglayan bir mekanizmadir. Nesenelerin taninmasini ve bunlari isleyecek uygulamalar ile iliskilendirilmesini saglar. Daha nce ele aldigimiz rnekte kelime islemcisinin hesap tablosu 597

Microsoft Visual Basic 6.0


nesnesini kolaylikla gsterebilmesi hesap tablosu nesnesinin bir COM nesnesi olmasindandir. COM nesnesi, nesnelerin kendilerini grntleyebilmeleri iin bir dizi fonksiyonu destekler. Kelime islem dokmani hesap tablosu iin bilgi ierdigi gibi dokman ayni zamanda sistem iin de nesnenin bir hesap tablosu olduguna dair bilgi tasir. Yani dokmanda nesneyi grntleyen asil fonksiyonlar bulunmaz. Bu fonksiyonlar bir uygulama iinde ya da .dll iinde tutulur. Burada kelime islem uygulamasi izim fonksiyonlarini ieren hesap tablosu uygulamasini bulmak iin COM mekanizmasini kullanir. Hata olustugunda da yine bir COM standardi devreye girerek her iki uygulamanin da silinmesini saglayacaktir. Windows'un su an ierdigi DCOM (distributed common object model) COM'un genisletilmis bir seklidir. DCOM nesneleri OLE vasitasiyla ag zerinde degisik sistemlerde alisan uygulamalar arasinda da transfer edilebilir.

D.5. UUID Yapisi (universally uniqe identifier)


UUID (universally uniqe identifier) veya GUID (globally unique identifier) veya CLSID (class identifier) OLE'nin temel ihtiyalarindan birisi de nesneleri tanimlama gereksinimidir. Bir uygulama birok farkli esit nesneyi ieren bir dokman ile alisiyorsa bu nesneleri dogru olarak tanimlayabilmelidir ki sistem bu nesneyle islem yapabilecek uygulamayi tanimlayabilsin. Bunu saglayabilmek iin COM her esit nesneye 16 bytelik bir deger atar. rnek 2 - sistem registry'sindeki bir GUID numarasi {970EDBA1-111C-11d092B0-00AA0036005A} Bu GUID numaralari, evrensel ve sadece atandigi nesneye zeldir. Numaralari olusturmak iin network kartinin adresinden yararlanilir (eger bir network karti yoksa bu GUID olusturucu programca olusturulur). Visual Basic 5.0, GUID numaralarini otomatik olarak sizin iin olusturma ktadir ve olusturulan nesneler de bu numaralarca tanimlidir.

D.6. Yapilandirilmis Dokman Saklama Yntemi (OLE Structured Storage)


Farkli yapidaki nesneleri ieren OLE dokmanlarinin saklanmasi iin kullanilan yntem OLE Structured Storage yntemidir. Bu yntemde bir dokman bir dizi hiyerarsik yapidaki storage ve dizilere ayrilir. Burada storage kabaca klasr yapisina, dizi de dosyaya karsilik gelmektedir.

D.7. OLE zdevinim Yapisi (OLE Automation)


OLE automation, bir uygulamanin diger bir uygulamadaki komutlari alistirmasini saglayan yapidir. OLE automation sadece fonksiyonlarin agrilmasini saglamakla kalmaz, ayni zamanda alisma aninda fonksiyonlarin hangi nesneleri kullanabilecegini ve hangi parametreleri alabilecegini belirler. OLE automation anlayisi ayni zamanda ActiveX teknolojisinin de temelini olusturan bir basamak olusturmustur.

598

Microsoft Visual Basic 6.0

E. OLE Denetimini Kullanmak


Visual Basic programlarina OLE destegine sahip nesneler eklemek iin OLE denetimi kullanilir. Erisilecek OLE nesneleri, sisteminize yklenmis olan Windows uygulamalarina baglidir. OLE destegine bagli her uygulama, destekledigi nesnelerle birlikte, Windows kayit defterinde ( Windows'un bu trden bilgileri saklamak iin kullandigi sistem apinda bir veri tabani-registry) tanimlanmistir. OLE nesnelerini, OLE denetimini ilk kullandigimizda grnen Insert Object (nesne ekle) iletisim kutusunu kullanarak seebiliriz. OLE nesneleri arasinda Excel alisma sayfalari, Excel grafikleri, Word belgeleri ve Microsoft ClipArt grntlerini saglayabiliriz. OLE nesneleri yeni, bos uygulama belgeleri ya da diskten yklenen nceden hazirlanmis dosyalar olabilir.

599

Microsoft Visual Basic 6.0


Sekildeki gibi bir isletme bilgi sistemi olusturmak iin bir veri nesnesi, bir grnt nesnesi iki OLE nesnesi ve esitli etiket ve metin kutulari kullanilmistir. Bu rnek uygulama, bir fotografi, Access veri tabanindan alinan kayitlari ve Excel alisma sayfasi ve grafiginden alinan verileri grntleyecektir. alisma bittiginde yukaridaki sekil elde edilir. Bu uygulamayi yapabilmek iin: 1. Visual Basic baslatilir ve yeni bir standart proje ailir ve ya Visual Basic aik ise File mensndeki New Project komutu tiklanir. 2. Label denetimini kullanarak formun st ortasinda genis bir etiket olusturulur. Bu nesneye programi adi yazilir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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.

F. Automation'i Kullanarak Uygulama Nesnelerini Programlamak


605

Microsoft Visual Basic 6.0


Automation'i tam olarak destekleyen Windows tabanli uygulamalar, uygulama islevlerini, baglanti zellik ve yntemlerle birlikte erisime aar. Nesnelerini erisime aan Windows tabanli uygulamalara nense uygulamalari ya da sunucu uygulamalari adi verilir. Buna karsilik erisime ailmis bu nesneleri kullanan programlamalar ise deneti ya da istemci uygulamalar denir. Istemci ya da sunucu olarak kullanilabilecek Microsoft uygulamalari: Microsoft Microsoft q Microsoft q Microsoft q Microsoft q Microsoft formlar)
q q

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

F.1. Visual Basic'te Automation'i Kullanmak


Microsoft Visual Basic 6 ile Automation'i destekleyen nesne ve deneti uygulamalari yaratilabilir. Islevliklerini erisime aan uygulamalar olusturmak, hem Visual Basic'in Professional ya da Enterprise srmlerine sahip olmasi gerekiyor. Nesne uygulamalarin zelliklerini kullanan deneti uygulamalar olusturmak ise, Visual Basic'in tm srmlerde olduka kolaydir.

F.2. COM Teknolojisi


Client uygulamalar yaratmak iin server nesnelerinin ve COM (Component Object Model) teknolojisinin bilinmesi gerekir. COM teknolojisini iki grevi vardir. Birinci bir nesnenin tanimlanmasi. Ikincisi ise nesnenin yaratilmasi ve client ile server arasinda iletisim kurulmasidir. COM teknolojisi bilesenlerin nasil yaratilacagini ve client uygulamalarin bilesenlere nasil baglanacagini tanimlar. COM terminolojisi: Components (bilesenler), Object (nesne), Automation (otomasyon). Bir bilesen belli fonksiyonu isletilebilir kod parasidir. EXE, DLL, OCX olabilir. Server uygulamalar bir ya da daha ok bilesenlerden olusur. COM teknolojisi bilesenlerin nasil yaratilacagini ve client uygulamalarin buna nasil baglanacagini belirler. Nesneler ise bir birim olarak kullanilan kod birimleridir. Belli bir sre iin yaratilirlar ve dagitilirla r. Automation terimi ise bilesen yaratma ve nesne kullanma yntemlerini tanimlar.

F.3. Nesne Teknolojisi

606

Microsoft Visual Basic 6.0


Nesne modeli bir server uygulamadaki nesneler arasindaki iliskileri tanimlar. Nesne modeli sayesinde nesnelerin yapisini ve ierdigi nesneleri grmek mmkndr. Application

Workbook(s)

Worksheet(s)

Range

Chart

Add-Ins Microsoft Excel Nesneleri

F.4. Visual Basic ile Bir Client Yaratmak


Bir client uygulama yaratmak iin nesneler arasindaki iliskinin ve nesnelerin kullaniminin bilinmesi gerekir. Visual Basic ile bir client uygulamasi yaratmak iin gerekli adimlar : 1. Bilesen ktphanesine baglanti kurulur.(referans) 2. Nesne degiskeni tanimlanir. 3. Nesne yaratilir. 4. Nesnenin metotlari ve zellikleri kullanilir.

F.4.1. REFERANSLARIN DZENLENMESI


Bir client uygulamasi yaratildiginda; client bir bilesene baglanir. Bir client'i bir bilesene baglamak iin bilesenin ktphanesine referans gerekir. Bu islem iin: Project mensnden References komutu tiklanir. References iletis im kutusunda baglanilacak ktphane seilir.

607

Microsoft Visual Basic 6.0


F.4.2. NESNELERIN TANIMLANMASI
Bir nesne degiskeni kullanima gre generik ya da spesifik olarak tanimlanir. Generik nesne tanimlamalari her tip nesneye pointer grevi grr. Dim nasne1 As Object Spesifik nesne tanimlamasi ise sadece o nesneye iliskin pointer grevi grr. Dim nesne1 As Excel.Application

F.4.3. NESNELERIN YARATILMASI


Bir client uygulamasi yaratmak iin nc adim i e nesnenin yaratilmasidir. s Visual Basic'te nesne yaratmak iin drt ayri yol varir: q CreateObject fonksiyonunu kullanmak. q Set ve New deyimlerini kullanmak q Modln tanimlama kesimlerinde As New deyimini kullanmak q GetObject fonksiyonunu kullanmak CreateObject fonksiyonunun kullanimi: Dim x1App as Excel.Application Set x1App = CreateObject("Excel.Application") GetObject fonksiyonunu kullanma : Dim x1 As Objet Set x1 = GetObject("c:\my documants\butce.xls")

608

Microsoft Visual Basic 6.0

rnek: Microsoft Excel ile Baglanti


Dim x1App As Excel.Application Dim x1Book As Excel.Workbook Dim x1Sheet AsExcel.Worksheet Dim x1c As Excel.Chart Set x1App = CreateObject ("Excel.Application") x1App.Visible =True Set x1Book = x1App.Workbooks.Add Set x1Sheet = x1Book.Worksheets(1) x1Sheet.Range ("b1").Value ="Ocak" x1Sheet.Range ("c1").Value ="Subat" x1Sheet.Range ("A2").Value ="a mali" x1Sheet.Range ("A3").Value ="b mali" x1Sheet.Range ("b2").Value ="200" x1Sheet.Range ("b3").Value ="300" x1Sheet.Range ("c2").Value ="400" x1Sheet.Range ("c3").Value ="500" x1App.ActiveWorkBook.SaveAs FileName :="c:\Kitap1.XLS" 'Msgbox "ikmak Istiyor musunuz",vbYesNoCancel 'If vbYesNoCancel Then x1App.Quit x1Sheet.Range ("A1:C3").Select Set x1c =x1App.Charts.Add ActiveChart.Charttype=x13DcolumnClustered 609

Microsoft Visual Basic 6.0


ActiveChart.SetSourceData Source: = Sheets ("Sheet1").Range("A1:c3"), PlotBy:=x1Rows ActiveChart.Location Where:=x1LocationAsObject, Name:"Sheet1" Whit ActiveChart .HasTitle =False .Axes(x1Category). HasTitle =False .Axes (x1series) . HasTitle =False .Axes(x1Value). HasTitle =False End Whit

F.5. Application Nesnesi ile alismak


Bir Microsoft Excel ya da Word ortami baslatildiginda otomatik olarak bir Application nesnesi yaratilir. Application Documents

Selection

Range Window

Microsoft Word Nesne Modeli


Programci Application nesnesinin zelliklerini ve metotlarini kullanarak uygulamanin tamami zerinde islemler yapilabilir. rnegin baski n izleme iin: Application.PrintPreview=True Application nesnesinin bazi zellikleri ise uygulamanin grnmn dzenle. rnegin DisplayStatusBar zelligine True olmasi durum ubugunun grnr olmasini saglar. Yine benzer biimde WindowState zelliginin wdWindowStateMaximize olamasi uygulamanin penceresinin ekrani kaplamasini (Maximized) saglar.

610

Microsoft Visual Basic 6.0


With Application .WindowState = wdWindowStateNormal .Height = 450 .Width = 600 End With Application nesnesinin altinda Documents ve Windows kolleksiyonlari yer alir. Documents kolleksiyonu Wotd iinde ailmis btn belgeleri temsil eder. rnegin bir belgeyi amak iin: Application.Documents.Open FileName:="c:\my documents\mektup.DOC" Ya da; Documents.Open FileName:="c:\my documents\mektup.DOC"

F.6. Document Nesnesi ile alismak


Microsoft Word iinde bir belgeyi yaratmak ya da amak iin Document nesnesi ile kullanilir. Istenilen bir belgeye erismek iin bu belge adiyla ya da indeks numarasiyla gsterilir. Istenilen belgenin gsterilmesi:Documents (indeks) ya da; Documents ("Rapor.doc") rnekte Rapor.doc adli bir belge tanimlanmaktadir: Set WordDoc = Documents ("Rapor.doc")

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

Microsoft Visual Basic 6.0


Belge yaratildiktan sonra (ilk defa kayit etmek iin)SaveAs metodu kullanilr. ActiveDocument.SaveAs FileName:="rapor.doc" ok sayida belge arasindan birini aktif hale getirmek iin Activate metodu kullanilir. Documents("zelmektup.doc").Ativate Bir belgeyi yazdirmak iin Printout metodu kullnilir. ActiveDocument.PrintOut Aktif belge birinci sayfadan nc sayfaya kadar yazicidan bastirmak iin: ActiveDocument.PrintOut Range:=wdPrintFromTo, From:="1", to:="3" Bir belgeyi kapatmak iin Close metodu kullanilir. Documents("rapor.doc").Close Eger belgede degisiklik varsa Close metodu degisiklikleri kayit etmek iin soru sorar. Bu islemi engellemek iin wdDoNotSaveChanges ya da wdSaveChanges sabitleri kullanilir. rnekte belge kayit edilip kapatilmakta: Documents("Sales.doc").Close SaveChanges:=wdSaveChanges rnekte belge kayit edilmeden kapatilmaktadir: Documents.Close SaveChanges:=wdDoNotSaveChanges Belgeye nesne eklemek iin .Add metodu kullanilir. Bylece belgeye tablolar, aiklamalar, vb geler eklenebilir. rnekte 4x4boyutlarinda bir tablo eklenmektedir: ActiveDocument.Tables.Add Range:=yer, NumRows:=4, NumColumns:=4 'burada yer degiskeni tablo nun eklenecegi yeri belirtir. Range nesnesi belge iindeki bir yeri gsterir. Bu ter daha sonra bir nesne eklemek iin ya da biimleme yapmak iin kullanilir. Range nesnesi ayni zamanda belgenin bir kismini da temsil eder. Range nesnesi baslangi ve bitis karakterlerinin konumu ile tanimlanir. Range nesnesi herhangi bir seim nesnesi ile ilgisi yoktur. Bu nedenle range nesnesi kullanilarak herhangi bir seim yapmadan belge zerinde belli kisimla biimlenebilir. 612

Microsoft Visual Basic 6.0


Range nesnesini tanimlamak iin Start, End ve StoryType zellikleri tanimlanir. Satr ve End zellikleri alanin basindaki ve sonundaki karakterlerin konumunu gsterir. Set myRange = ActiveDocument.Range (Start:=0; End:=10) Aktif belgenin ilk on karakterini biimlemek iin: Set myRange = ActiveDocument.Range (Start:=0; End:=10) MyRange.Bold=True Aktif belgenin basina metin girmek iin: Set myRange = ActiveDocument.Range (Start:=0; End:=0).InsertBefore_ Text:="metin bilgi" Aktif belgenin ikinci ve nc cmlesini semek iin: Set myDoc = ActiveDocument Set myRange = myDoc.Range (Start:=myDoc.Sentences(2).Start,_ End:=myDoc.Sentences(3).End)

G. Visual Basic Object Browser


Visual Basic Object Browser iki farkli kullanimi olan bir grntleme yardimci programidir: Gzat'la Visual Basic programlama ortaminda zerinde alisilan programda kullanilan nesne, zellik ve yntemlere gz atilabilir.

G.1. Word Kullanimi

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

Microsoft Visual Basic 6.0

4. Iletisim kutusunu kapatmak ve basvuruyu projeye eklemek iin Ok tiklanir. 5. View mensndeki Object Browser komutu tiklanir.

614

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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.

Visual Basicten Word Kullanmak


Word CheckSpelling yntemi bir visual basic programinda kullanmak iin asagidaki programlama adimlarini uygulamamiz gerekir. Sz konusu olan teknikler, birok uygulama nesnesine uygulayabilecegimizden, burada grenecegimiz bilgileri, Automation destegine sahip birok uygulamadaki islevleri kendi programlariniza eklemek iin kullanabilirsiniz. Adim 1 References komutunu kullanarak gerekli nesne ktphanelerine ynelik basvurulari projenize ekleyin. Adim 2 Kendi Visual Basic programinizi yazin. Iinde Automation kullanmayi dsndgnz olay yordaminda Dim bilgisini kullanarak bir nesne degiskeni yaratin ve sonra CreateObject islevi araciligiyla bir Automation nesnesini nesne degiskenine ekleyin. Dim X As Cbject x i degisken adi olarak kullanin 617

Microsoft Visual Basic 6.0


Set X = CreateObject (Word.Aplication) Adim 3 : Olay yordamindaki Automation nesnesinin yntem ve zelliklerini kullanin. Gerektiginde, sz dizimi iin Object Browserdaki yardim dosyalarina yada nesne uygulamasinin kullanim kilavuzlarina bakabilirsiniz: X.visible = False Word gizle X.Documents.Add Yeni belge a X.Selection.Text Metin kutusunun ierigini bu belgeye Kopyala. X.ActiveDocument.CreckSpelling yazilim denetimini alistir Text1.Text = X.Selection.Text Dzeltilmis metni Visual Basic e kopyala Adim 4 Nesne uyulamasini kullanmayi bitirdiginizde uygulamayi kapatin ve bellekte yer amak iin nesne degiskenini bosaltin: X.Quit Set X =Nothing Word kapat Nesne degiskenini bosalt

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

Microsoft Visual Basic 6.0


3. Label denetimin kullnarak formun stnde uzun bir etiket olusturun. Olusturdugunuz bu etiket, programin kullanimi iin gerekli ynergeleri grntleyecek.

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.

6. Programdaki nesneler iin asagidaki zellik ayarlarini yapin:

Nesne Form1 Label1 Text1 Text1 Text1 Command1 Command2

zellik Caption Caption Multiline ScrollBars Text Caption Caption

Ayar zel Yazim Denetisi Metin kutusuna szck yada girip Yazim Denetimini tiklayin True 2-Vertical (Bos) Yazim denetisi Son

szckler

zellikleri ayarladiginizda, formunuzun asagidaki gibi olmasi gerekir:

619

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


yntemlerini agirir ve sonrada nesne tarafindan kullanilan bellegi serbest birakir. Nesne degiskenine ilk basvuru yapildiginda, Word otomatik olarak ailir. Sonra Wordn Selection.Text zelligi, metin kutusunun ierigini yeni bir Word belgesine kopyalamak iin kullanilir. CheckSpelling yntemi yrtldgnde, Word yazim denetisini alistirir ve metinde yazim hatasi olup olmadigini denetler. Eger bir yazim hatasi bulursa, Word Spelling (Yazim Denetimi) iletisim kutusunu aar ve kullniciya dzeltme yapmak iin bir sans verir. Metin kutusu bir satirdan daha fazla metin iermek iin bir sans verir. Metin kutusu bir satirdan daha fazla metin ierse bile, Word metin kutusundaki btn szcklerin yazi denetimini yapar. Denetim bittiginde, dzeltilmis szckler tekrar Visual Basic metin kutusuna kopyalanir ve Word uygulamasi kapanir. Command1_Click yordaminin sonunda bulunan Set bildirisi nesne degiskeninin isgal ettigi bellege serbest birakilir. 8. Command1_Click olay yordamini kapatin ve Son komut dgmesini ift tiklayin. 9. Olay yordamina End yazin ve Code penceresini kapatin. zel yazim denetisi programini tamamladiniz. 10. Formu diskinize Benim Yazim Denetim.frm adiyla kaydetmek iin, Save Form1 As komutunu kullanin. Save Project As komutunu kullanarak projeyi Benim Yazim Denetim.vbp adiyla diske kaydedin. (Her iki dosyayida \ AaVb6 \ Ders14 klasrne kaydedin.) Simdi Automationin nasil alistigini grmek iin programi alistiracagiz.

Yazim Denetim programini alistirin


1. Ara ubugundaki Start dgmesine tiklayin. Bir sonraki sayfada gsterildigi gibi, program programlama ortaminda alisir:

621

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


4. Birinci hatayi dzeltmek iin,uygun szcg seip Degistir (Chance) dgmesini tiklayin. Word ikinci yazim hatasini vurguladigi zaman, bu hatayi dzeltmek iin ayni islemi yineleyin. Yazim denetimi iletisim kutusu kapanir ve metin kutusundaki szckler dzelir. 5. Programi kapatma k iin Sonu tiklayin.

Visual Basicten Exceli Kullanmak


Microsoft Excel, Visual Basic programlarinizi gelistirebileceginiz esitli karmasik hesaplama ve veri zmleme aralari ierir. Asagidaki yordam Excelin Pmt islevini, bir dizi Visual Basic metin kutusunda belirlediginiz faiz, borcun denecegi ay ve anapara bilgileriyle borcun aylik demesini hesaplamak iin kullanilir.

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

Microsoft Visual Basic 6.0


End if End sub Yordam nce xl adinda bir nesne degiskeni yaratir ve onu Excel.Sheet nesnesine atar. Sonra yordam Excelin Worksheetfunction nesnesini kullanir ve ipotek demesini Abs (mutlak deger) ilevi ile arti bir degere dnstrr. Excelde bor demeleri normalde negatif degerlerle ifade edilirler ama Visual Basic formunda demeler pozitif olarak daha iyi grnr. Pmt islevi iin gerekli bir bagimsiz degisken eksikse, yordam Tm alanlar doldurulmalidir iletisini grntler. NOT : Asagidaki adimlari tamamlamak iin, bilgisayarinizda Excel 97nin ykl olmasi gerekir. Ipotek projesi ayrica Excel 8.0 Object Libraryye de nemli bir basvuru ierir. Automationla Excel kullanan uygulamalar yaratirsaniz, References komutuyla projenize Excel 8.0 Object Libraryyi eklemeyi unutmayin.

Ipotek programini alistirin


Simdi programi Excel Automationin nasil alistigini grmek iin baslatalim. 1. Sabit diskinize \AaVb6\Ders14 klasrndeki ipotek.vbp projesini ain. 2. Run mensnde Start komutunu tiklayin. Ipotek hesaplayicisi birka varsayilan degerle ekranda grnr.

3. Anapara metin kutusuna 100000000 yazin. Formunuz asagidaki gibi grnr.

624

Microsoft Visual Basic 6.0


4. Pmt hesapla dgmesini tiklayin. Program 100,000,000 TLlik ibr ipotegin % 9luk bir faizle 360 ayda denmesindeki aylik demeyi hesaplamak iin Exceli kullanir. Sonraki sayfada gsterildigi gibi ekranda bir ileti kutusunda sonuc 75.000.000 TL grnr.

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.

Visual Basicten Outlooku Otomatiklestirmek


Microsoft Outlook, Microsoft Officein e-posta,randevu, kisi baglantilari ve is yerindeki takvim ve iletisimle ilgili diger isleri yneten uygulamasidir. Ben Outlooku Windows grev ubugunda srekli alistirarak asil e-posta programim olarak kullaniyorum. Yakin zamanda bazi Visual Basic programlarini zellestirip, bu programlarin Outlook uygulamasiyla e-posta gnderebilmesini saglamayi planladik. Bu teknigi bir veriyi (karmasik bir hesaplamanin sonucu,raporlar,veritabanlari ya da yalnizca bir Merhaba demek iin) otomatik olarak diger kisilere gndermek istediginizde kullanabilirsiniz. Outlookla posta gndermeningzel tarafi To, Cc, Subject ve Message alanlarini zellestirebilmeniz ve bir yada daha fazla dosya ekleyebilmenizdir. Asagidaki alistirmada, Visual Basicten Outlooku kullanarak bir posta gndermek iin Mektup Gnder programini kullanacaksiniz. Programi alistirmadan nce Command1_Click olay yordamindaki kodu, belirli durumlara uygun e -posta adlari kullanabilmek iin, asagida gsterildigi gibi degistirmeniz gerekir. Burada verileri kullanmayin, gerek e -posta adresleri iermedikleri iin ve servis saglayicidan hata iletileri alirsiniz.

625

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


4. alismiyorsa Microsoft Outlooku baslatmak iin Windows Start mensn kullanin. Daha sonra Visual Basicin Outlookun Outbox klasrne e-posta iletileri koydugunu dogrulamak isteyeceksiniz.

5.

Run mensnde, Start programini alistirin.

komutunu

tiklayin

ve

mektup

gnder

Programin basit arabirimi grnr:

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

Microsoft Visual Basic 6.0


9. Simdi Outlooku yeniden grntleyin ve iletiler iin Outbox klasrne bakin. Bekleyen posta iletinizi asagidaki gibi grrsnz:

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.

Visual Basicten PowerPointi Kullanmak


Bu son alistirmada, Office 97deki son byk uygulama olan PowerPointte bir sunu gsterisi iin Automationu nasil kullanacaginizi greneceksiniz. PowerPoint sunu gsterileri yaratabileceginiz, oklu ortam sunularinizi alistirabileceginiz, zel Web sayfalari yaratabileceginiz zengin bir sunu programi haline gelmistir. Hepsinden nemlisi PowerPoint 97 Visual Basic for Applications makro dilini ierir, bylece sunularimizin nasil yaratilip gsteridigini ayarlayan makrolar yazbilirsiniz. 628

Microsoft Visual Basic 6.0


PowerPointi, Visual Basicten kullanmak Word, Excel ve Outlooku kullanmaya benzer, kolayca PowerPoint nesne ktphanesine Reference komutuyla bir kpr yaratin, CreateObject isleviyle bir PowerPoint nesne degiskeni yaratin ve degiskeni PowerPoint komutlarini alistirmak iin kullanin. Command1_Click olay yordaminin asagidaki olay yordami Visual Basicten herhangi bir sunuyu nasil grntleyeceginizi gsterir. Kullanicinin bir sunudan digerine nasil getigini anlatmak iin kullaniciya Ara ubugunun nasil kullanilacagini gsteren bir ileti kutusu eklenmistir.

Simdi nasil alistigini grmek iin Sunu gster programini baslatin.

SunuGster Programini alistirin


1. \AaVb6\Ders14 klasrndeki sunu gster programini ain. 2. Run mensnde Start komutunu tiklayin.

Visual Basic programin basit kullanici arabirimi grntler.

629

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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.

Yeni Bir Programlama Teknolojisi


DHTML, Visual Basicten biraz farkli bir programlama teknolojisi sunar. Visual Basic formlari uygulamalar iin temel kullanici arabirimi 632

Microsoft Visual Basic 6.0


kullanirken,DHTML kullaniciya bir yada daha fazla HTML sayfalari araciligiyla ve destekleyici program koduyla sunar. Bu sayfalari ayri bir HTML dzenleyicisinde (Microsoft word ya da Microsoft FrontPage) yaratabilir ya da Visual Basice eklenen DHTML Page Designerda bastan yaratabilirsiniz.

Adim Adim DHTML Program Gelistirmek


DHTML Page Designer, Visual Basic program ortami iinde alistigi iin,DHTML gelistirmesi islemi standart bir Visual Basic uygulamasi olusturmaya ok benzerdir. Izlemeniz gereken adimlar : 1. Visual Basici baslatin ve yeni bir DHTML Application projesi ain. 2. Project penceresinde,designer klasrn ain,DHTMPage1 gesini tiklayin ve View Object dgmesini tiklayin. 3. DHTML proje penceresini web sayfanizi ierecek kadar byk olacak sekilde boyutlandirin. 4. Web sayfaniza gerekli metni,DHTML ara kutusu gelerini ve ActiveX denetimlerini ekleyin. 5. Metni biimlendirme aralariyla dzenleyin ve program koduna basvurmasini istediginiz metin gelerine ID imlerini atayin. 6. Gerekli her kullanici arabirim gesi iin program kodunu yazin. 7. Project mensndeki AddDHTMLPage komutuyla projenize yeni Web sayfalari ekleyin ve 4 ile 6. adimlarda anlatildigi gibi metin,denetimler ve olay yordamlari ekleyin. 8. Projeyi File mensndeki Save As komutuyla kaydedin. 9. Visual Basic ara kutusundaki Start dgmesini tiklayarak projeyi alistirin ve her zelligi denediginizden emin olun.(programi alistirmak iin sisteminizde Internet Explorer 4.01 ya da daha sonraki srmleri kullanilmalidir.) 10. Uygulamanizi dagitmak isterseniz,file mensndeki MakeDHTMLProject.dll komutuyla derleyin. Sonra Windows Start mensndeki Visual Studio 6.0 Tools klasrndeki Package and Development Wizardi kullanarak uygulamanizi dagitin.

633

Microsoft Visual Basic 6.0

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.

DHTML Page Designer Ile alismaya Baslamak


DHTML uygulamalari yaratmayi grenmenin en iyi yolu DHTML Page Designerla biraz el alistirmasi yapmaktir. Bu kisimda Visual Basicte Page Designeri aacak ve Internet uygulamaniz iin temel olacak biimlendirilmis metinle bir HTML sayfasi yaratacaksiniz.

Yeni Bir DHTML Uygulamasi Amak


Visual Basicte baslatmak ve DHTML Page Designerda yeni bir DHTML uyg ulamasi amak iin asagidaki adimlar izlenir:
1. Visual Basici baslatin. 2. New Project iletisim kutusunda,DHTML Application simgesini ve Openi tiklayin. Yeni bir proje amak iin DHTML Application simgesini kullandiginizda, Visual Basic DHTML Page Designeri ykler ve derleyiciyi ActiveX dinamik baglanti ktphanesi (.dll) yaratmak iin yapilandirir. Bir ActiveX .dll Dynamic HTML komutlarina basvuran bir HTML sayfasina nesneler ve hesaplama kaynaklari yaratan bir dosyadir. (Visual Basic program kodunuz bu .dlller de saklanir.) Page Designer aildiginda ekraniniz asagidaki gibi grnr:

634

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

DHTML sayfasi zellikleri hazirlanan sayfanin Visual Basic projesi iinde ya da bir HTML dosyasi olarak kayit edilmesini saglar.

636

Microsoft Visual Basic 6.0

Bir HTML Sayfasina Metin Ekleme


Denetimler ve zel biimlendirme efektleri sika Webdeki HTML sayfalarina eglence katsa da,iyi tasarlanmis bir HTML uygulamasinin esasi yapisal olmayan metinsel arabirimdir. Sonraki adimlarda Page Designerin sag blmesindeki HTML sayfasina Sansim 7 Oyunu programi iin metinsel geler ekleyeceksiniz. 1. Page Designerda HTML sayfasina (sag taraftaki sayfa ) tiklayin. HTML sayfasinin st tarafinda yanip snen bir imle grnr ve belgenizin bir aga grnm semasi Page Designerin sol blmesinde ailir. 2. Asagidaki metni,bosluklari dogru koymak iin [parantez] iindeki ynergeleri dogru izleyerek HTML sayfasina yazin: Sansim 7 Oyunu [Enter][Enter][Enter] 0 [Space][Space][Space] 0 [Space] [Space] [Space] 0 [Enter] Kazanma: [Enter] Sansim 7 Hakkinda Her [Enter] ynergesi iin,Enter tusuna basin. Her [Space] ynergesi iin bir kez bosluk tusuna basin. NOT: Visual biimlendirme Basicte imlerini Page Designeri kullanirken belirli HTML bilmeniz gerekmez. Ama,belgenizin nasil
637

Microsoft Visual Basic 6.0


dzenlendigi hakkinda daha fazla bilgi vermek iin zaman zaman aga grnm blmesinde HTML imleri grrsnz. Simdi aga grnm blmesindeki BODY isaretinin zerinde alistiginiz HTML sayfasinin baslangi ierigini ierdigine dikkat edin. HTMLde BODY imi Web sayfasinin temel grafik grnm ve davranisini denetleyen ynergeleri ierir. Page Designerdaki Metni Biimlendirme DHTMLde stiller HTMLde zgn olarak bir Web sayfasindaki metin gelerini biimlendirmek iin kullanilan biimlendirme imlerinin yerini alir.(HTML biimlendirme imleri yine vardir ama Page Designer onlari projeniz iin bir .dsx dosyasinda saklar.) Bir stil HTML belgesindeki gelerin grnsn denetleyen bir zellikler yiginidir. Stil sayfalari bir stili tek bir geye ya da bir geler grubuna uygulayabilir. Ayrica,sayfadaki her geye birden fazla stil uygulayabilirsiniz (bir baslik ve kpr stili gibi). Asagidaki adimlarda,daha nce Sansim 7 uygulamasi iin Page Designer ara ubugundan biimlendirme stilleriyle yazdiginiz metni biimlendireceksiniz. 1) HTML sayfasinin st tarafindaki Sansim 7 Oyunu metnini sein. Metnin stilini Page Designerda degistirmeden nce onu semelisiniz. 2) Page Designerin sol st ksesindeki Style ailir liste kutusunu tiklayin ve Heading 1 stilini gsterin. 3) Sansim 7 Oyunu metnini Heading 1 stilinde biimlendirmek iin Heading 1 stiline tiklayin. Page Designer,metni genisleten Heading 1 stilini uygular. NOT: Page Designer stilleri Microsoft Word ve diger szck isleme uygulamalarindaki stillere benzerdir. Simdi HTML yapacaksiniz.
638

sayfanizda

birka

stil

daha

kullanarak

alistirmalar

Microsoft Visual Basic 6.0


4) Belgede aga grnm blmesinde ilk bos paragrafi tiklayin P() ve Heading 2 stiliyle biimlendirin.(P() imlerini grmezseniz,aga grnm blmesinde BODY gesinin yanindaki arti simgesini tiklayin ve ilk P() imini sein ve Heading 2 stiliyle biimlendirin.) HTML sayfasindaki metni semenin yani sira,aga grnm blmesinden tek tek satirlari seip biimlendirebilirsiniz. Heading 2 stilini tikladiktan sonra,Page Designer yazi tipini bytr.(ama satir bos oldugu iin,tek fark edilebilen etki satirlar arasindaki boslukta kk bir artistir.)

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

7) Kazanma:metnini sein ve Heading 3 stiliyle biimlendirin.

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

Microsoft Visual Basic 6.0


Visual Basicte DHTML uygulamalari yazdiginizda,ortak bir grev zellik ayarlarini kullanarak bir Web sayfasindaki tek tek metin yada karakterlerin ierigini degistirmektedir. rnegin,belirli bir ayda Web blgesini ziyaret edenlerin sayisini bildiren sayiyi gncellemek isteyebilirsiniz. HTML sayfanizi yaratirken Visual Basic koduyla hangi szckleri ya da karakterleri ayirmak istediginizi biliyorsaniz,Page Designerin dizilimi SPAN imleriyle evrelemesini saglayabilirsiniz. Bu imleri HTML belgenizde grmezsiniz ama Page Designerda ekranin arkasinda bulunurlar ve kaydedildiklerini aga grnm blmesinde grrsnz. Sansim 7 uygulamasindaki blgeyi SPAN imleriyle tekrar belirlemek,bylece daha sonra olay yordaminda rastgele sayiyla degistirebilmek iin su adimlari izleyin: 1) Belgedeki ilk 0i sein ve Page Designer ara ubugundaki Wrap Selection In SPAN dgmesini tiklayin. Metni semek iin klavyeyi ya da fareyi kullanabilirsiniz.(Setiginiz karakterler bosluklarla evriliyse klavyeyi kullanmak daha kolay olacaktir.)

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

Microsoft Visual Basic 6.0


Bir DIV gesindeki hersey ayni biimlendirilmeye sahip oldugundan bir Web sayfasindaki bilgileri gruplandirmanin iyi yoludur. DIV imi iin ara ubugu dgmesi,SPAN dgmesinin yaninda Wrap Selection In <DIV>...</DIV> adiyla yer alir. Properties Penceresiyle ID znitelikleri Atama Visual Basic programinda,uygulamanizin kullanici arabirimindeki her genin derleyicinin alisma zamanini islerken kullandigi zgn bir adi vardir. rnegin,formdaki ilk metin kutusu nesnesi Text1 adini,ikincisi Text2 vb. adlarini alirlar. Bir Dinamik HTML uygulamasinda da sayfadaki her genin,program koduyla ynetmek istiyorsaniz,zgn bir adi ya da ID zniteligi olmalidir. DHTML uygulamanizda sayfanizdaki esitli gelere atadiginiz her znitelik gesinin nesne adi gibi alisir. HTML sayfanizdaki her metinsel her geye ID znitelikleri atamak iin asagidaki adimlari izleyin. 1. Aga grnm blmesindeki Sansim 7 Oyunu basligini tiklayin (H1 imi). 2. Grnmyorsa ya da baska bir pencere tarafindan kapatiliyorsa program penceresini ain ve bytn. 3. Program penceresinde ID girdisinin yanindaki metin kutusunu tiklayin ve LuckyHead yazin ve Entera basin. Page Designer seili metnin ID niteligini LuckyHeada ayarlar. Bu DHTML uygulamasinda basligi programla denetlemenize ragmen,kullandiginiz paragraflarin her birini adlandirmak iyi bir programlama alistirmasidir. 4. Aga grnm penceresinde ikinci basligi tiklayin (belgedeki ilk bos satir) ve Properties penceresiyle ID niteligini Blank1e degistirin. 5. Aga grnmnde nc basligi tiklayin ve ID niteligini Blank2e degistirin. 6. Drdnc basligi tiklayin ( sayinin tmn alin) ve ID niteligini Numa degistirin.
641

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


mavi metin stili) grnr olur ve bir (+9) simgesi aga grnm blmesinde grnr. 4. Kpr (Hyperlink 1) iin ID zniteligi grmek iin aga grnm blmesinde arti simgesini tiklayin. 5. Kprnn zelliklerini Properties penceresinde grmek iin aga grnm blmesinde Hyperlink1 imini tiklayin. 6. Properties penceresinde href zelligini sagindaki onay kutusunu isaretleyin. bulun ve zelligin

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

2. Proje dosyanizin (.vbp) adi soruldugunda WebSansim yazim

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

Microsoft Visual Basic 6.0


1. WebSansim programini alistirmak iin Visual basic ara ubugundaki Start dgmesini tiklayin. Bu uygulamayi ilk defa alistirdiginizda,bir Project Properties iletisim kutusu grebilirsiniz. Bu kutu uygulamaniza Page Designerda yarattiginiz HTML formunu ykleyerekmi baslamak istediginizi sorar. Dogru HTML bileseni yeni belirlenmistir,yalnizca bu iletisim kutusunu grrseniz OKi tiklayin. Visual Basic Internet uygulamanizi grntler. Exploreri ykler ve DHTML

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

Microsoft Visual Basic 6.0


Microsoft Wordde HTML Belgeleri Yaratmak Dinamik HTML sayfalarini Visual Basic ierisinde DHTML Page Designer kullanarak yaratabilir ya da HTML belgelerini bir dis editr ya da kelime islemcisi kullanarak yaratabilir ve belgeleri dogrudan programlama projenizle birlestirebilirsiniz. DHTML denetimleri nc grup ActiveX denetimleriyle gelismis biimlendirme etkileri yaratmak isterseniz,DHTML Page Designer ok kullanislidir. Ancak,sadece HTML belgelerinize metin giriyorsaniz HTML belgenizi baska bir editrde yaratmak ve daha sonra projenize eklemek daha yararlidir.

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

Microsoft Visual Basic 6.0

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.

DHTML Sayfalarina geler ve ActiveX Denetimleri Eklemek


Ara kutusu geleriyle alismaya Baslamak DHTML Page Designer,Web sayfanizin kullanici ara birimini gelistirmek iin kullanabileceginiz, DHTML denetimleri ya da geleriyle bir ara kutusu ierir. Bu ara kutusu geleri Microsoft Visual Basic denetimleriyle ok benzerlik gstermesine ragmen ayni degildir.

646

Microsoft Visual Basic 6.0


DHTML ara kutusu geleri HTML programlama standartlariyla uyumlu nesneler yaratir,bylece Microsoft Internet Explorer bu standartlari kullanan Web sayfalarini grntleyebilir. DHTML ara kutusu geleri Visual Basic denetimlerinden farkli zellikler ve yntemler saglar ve ayrica farkli olaylara tepki verirler. Son olarak,DHTML denetimleri boyut ve hizin anahtar etkenler oldugu Webte alistirilmak iin ayarlanmistir. Asagida DHTML ara kutusundaki geler grnr:

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

Microsoft Visual Basic 6.0


Button gesi DHTML sayfasinda bir komut dgmesi yaratir. Value zelligi dgmede yer alan metni saklar ve OnClick olay yordami kullanici dgmeyi her tikladiginda alisir. Dgme gesi normalde formdaki veri girdisinde, yeni degerlerin hesaplanmasinda yada web sayfalarinin kapatilmasinda kullanilir. SubmitButton SubmitButton gesi de DHTML sayfalarinda bir komut dgmesi yaratir. Ama SubmitButton normalde bir web sayfasindaki bilgiyi,bir Internet sunucusu gibi,bir back-end islevine geirmek iin kullanilir. Value zelligi dgmenin zerinde beliren metni saklar ve OnClick olay yordami kullanici geyi her tikladiginda alisir. ResetButton ResetButton gesi de DHTML sayfasinda bir komut dgmesi nesnesi olarak yer alir. Ama, ResetButton gesi geerli sayfadaki tm metin gelerini temizler. Value zelligi dgmenin zerinde beliren metni saklar ve OnClick olay yordami kullanici geyi her tikladiginda alisir. TextField TextField gesi bir DHTML sayfasinda alisma zamaninda metin girdisi alabilen tek satirlik bir metin kutusu yaratir. Bu metin kutusu gesi daha ok Visual Basic TextBox denetimi gibi alisir. Value zelligi metin kutusunda grnen metni saklar. Bu zelligi tasarim zamaninda Properties penceresiyle tanimlayabilir yada zelligi alisma zamaninda kullanicinin ne girdigini grmek iin okuyabilirsiniz. TextField gesi metin kutusunun ierigi seildiginde OnSelect olayinda ve metin kutusundaki metin degistirildiginde OnChange olayini alistirir.

648

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


penceresi kullanilmalidir. Properties penceresinde, nce her dgmenin name zelligi ayni degere ayarlanir ve her dgmenin ID zelligi zgn bir ID gnderisine ayarlanir. Checked zelligi grupta bir dgmenin varsayilan ayar olarak seilmesini saglar ve OnClick olayi kullanici tek bir dgme gesini tikladiginda alisir. Checkbox Checkbox gesi bir DHTML sayfasina bir onay kutusu eklemek iin kullanilir. Visual Basic onay kutusundan farkli olarak, DHTML Checkbox gesi onay kutusunu aiklayan dahili bir etiket iermez. Checked zelligi onay kutusunun geerli durumunu belirler. Onay kutusuna bir onay isareti koymak iin Checked zelligini Trueya yada kaldirmak iin Falsea ayarlayin. OnClick olayi bir onay kutusu gesi tiklandigina alisir. Select Select gesi bir DHTML sayfasina bir ailir liste kutusu yada karma kutu ekler. Visual Basicteki ComboBox denetimine benzer. Size zelligi karma kutuda bir seferde grlebilen gelerin sayisini belirler ve selected zelligi bir genin varsayilan olarak seilmesini saglar. alisma zamaninda select gesi degistirildiginde OnChange olayi alistirilir. Image Image gesi bir DHTML sayfasina standart bir grafik grnt eklemek iin kullanilir. Tasarim yada alisma zamaninda bir grnt eklemek iin, yklemek istediginiz yol adini Scr zelligi ile ayarlayin. Ayrica title zelligini kullanici sayfadaki Image gesini tikladiginda ailir metin eklemek iin kullanabilirsiniz. Hyperlink Hyperlink gesi uygulamanizdan baska bir HTML sayfasina kpr kurmak istediginizde kullanilir. Kpry kurmak istediginiz HTML belgesi yada URLin adini belirlemek iin properties penceresinden href zelligini ayarlayin. Sayfanizdaki biimlendirilmis kprde yer alan metnin hyperlink gesi ile denetlenmedigine, bunun yerine sayfadaki birlesik metin gesi ile denetlendigine dikkat edin.
650

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


degistirildiginde , OnChange olayi alistirilir ve Value zelligi seilen geleri ierir. geleri Yaratmak ve zellestirmek Bir Web sayfasinda fiziksel olarak DHTML ara kutusu geleri yaratmak bir Visual Basic formunda ara kutusuyla nesneler yaratmakla hemen hemen aynidir. Bir DHTML aar kutusu gesini sekilde ekleyebiliriz. Ara kutusundaki ge simgesini tiklayip,Page Designerin sag blmesine srkleyerek. Ara kutusundaki ge simgesini tiklayip,sag blmede Visual Basic formunda yaptiginiz gibi izerek. Ara kutusu gesini ift tiklayarak.

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

Microsoft Visual Basic 6.0


Bir DHTML uygulamasinin yeni bir srmyle alismak istiyorsaniz,ncelikle proje (.vbp),tasarimci (.dsr) ve modl (.mod) dosyalarini yeniden adlandirmalisiniz. 1. Visual Basici baslatin ve Websansim projesini ain. C:\AaVb6\Ders22 klasrndeki

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

Microsoft Visual Basic 6.0


Metin gesi geici olarak sayfadan silinir. NOT: Bir geyi DHTML sayfasindan silerken dikkatli olunmalidir. Page Designerin kararinizi degistirmek iin bir undo zelligi yoktur. Sayfaya Bir Image gesi Ekleme BenimDHTML7 programinda yapacaginiz ilk gelistirme yarattiginiz sayfaya kumar makinasi oyunu iin bir Image gesi eklemek olacaktir. Image gesi program alistiginda bir bozuk para yiginini grntler. 1. Ara kutusundaki Image gesini ift tiklayin. Page Designer HTML formunun merkezine bir Image gesi ekler. Ara kutusundaki geyi tiklayarak ve sayfaya fare ile srkleyerek de bir Image gesi yaratabilirsiniz ama ara kutusu gesini ift tiklayip yeniden boyutlandirmak genellikle en kolay yoldur. 2. Image gesi Sansim7 oyunu basligi ve sifirin arasina gelinceye kadar asagi ve yukari ok tuslarina basin. NOT: Image gesini fareylede yeniden boyutlandirabilirsiniz ama byk olasilikla Width ve Height zelliklerini ayarlamak daha kolay gelecektir. Varsayilan durumunda,Image gesi sayfada bir grnty tam boyutunda gsterir. Ama Imege gesinin Width ve Height zelliklerini Properties penceresinde ayarlayarak,bir grafigi belirli bir boyutta grntlemesini saglayabilirsiniz. 3. Degisikliklerinizi kaydetmek iin Visual ubugundaki,Save Project dgmesini tiklayin. Basic ara

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

Microsoft Visual Basic 6.0


Page designer sayfaniza bir Button gesi ekler aga blmede yeni bir girdi olusturur. 2. Dgmeyi Kazanma etiketinin karsisina, sayfanin sag tarafina tasimak iin sag ve asagi ok tuslarini kullanin. 3. Properties penceresini tekrar grntleyin, value zelligini bulun ve value zellik kutusundaki metni silin. 4. Value kutusunda evir yazin ve entera basin. Button gesindeki metin evire degisir. Bylelikle Button gesi simdi program kodu iin hazirdir. DHTML Sayfasina ActiveX Denetimleri Eklemek Bir DHTML uygulamasinda asil Visual Basic ara kutusu denetimlerini kullanamamaniza ragmen, bir DHTML sayfasina ActiveX denetimleri ekleyebilirsiniz. Page Designer uygulamanizin HTML kodunda etrafina <OBJECT> imlerini yerlestirerek bu denetimleri ynetir. ogu durumda, zgn ActiveX denetimi tarafindan desteklenen geleneksel zellikler, yntemler ve olaylari birka ilgin sinirlama ile kullanabilirsiniz. ActiveX denetimleri tarafindan saglanana standart zellikler, yntemler ve olaylar yiginina ek olarak, denetimlerimiz iin HTML zelliklerinden birkaina daha erisebilirsiniz: ClassID, CodeBase, CodeType, ID vb. bu fazladan zellikler, ActiveX denetimleri tarafindan saglanan temel islevselligi kullanirken, HTML sayfa gelerinin gelismis davranislarindan da yaralanmanizi saglar. DHTML uygulamalarina ActiveX denetimleri ekleme yetenegi Visual Basic Programcilarina byk yarar saglar. Ara Kutusuna Bir ActiveX Denetimi Ekleme DHTML sayfanizda bir ActiveX denetimini kullanmadan nce, denetimi Visual Basic ara kutusuna eklemlisiniz. ActiveX denetimleri ara kutusunda, General dgmesini tiklayarak erisebileceginiz General blmesine saklanir. 1. Project mensnde Components komutunu tiklayin. Listede asagi kayin ve Microsoft Multimedia Control 6.0 girdisinin yanindaki onay kutusunu tiklayin.
655

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Result.inerText=Kazanma:& GetProperty(Kazanma) 4. Visual Basic tarafindan belirlenen yazim ya da sz dizimi hatalarini onarin. 5. Eklemelerinizi kaydetmek iin Visual Basic ara ubugundaki Save Project dgmesini tiklayin. DHTMLPage_Load Kodunu Inceleme DHTML sayfasi gzaticiya yklendiginde alisan olay yordami bazi nemli grevleri gereklestirir. Ilk olarak kod LuckyHead gesini sayfada grsel olarak ayarlamak iin alti izili stiliyle biimlendirir. Benzer bir biimde sayfadaki sayilarin rengini de NumID,Style ve Color zelligi kullanilarak maviye ayarlanmistir. DHTMLPage_Load olay yordamindaki Randomize bildirisi rastgele sayi reticisini sistem saatinden rastgele bir sayiyla baslatir. Sonraki bildiri paralar.wmf meta dosyasini formdaki Image gesine genin Src zelligini sabit diskteki grafige ayarlayarak ykler. Bu olay yordamindaki nc grup program bildirileri Multimedia MCI denetimini kullanim iin yapilandirir ve aar. Burada nemli olan DeviceType zelliginin WaveAudioa ve FileName zelliginin Alkis.Wava ayarlanarak bu belirli ses dosyasina erisebilmesidir. Alkis sesi kullanici oyunu kazanana kadar alinmamasi sonraki kisimda yazacaginiz Button1_OnClick olay yordamiyla belirlenir. Son program bildirisi kmesi DHTML uygulamasini property Baginde kullanicinin oyun sirasinda daha nce kazanip kazanmadigini belirlemek iin Kazanma adinda genel bir degere basvurur. Bir property bag geerli DHTML sayfasinin disinda yer alan geici bir saklama kabidir. Bu degeri sonra geri almak iin,GetProperty islevine basvurulur ve istediginiz degerin adini belirlersiniz. GetProperty islevinin sayfa ilk defa yklendiginde bir deger retmedigine dikkat edin ama oyun ilerledike,bu islev kullanici Sansin 7 Hakkinda ya da diger Web sayfalarina getiginde sayiyi saklar. Button1_OnClick Olay Yordamini Yaratma
658

Microsoft Visual Basic 6.0


1. Code penceresinde Object ailir liste kutusunu ain ve Button1 nesnesini tiklayin. Button1_OnClick olay yordami Code penceresinde grnr. 2. Asagidaki program kodunu yazin: Kazananlar iin yerel degisken xi tanimla (evirmeler arasinda Property Bage kopyalanir.) Dim x rastgele sayi al Num1.innerText=Int (Rnd*10) Num2.innerText=Int (Rnd*10) Num3.innerText=Int (Rnd*10) Herhangi bir sayi 7 ise yigini gster ve biple If Num1.innerText=7 Or Num2.innerText=7 Or _ Num3.innerText=7 Then Bir kazanan varsa, .wav dosyasini al (alkis.wav) MMControl1.Command= Prev gerekliyse geri al MMControl1.Command= Play bir .wav dosyasi al ve Property Bagdeki kazanma sayisini arttir. X=GetProperty (Kazanma) Result.innerText=kazanma: ve x+1 PutProperty Kazanma,x+1 Endif 3. Visual Basic tarafindan belirlenen sz dizimi hatalarini dzeltir. 4. Olay yordamin kaydetmek iin ara ubugundaki Project dgmesini tiklayin. Button1_OnClick Kodunu Incelemek Button1_OnClick olay yordami kullanici DHTML sayfasindaki evir dgmesini tikladiginda alisir. ncelikle olay yordami Property Bagde saklanan kazanma sayisini saklamak iin bir x yerel degiskeni tanimlanir.
659

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


dgmesini tiklayin. Ve Visual Basic ara ubugundaki End dgmesini tiklayin.
ZET Visual Basic 6.0 ile yeni bir tr uygulama tr gelistirilmistir. Bu uygulama: DHTML Applicationdir. Bir DHTML Application, DHTML Designeri kullanarak HTML elemanlarinin zellikleriyle bir Web sayfasi yaratmayi saglar. DHTML Page Designer ise Visual Basic kodunu bir ActiveX DLL olarak paketleyerek tarayicinizda alismasini saglar. DHTML uygulamalar ok sayida stnlge sahiptir: Azaltilmis server yk: DHTML uygulamalarin server yk daha azdir. nk bu uygulamalari client tarafinda alistirilir. Daha hizli yanit: Bir sayfanin gncellesmesi gerektiginde tarayicinin (browser server ile iliski kurmasi gerekir. Gelismis durum (state) ynetimi: HTML sayfalarinin durumu takip edilmez. Diger bir degisle tarayici sayfayi degistirdiginde ya da kapattiginda btn degiskenler kaybolur. Offline yetenegi: Bir DHTML uygulamasi araciligiyla kullanicilar yerel bir Intraneti kullanabilirler. Kod Gvenligi: Bir HTML sayfasinin kodlari kolayca grlebilir ve kopyalanabilir. Oysa DHTML uygulamalarini derlenerek program haline getirildigi iin ierigi grlemez.

rnek:

661

Microsoft Visual Basic 6.0

662

Microsoft Visual Basic 6.0

663

Microsoft Visual Basic 6.0

664

Microsoft Visual Basic 6.0 15-VISUAL BASIC ERRORLER

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.

Sekil-1 Hata Denetimi

665

Microsoft Visual Basic 6.0


Visual Basic'te karsilasilacak hata trleri sunlardir:
Derleme hatalari (compile errors) alisma zamani hatalari {run-time errors) Mantik hatalari (logical errors)

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.

Sekil-2 Hata Giderme Aralari

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

Microsoft Visual Basic 6.0


kullanilmasi asamasinda beklenmedik bir olaydan dolayi olusurlar. Bunun disinda alisma zamani hatalari bazi beklenmedik (tipik) durumlarda olusur: Sifira blnme (Divide by zero) Tasma (Overflow) Uygun olmayan bir veri atama (Type Mismatch) Bellek yetersizligi (Out of memory) Disk dolu (Disk Full) alisma zamani hatalarini nleme k iin programda hatalara karsi nlem alinir. Bu nedenle bu tr hatalara tuzaklanabilir (trappable errors) denir.

Sekil-3 Bir alisma zamani hatasi

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.

Daha Az Hatayla Karsilasmak


Yazilan programda daha az hata olusmasi iin; program tasariminin en iyi sekilde yapilmasi gerekir. Bu konuda genis bilgi iin birinci blme bakiniz. Bunun disinda program hatalarinin azalmasi iin asagidaki konulara dikkat edilmesi gerekir:
Degiskenlerin ve tiplerinin daha nceden tasarlanmis olmasi Sub ve Functionlarin her birinin iyi tanimli isler iin gelistirilmesi

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

Microsoft Visual Basic 6.0


Programi ok iyi sekilde test etmek.

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.

Editr Sekmesi seenekleri


Kod dzenlemeleri
Auto Syntax Check : Yazilan kodlarin otomatik olarak yazim denetiminin yapilmasini saglar. Reguire Variable Declaration : Kod iinde kullanilan btn degiske nlerin tanimlanmasini zorunlu kilar. Auto List Members : Nesnelerin zelliklerinin otomatik olarak listelenmesini saglar. Auto Quick Info : Bir deyimin yazilmasi durumunda parametrelerinin ekrana gelmesini saglar. Auto Data Tips : Program kesildikten sonra (debug modda) fare ile zerine gidilen degiskenin degerini gsterir. Auto Indent : Ierden baslamayi saglar.

668

Microsoft Visual Basic 6.0 Pencere Dzenlemeleri


Drag-and- Drop Text Editing : Kod satirlan zerinde fare ile seip srkleme isleminin yapilmasini saglar. Default to Full Modle View : Bir procedure ya da btn procedure'lann grlmesini saglar. Procedure Seperator: Procedure'lar arasi ayra.

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

Microsoft Visual Basic 6.0

Sekil-4 Otomatik Szdizimi Kontrol

Sekil-5 Nesnelerin zelliklerinin Listelenmesi

670

Microsoft Visual Basic 6.0

Sekil-6 Deyimlerin Ipuculari

Sekil-7 Kesilme Durumunda Degiskenlerin Degeri

671

Microsoft Visual Basic 6.0

alisma Zamani Hatalari


alisma zamani hatalari (run-time errors) programin alismasi sirasinda olusan hatalardir. Program hazirlanmis ve kullaniciya sunulmustur. Ya da test asamasindadir; alisma sirasinda yapilan islemlerle birlikte bir takim (beklenmeyen) hatalar olusur. rnegin bir tamsayi tanimli degiskene bir milyon degerinin atanmasi ya da sabit diskin dolmasi gibi. Bu Hatalar: Bir deger sifira blnebilir. Belirtilen bir dosya ya da yol bulunamaz. Degiskenin tipi uymaz. Degiskenin tanimi veriyi alamaz, tasar. Belirtilen bir aygit (src, yazici, vb.) bulunamaz. Bellek yetersiz kalabilir. Diger bir uygulama ile yapilan iletisimde sorun olur.

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

Microsoft Visual Basic 6.0


13 Type mismatch (tip uyumsuzlugu) 14 Out of string space (string alani yetersiz) 16 Expression too complex (ifade ok karisik) 17 Can't perform reguested operation (islem isletilemiyor) 18 User interrupt occurred (kullanici kesmesi olustu) 20 Resume without error (hatasiz devam) 28 Out of stack space (yetersiz stack alani) 35 Sub, Function, r Property not defined (... tanimlanmamis) 47 Too many DLL application clients (ok sayida DLL uygulama) 48 Error in loading DLL (DLL yklemede hata) 49 Bad DLL calling convention (DLL hatasi) 51 Internal error (i hata) 52 Bad file name r number (yanlis dosya) 53 File not found (dosya bulunamadi) 54 Bad file mode (kt dosya biimi) 55 File already open (dosya zaten aik) 57 Device I/O error (giris/ikis aygit halasi) TI. 58 File already exists (dosya zaten var) 59 Bad record lenght (kr kayit uzunlugu) 61 Disk fiili (disk dolu) 62 Input past end of file (dosya sonunu geme) 63 Bad record number (kt kayit numarasi) 67 Too many files (ok fazla dosya) 63 Device unavailable (aygit kullanilamaz durumda) 70 Permission denied (izin yok) 71 Disk not ready (disk hazir degil) 74 Can't rename with different drive (baska bir src adiyla degistirilemez) 75 Path/File access error (dosya adi hatasi) 76 Path not found (yol bulunamadi) 91 Object variable r With block variable not set (nesne degiskeni dzenlenmemis) 92 For loop not initialized (dng baslatilmamis) 93 Invalid pattern string (yanlis string dzeni) 94 Invalid use of Null (Null yanlis kullanilmis) Hata mesajlari iin Help'ten Index blmnden "Trappable Errors" a bakiniz. Bu hatalar On Error deyimi ile karsilanarak kontrol altina alinir. Bakiniz: "On Error deyimi".

673

Microsoft Visual Basic 6.0

Hata Dzeltme Aralari


Bir Visual Basic programi gelistirirken ya da programin alismasi sirasinda bir hata ile kesilmesinden sonra hatanin bulunmasi ve giderilmesi iin belli aralar kullanilir. Bunlarin basinda Debug (Hata Giderme) ara ubugu gelir.

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

Microsoft Visual Basic 6.0

Locals Window, Immediate Window ve Watch Window


Program kesildikten sonra; Procedure iinde bir degiskenin ya da bir ifadenin seilerek degerinin ne olduguna bakilmak istenirse o zaman anlik Izleme penceresi (instant watch) kullanilir. Locals Window Program kesildiginde bulunulan procedure iinde tanimlanan btn degiskenlerin degerini verir. Expression stununda degiskenlerin adlan listelenir. Btn class modllerinde buradaki ilk deger <Me> degeridir. Bu degerin zerine tiklanarak genisletilir. Value stununda ise degiskenin degeri grnr. Bu degerin zerinde ift tiklanarak degisiklik yapilabilir.

Sekil-8 Locals Penceresi

675

Microsoft Visual Basic 6.0


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. Anlik izleme penceresinde degiskenlerin ya da ifadelerin degerlerini gstermek iin (Print) deyimi ya da ? kullanilir. Ayrica istenirse kod satirindan Immediate Window ekranina srkleme yapilir.

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

Microsoft Visual Basic 6.0

Sekil-10 Watch penceresi

Programi Kaldigi Yerden Isletme


Step Into dgmesi ile program kesildikten sonra; program deyimlerini (satirlarini) adim adim alis tirmayi saglar. Step Into programi kaldigi yerden devam ettirir. Step Over dgmesi procedure'i bir birim olarak isletir. Step Over dgmesine tiklandiginda bulunulan procedure iindeki bir sonraki deyim isletilir. Bu islemler iin F8 ve SHIFT+F8 tuslari kullanilir. Step Out dgmesi ise procedure'in kalan deyimlerinin tamami isletilir (CTRL+SHIFT+F8).

Sekil-11 Kaldigi yerden devem etme

677

Microsoft Visual Basic 6.0

Kesme Noktasi (Toggle Breakpoint)


Visual Basic kesme noktasindan nce programin isletimini durdurur. Kod iinde kesme noktasi ile isaretlenen satir isletilmeden nce program durur. Kesme noktasi genellikle programi belli bir yerde durdurup o asamada bazi degiskenlerin degerlerinin kontrol edilmesini saglar. Toggle BreakPoint isaretinin kaldirilmasi iin ayni dgmeye bir kez daha basilir.

Sekil-12 Kesme noktasi

Kodun Yenibastan alistirilmasi


Degisken tanimlamalarinda yapilan degisikliklerin ardindan ya da yapilan |ista dzeltmelerinin ai dindan kodun yeni bastan alistirilmasi gerekebilir. Bu durumda Stop dgmesi kullanilir.

agirmalar Diyalog Kutusu


Program kesildiginde procedure iinde o anda agirilmis diger procedure'lari listeler. zellikle i e agirilmis procedure'lann kontrolnde kullanilir.

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

Microsoft Visual Basic 6.0


Yapisi: On Error GoTo satir On Error Resume Next On Error GoTo O GoTo 0 : Procedure'daki hata kontroln iptal eder. GoTo satir/ etiket : Hata kontrol satirinin belirtilen satirdan ya da etiketten baslatilmasini saglar. Resume Next : Hatanin ardindan programin bir sonraki deyimi isleyerek programi alistirmayi srdrmesini saglar. Eger programci, programinda bir On Error deyimi kullanmaz ve olasi hatalari kontrol altina ,almazsa; hata olustugunda program alisma zamani iinde hatayi verir ve kesilir. Byle bir durumla karsilasmak hibir programda onaylanmayacagi iin, programin olasi durumlara gre hata kontrol mekanizmalarina sahip olmasi gerekir. Program iinde bir hata denetimi yapilirsa; hata olustugu anda program kontrol, hata kontrol kismina atlar. Hata denetimi; Resume, Exit Sub ya da Exit komutuna kadar aktif kalir. Hata denetiminin ardindan hatanin tanimlanmasi iin Err nesnesinin Number zelligi kullanilir. Asagidaki rnekte bir dosyanin tanimlanmasinin ardindan; dosya aikken dosya silinmeye (yok edilmeye) kalkisilmaktadir. Bu durumda hata olusur: private Sub Command3_Click () On Error GoTo HataKontrol ' hata denetimi iin bu blme git. Open "TESTFILE" For Output As #1 ' dosya tanimi. Kili "TESTFILE" ' dosyayi silme islemi. Exit Sub ' ik. Hata Kontrol: Select Case Err.Number hata numaralarini kontrol. Case 55: MsgBox "Dosya zaten aik' dosya aik hatasi Close #1 ' dosyayi kapat. Case Else End Select Resume End Sub Asagidaki rnekte edilmektedir: OnError ile 11 (Division by'Zero) hatasi kontrol

Sub Button32_Click () On Error GoTo HataKontrol A = 2 B = 0 679

Microsoft Visual Basic 6.0


Sonu = A / B Exit Sub 'burada programa son verilir. Hata kontrol: Select Case Err. Number Case 11: Mesaj = "Sifira blnme hatasi olustu!!!" End Select MsgBox Mesaj Resume Next End Sub rnek: Ekrandan degerin yanlis girilmesi hatasina karsi nlemler Private Sub Command1_click() On Error GoTo HataKontrol Dim Tketim As Double Dim Para As Double Dim Mesaj As String deger alma Tketim= InputBox (tketim degerini girin) Select Case Tketim Case 0 To 30# Para = Tketim * 200000 Case 31# To 101# Para = (30# * 20000) +(70# * 40000) + ((tketim100#)*100000#) End Select Msgbox str(para) Exit sub Hata kontrol: Select case err.number Case 6: mesaj =tasma hatasi oldu!! Case13: mesaj= yanlis tipli bir deger girdiniz!! End Select Msgbox mesaj Resume next End sub

Hata Denetimi Iin Yntemler


Hata denetimi iin gerekli olan hata degerlendirme deyimlerinin her bir procedure'da ayn ayn yapilmasi yerine btn hatalarin yer aldigi bir genel amali procedure yazilir ve proje iincde ailan standart bir Modl iin konur. Projeye eklenen bir modl iinde: Sub Hatalar O 'olasi hatalarin listelenmesi Select Case Err.Number Case 6 : Mesaj= Tasma hatasi oldu!! 680

Microsoft Visual Basic 6.0


Case 7 : Case 9 : Case 11: Case 13: Case 52: Case 53: Case 55: Case 57: Case 58: Case 61. Case 67: Case 71: End Select MsgBox Mesaj Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Mesaj= Bellek yetersiz Dizi disi eleman Sifira blnme hatasi olustu!!! Yanlis tipli bir deger girdiniz!! Yanlis dosya Dosya bulunamadi Dosya zaten aik Giris/ikis aygiti hatasi Dosya zaten var Disk dolu ok fazla dosya Disk hazir degil

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

Microsoft Visual Basic 6.0


Deyim Aiklama

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

Microsoft Visual Basic 6.0


MsgBox End If End Sub Mesaj

End ve Stop Deyimi


End deyimi uygulamayi (hemen) sona erdirir. End deyiminin ardindan baska bir kod isletilmez ve baska bir olay olusmaz. Bununla birlikte Stop deyimi ise uygulamayi durdurur. Stop deyimi hata giderme asamasinda kullanilir. nk kullanilan nesneleri serbest birakmaz. Sub Buttonl_Click () son End End Sub Sub Button2_Click () stop End Sub

Ek- Hata Mesajlari,Sebepleri ve zmleri


Program yazarken sik sik karsilasilan hata mesajlarinin bir kismini asagiya almayi uygun grdk. Hata mesajiyla birlikle hatanin ikis sebebi ve zm yollarini arastirdik. Buradaki hata kodlarini kullanarak programinizin hata ayiklama kodlarinda hatanin sebebini de giderebilirsiniz. On Error Goto Hata Hata: If err=x then gibi bir kodda x yerine asagidaki hata numaralarini kullanarak hatanin olusma sebebini program ieriginde grenip uygun kodlari yazabilirsiniz.

alisma zamani hata mesajlari


Program hatasiz olarak yazilip alistirilmasina ragmen/ program alisirken kullanilan ifadelerden veya bilgisayarin o anki durumundan dolayi hatalar olusabilir. Asagida bunlarin sik olusanlari verilmistir. Iyi yazilmis bir program bir islemi yapmadan nce gerekli hata yakalayicilari kurarak olusan hatayi degerlendirmeli ve kullaniciya alternatifler sunmalidir. Buradaki hata kodlarini kullanarak programinizin hata ayiklama kodlarinda hatanin sebebini grenip giderebilirsiniz. 683

Microsoft Visual Basic 6.0

On Error Goto Hata Hata: I f err=x then

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

Microsoft Visual Basic 6.0


Dim DinamikDizi () As Integer DinamikDizi (1( =100 9 nolu hata meydana gelir.. Bu durumda dizi boyutunu Redim kullarak belirlemeniz gerekir. Dim DinamikDizi() As Redim DinamikDizi(10) DinamikDizi (1) =100 Integer ' 9 nolu hata meydana gelir..

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

Microsoft Visual Basic 6.0


agiran fonksiyonlarda bu hata meydana birbirlerini srekli agirmadiklarindan emin olun. gelebilir. Iki prosedrn

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

Microsoft Visual Basic 6.0


ifadesini kontrol edin. Bad file name or number (Error 52) Erisilmek istenen dosya adi yada dosya numarasinina ait dosya ya kapalidir yada Open deyimi iie belirtilen dosya degildir. Verdiginiz Ismi veya numarayi kontrol edin. Verdiginiz dosya numarasi 0 -511 arasinda degilse de bu hata olusur. Dosya numarasi bu sinirin disinda olamaz. Verdiginiz dosya ismi geersiz olabilir. Dosya isimleri 255 karekteri geemez, *,: gibi zel karakterler ieremez, CON,LPT1,PRN gibi zel isimler olamaz. File not found(Error 53) Kill,Name, veya Open deyimleriyle erisilmek istenen dosya bulunamamaktadir. Bu durumda dosya adinin ve dosyanin bulundugu yolun dogrulugunu kontrol etmelisiniz. Bad file mode (Error 54) Dosyaya yaptiginiz islem o dosyaya uymuyorsa bu hata olusur. Input, Output, Append modunda atiginiz dosyalarda Get,Put komutlarini, Random olarak atiginiz dosyalarda ise Print, Input, Line Input komutlarini kullandiginizda bu hata meydana gelir. Read Only modda atiginiz dosyaya yazmaya alistiginizda bu hata meydana gelir. File already open (Error 55) Dosya aik oldugu halde tekrar dosya ama girisiminde bulunulmustur. 687

Microsoft Visual Basic 6.0


Yada dosya Input modunda aik oldugu halde Output modunda tekrar ailmaya alisiliyordur. Kill, SetAttr, veya Name deyimleri aik bir dosya iin kullanildiginda da bu hata mesaji meydana gelir. Bunun iin de bu deyimler kullanilmadan nce aik olan dosya kapatilmalidir. Device I/O error (Error 57) Diskete veya yaziciya yazdirirken bir hata olusmustur. rnegin kopyalama bitmeden disket ikarilmistir. File already exists (Error 58) Bu hata genellikle Name komut ile degistirilirken, yeni isimle ayni isimde bir dosya oldugunda olusur. Bad record length (Error 59) Get ve Put deyimleriyle kullanilan kayit degiskeninin uzunlugu Open deyimiyle belirlenenden daha uzun oldugunda bu hata olusur. Open deyiminin sonunda Len=x satiri ile kayit boyunu artirin. Disk fail (Error 61) bir dosyanin adi verilen

olusur.

Diskete yazan komutlarda disket veya harddisk dolarsa bu hata

Input past end of file (Error 62)

688

Microsoft Visual Basic 6.0


Dosyadan okurken dosya sonu geilirse bu hata olusur. EOF(#no) degimi ile dosya sonunu kontrol etmelisiniz. Bad record number (Error 63)

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

Microsoft Visual Basic 6.0


Path/File access error (Error 75) Read Only bir dosyaya yazmaya alistiginizda bu hata olusur. Dosyanin Read Only zelligini kaldirin. Path not found (Error 76) Verdiginiz Verdiginiz kontrol edin. yol yanlis oldugunda bu hata meydana gelir. yolu

Object variable o r With block variable not set (Error 91)

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Ayni araliktaki prosedr adlari farkli olmak zorundadir. Bu durumda ayni olan prosedr isimlerini degistirmelisiniz.

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

Microsoft Visual Basic 6.0


Sub veya property'de Exit Function deyimi kullanilmaz. Bunun iin Exit Sub yada Exit Property ifadelerini kullanmalisiniz. Exit Property not allowed in Function or Sub Sub veya fonksiyonda exit Property deyimi kullanilmaz. Bunun iin Exit Sub yada Exit Function ifadelerini kullanmalisiniz. Expected End Function Bir fonksiyonu sonlandirmak iin End Function kullanilmalidir. Fonksiyonun sonunda End Function kullanmamissiniz.

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

Microsoft Visual Basic 6.0


On error goto hata hata: 'etiket bu sekilde tanimlanmalidir

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.

Program kodu hata mesajlari

yazarken

karsilasilan
unuttugu 694

Kullanici degisken tanimlarken tanimlamalardan birisini zaman asagidaki mesaj penceresi ile uyarilir:

Microsoft Visual Basic 6.0


Dim ifadesi yazilip enter tusuna basildigi zaman yand aki mesaj penceresi ile kullanici uyarilir. Mesajin anlami: Derleme hatasi, Tanimlayici bekleniyordu a Dim x,y, Biiminde kullanildigi zaman bu defa kullanici asagidaki gibi bir mesaj penceresi ile uyarilir: Degisken bekleniyordu

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

if x=1 then ifadesi ifx=1 then gibi, 100 gibi

yazildiginda asagidaki mesaj penceresi ile kullanici uyarilacaktir:

Mesajin

anlami:

Derleme

hatasi, deyimin devami:bekleniyordu.

if x=1 ifadesi yazilip bir sonraki satira geilmek istenirse yani then unutulurca asagidaki mesaj penceresi ile kullanici uyarilacaktir:

695

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


karsilasilan hatalara karsi gelistirilmis bir (debugging) olanagina sahiptir. Hata trleri: Derleme hatalari (compile errors) alisma zamani hatalari (run-time errors) Mantik hatalan (logical errors) Derleme (compile) hatalari, programi yazarken yapilan deyimsel ya da szdizimi hatalaridir. alis ma zamani hatalan (run-time error) ise program alistigi sirada ortaya ikar. rnegin olmayan bir dosyayi amaya kalkmak ya da sabit diskte yer katmamasi ya da sifira blnme (divide by zero) gibi. alisma zamani (run-time) hatalarina karsi herhangi bir nlem alinmazsa program hata verir ve ke silir. Diger bir aidan; bu durum kullanicilar karsisinda dslebilecek en kt durumlardan birisidir. Bu nedenle alisma zamani hatalarina karsi belli nlemler daha nceden alinmalidir Bu hatalarin tanimlanip nlemlerini daha nceden alinmasi islemi hatalarin tuzaklanmasini ortaya ikarir. Hata tuzaklama On Error deyimi Ile yapilir. On Error deyim ile tuzaklanan hata degerlendirilerek hata kontrol altina alinir. Hata giderme konusunda bir diger durum ise programin kesilmesi (break) modudur. Programin ke silmesinin ardindan Debug (Hata Giderme) ara ubugu kullanilarak programin hatalari saptanir. Hata giderme aralarinin basinda degiskenleri ve programdaki belli yerleri izleyebilecegimiz pencereler gelir. Locals Wndow. Program kesildiginde bulundan tanimlanan btn degiskenle rin degerini verir. procedure iinde hata bulma ve dzeltme

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

Microsoft Visual Basic 6.0 16-API Nedir ?


Windows API lerinin VB 'de kullanimina girmeden nce API nedir onu a iklamaya alisalim. Isletim sistemlerine duyulan ihtiyalardan biri standart olarak her program tarafindan yapilmasi gereken seyleri ortak bir ati altinda toplamak ve programlan sistemde belirli kurallar altinda alis masini saglamakt ir. Isletim sistemlerinin degerini anlamak iin isletim sistemi olmayan bir bilgisayar dsnn. Yapt iginiz programlari diske kaydetme ihtiyaciniz var. Isletim sisteminiz yoksa programlarimizi diske yazacak ve okuyacak assembly kodlari sizin yazmaniz gerekecektir. Ve her program diske yazma ve okuma kodlarini iinde bulundurmak zorunda olacakt ir. Ayrica diske yazacaginiz programi diskin neresine yazacaksiniz. Tabiki herkes kendi programinin basa yazilmasini isteyecektir. Bu da diski paylasim sorununu ikaracakt ir. Ayrica yazici iin de problem vardir. Her yazici ayni sistemle alis mayacagi iin programinizda yazdirma islemleri de varsa belli basli yazici tipleri iin gerekli kodlari yazmaniz gerekecektir. Bu rnekler ogaltilabilir. Iste PCler ilk iktiginda disk s lemlerini kolaylastirmak iin DOS ta i piyasaya ikti. DOS disk islemlerini yapmak iin yazilim interruptlarini programc ilarin hizmetine sunmustu. Diskle ilgili bir i leminiz i in INT X 'in Y s numarali servisini agiriyordunuz ve bu islemleri sizin yerinize DOS yapiyordu. Sistemler gelistike bilgisayar degisik alanlara da hitap etmeye baslayinca ok degisik arabirimler de ikt i, DOS'a grafik, yazici islemleri gibi standart islemler de eklendi ve sistemde bulunan standart donanimlarin hemen hemen hepsine DOS veya BIOS interruptlariyla erisebiliyordunuz. Ayrica DOS programlarin bellegi nasil kullanacagini da belirtiyordu. DOS isletim sistemi olarak kullaniciya herhangi bir standart arabirim sunmamistir. Sadece programlarin sistemdeki standart donanimlara ulasabilecekleri kodlari kullaniciya sunmustur. DOS'ta yapilan programlarin hibiri bir birine benzemez. Her program kendi kullanici ara yzn belirlemek zorundadir ve bunun iin gerekli kodu kendisi yazmak zorundadir. DOS'ta yapilan programlarin kullanim ve programlanmasinin zorlugu da bir lde buradan kaynaklanir. DOS'un programlara standart bir arabirim sunmamasi, bellek sinirlarinin olmasi gibi sebeplerden dolayi ok ok ge kalmis olsa da Windows ikti. Windows DOS'un sagladigi standart donanima ulasma haricinde Ses kartlari, Gelismis yazicilar, Scanner 'lar gibi donanimlarin kullanimini da programlarin kullanimina sunar. Ayrica programlara standart arabirimleri (Diyalog kutulari, Formlar, Kontroller gibi) kullanma imkani da sunmustur. DOS kendi servislerini yazilim interruptlariyla sunarken Windows API'lerle sunar. 698

Microsoft Visual Basic 6.0


Simdi syle bir sey dsnlebilir. DOS'ta ok program yaptim ama diske bir sey yazdirmak iin DOS'un interruptlarini kullanmaya hi ihtiya duymadim. Evet eger assembly program yazmadiysaniz bunlara da ihtiyaciniz yoktur. nk kullandiginiz programlama dili bu isi sizin yerinize yapiyordu. Bu VB 'de yaptiginiz programlarda da byledir. API kullanacaksiniz diye bir sart yok VB bunlari sizin yerinize kullanir. Ancak DOS'taki programlama dillerinde oldugu gibi VB 'de de programlama dilinin sundugu islemler her zaman isinizi g rmeyebilir, bu durumda Windows APIlerini kullanma ihtiyaci duyarsiniz. Basic herhalde b tn zamanlarin en yavas programlar reten dili olma zelligini kimseye kaptirmak istemiyor. Quick Basicte yaptiginiz bir program, ayni isi yapan C ile yapilmis programdan en az 5 kat daha yavas alisacakt ir. Bu fark GW Basic'te daha da byktr. VB 'de de durumun i a ici oldugunu iddia etmek ok g. Programlarinizda API kullanmaniz bu hiz barajlarini asmanizi saglayacakt ir. Ayrica VB'nin sunmadigi bazi islemler iin de API kullanmak gerekir. rnegin sistemdeki bos bellek miktarini verecek herhangi bir komut VB'de bulunmaz bunu da yine API kullanarak grenmek zorundasiniz. Windows'un sundugu bu API 'ler gruplandirilarak bir ok DLL ve EXE dosyasina konmustur. VB'de kullan ilan OCX dosyalarinda da API 'ler bulunabilir. Bu APl'lerden birini kullandiginizda API 'nin bulundugu DLL sisteme daha nce yklenmemisse nce bu DLL yklenir ve API alistirilir. Programinizda API kullanmak iin Declare deyimiyle API 'yi tanimlamaniz gerekir. Bu tanimdan sonra, tani mladiginiz API 'ye bir fonksiyon veya bir altprogram gibi ulasabilirsiniz.

VB'de API Tanimi


VB'de API'ler iki sekilde tanimlanabilir. Fonksiyon veya altprogram olarak. Fonksiyon olarak tanimlanan API'lerden geriye bir deger dnerken, altprogram olarak tanimlananlardan bir deger geri dnmez. Alt program olarak API tanimi: Private/Public Declare Sub isim Lib "libname" [([parametreler])] Fonksiyon program olarak API tanimi: Private/Public Declare Function isim Lib libname [([parametreler])] [As tip] Burada isim fonksiyonun ismidir ve programda API bu isimle agrilir. Libname kullanilan k tphanenin ismi, parametreler; fonksiyona giren parametreler, As tip; fonksiyondan dnen degerin tipidir. 699

Microsoft Visual Basic 6.0


API'nin tanimlanacagi yer formun veya modln GeneralDeclerations kismidir. API'yi bir formun Declaration kisminda tanimlarsaniz, API'yi yalniz o formun altprogramlarindan agirabilirsiniz. Bu durumda API'yi Private Declaration ifadesi ile tanimlamaniz gerekir. API'yi bir modlde tanimlarsaniz programinizin her yerinde kullanabilirsiniz. API'yi dogru olarak tanimladiginiz halde VB, ilgili dosyada byle bir API bulunmadigini sy lyorsa veya API ile ayni isme sahip bir VB komutu var ise bu durumda Alias isimleri kullanmaniz gerekir. Private/Public Declare Function/Sub isim Lib libname Alias "isim" [([parametreler])] [As tip] API'yi dogru olarak tanimladiginiz halde VB, ilgili dosyada byle bir API bulunmadigini sylyorsa API isminin sonuna A ekleyerek Alias ismi olarak vermeniz gerekir. Bunun sebebi Windows isletim sistemi farkli dilleri desteklemektedir. ANSI karakter setini destekleyen lkeler iin sonuna A harfi, UniCode veya iki karakter genisligini kullanan lke seti iin ise sonuna W harfi eklemeniz gerekir. API tanimi yaparken kullanacaginiz tiplerin isimlerini ise C den VB ye evirmeniz gerekir. Genel olarak tip karsiliklari syledir.
C atom bool Byte char C colorref dword hwnd, hdc, hmenu vb. int, uint long Iparam lpdword Ipint, Ipuint Iprect Ipstr, Ipcstr Ipvoid Ipword Iresult null short void word wparam 16 bit 32 bit Visual Basic ByVal degisken As Integer ByVal degisken As Long ByVal degisken As Byte ByVal degisken As Byte Visual Basic ByVal degisken As Long ByVal degisken As Long ByVal degisken As Long ByVal degisken As Long ByVal degisken As Long ByVal degisken As Long degisken As Long degisken As Long degisken As type ByVal degisken As String degisken As Any degisken As Integer ByVal degisken As Long degisken As Any veya ByVal degisken As Long ByVal degisken As Integer Sub procedure ByVal degisken As Integer ByVal degisken As Long ByVal degisken As Integer ByVal degisken As Long

700

Microsoft Visual Basic 6.0


float double ByVal degisken As Single ByVal degisken As Double

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

API Tanim Dosyasi


Yukarida bir API'nin nasil tanilanacagini anlattik. Ancak ogu API'nin VB'de nasil tanimlanacagi WINAPI dizini altindaki WIN32API.TXT dosyasinda verilmistir. Bu dosyayi aarsaniz istediginiz API'nin, ona ait tiplerin ve sabitlerin tanimlarini bulabilirsiniz. Bu dosyadaki tanimlari formdaki bir modle kopyalayarak o API'yi kullanabilirsiniz. Eger modl kullanmadan form iinde tanim yapmak isterseniz bu tanimlarin bas ina Private yazmaniz yeterlidir.

701

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


aktarmak iin penceredeki Copy dgmesine basabilir, VB'ye getikten sonra da Ctrl+V tuslari ile oraya alabilirsiniz.

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

Microsoft Visual Basic 6.0


dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type Private Sub Form_Load() Timerl.Interval = 1000 End Sub Private Sub Timer1_Timer() Cls Dim m As MEMORYSTATUS GlobalMemoryStatus m Print "Bellek kullanimi % : " , m.dwMemoryLoad Print "Toplam RAM:", , m.dwTotalPhys / 1024 / 1024 & " MB" Print "Bos RAM:",., m.dwAvailPhys / 1024 / 1024 & " MB" End Sub

Mikroislemci tipini ve sayisini grenmek


Declare Sub GetSystemlnfo Lib "kernel32" (IpSystemlnfo as SYSTEM_INFO)
Bu API, bilgisayardaki mikro islemcinin zelliklerini asagidaki SYSTEM_INFO yapisinda verir. Type SYSTEM_INFO dwOemID As Long dwPageSize As Long IpMinimumApplicationAddress As Long Any 705

Microsoft Visual Basic 6.0


lpMaximumApplicationAddress As Long 'Any dwActiveProcessorMask As Long dwNumberOfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End Type dwProcessorType: Islemcinin tipini belirten bir sayi geri dner. 386, 486, 586 (Pentium) islemcilerini tanir. Diger islemcileri de (Cx586,686 gibi) 486 olarak tanir. Ayrica Windows- NT iin ALPHA-21064, ALPHA-21164,INTEL386, INTEL-486, INTEL-PENTIUM-586, INTEL-860, MIPS-R2000, MIPSR3000, MIPS-R4000, PowerPC-601, PowerPC-603, PovverPC-604, PowerPC620 islemcilerini tanir. dwNumberOfProcessors: Bilgisayardaki islemci sayisini verir. Windows-95 birden fazla islemciyi desteklemedigi iin her za man l degeri dner, NT altinda ise birden fazla CPU desteklendigi iin islemci sayisi bu parametre ile grenilir.

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

Microsoft Visual Basic 6.0


GetSystemlnfo s Print s.dwProcessorType; " tipi islemci " End Sub " ; s.dwNumberOfProcessors ; "

Windows versiyonunu ve ortamini grenmek


Declare Function GetVersion Lib "kernel32" () As Long Bu fonksiyondan dnen deger long yani 8 bytelik bir sayidir. Bu sayinin dsk kismindaki iki byte Windows versiyonunu (4.0 ise 95, 4.1 ise 98), y ksek seviyeli kisimdaki en yksek bit ise Windows ortamini verir. Bu bit l ise Win32s (95, 98), O ise Windows NT ortamidir. RNEK: GetVersion Option Explicit Private Declare Function GetVersion Lib "kernel32" () As Long Private Sub Form_Load() Show Dim a a = GetVersion() Print "Windows " + Str(a And &HFF) + " . " + Str((a / &H100 And &HFF)) If a And &H7FFFFFFF Then Print "Win 32s" Else Print "Windows NT" End If End Sub

Klavye kod sayfasini grenmek


707

Microsoft Visual Basic 6.0

Declare Function GetKBCodePage Integer

Lib

"User32"

()

As

Bu API'den geri dnen deger Windows'a tanitilmis klavye kod sayfasidir.

RNEK: GetKBCodePage
Option Explicit Private Declare Function GetKBCodePage Lib "User32" () As Integer Private Sub Form__Load () Show Print GetKBCodePage() End Sub

Klavye tipini grenmek


Declare Function GetKeyboardType Lib "User32" (ByVal nTypeFlag As Integer) As Integer nTypeFlag parametresine O verildiginde geri dnen deger klavye tip numarasi-dir. 2 verildiginde geri dnen deger klavyedeki fonksiyon tuslarinin sayisidir. Klavye tip numaralari ve anlamlari syledir: 1. XT tipi 83 tuslu, 2. Olivetti tipi 102 3. tuslu, AT tipi 84 4. tuslu, 101 veya 5. 102 tuslu, Nokia 6. 1050 tipi, Nokia 7. 9140 tipi, Japon tipi 'RNEK: GetKeyboardType Option Explicit Private Declare Function GetKeyboardType Lib "User32" (ByVal nTypeFlag As Integer) As Integer Private Sub Form__Load() Show Dim a, strl a = GetKeyboardType( 0 ) Select Case a Case 1: strl = 'XT tipi 83 tuslu" 708

Microsoft Visual Basic 6.0


Case 2: strl = 'Olivetti tipi 102 tuslu" Case 3: strl = 'AT tipi 84 tuslu" Case 4: strl = '101 veya 102 tuslu" Case 5: strl = 'Nokia 1050 tipi" Case 6: strl = 'Nokia 9140 tipi" Case 7: strl = 'Japon tipi" Case Else: strl = "Bilinmeyen bir tip" End Select Print strl + Str(GetKeyboardType( 2 ) ) + " fonksiyon tusu olan klavye" 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

Microsoft Visual Basic 6.0 Windows dizinini grenmek


Declare Function GetWindowsDirectory Lib "Kernel32" Alias "GetWindowsDirectoryA" (ByVal IpBuffer As String, ByVal nSize As Integer) As Integer Bu API ile WIN.COM dosyasinin bulundugu yolu grenebilirsiniz. LpBuffer: Windows yolu bu degiskende geri dner. String olarak tanimlanmis ve ii herhangi bir karekterle doldurulmus olmasi gerekir. LpBuffer'in boyutudur.

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

System dizinini grenmek


Declare Function GetSystemDirectory Lib "Kernel32" Alias GetSystemDirectoryA"( ByVal IpBuffer As String, ByVal nSize As Integer) As Integer

710

Microsoft Visual Basic 6.0


Yukaridaki API'den tek farki Windows yolunu degil Sistem dizininin yolunu verir. Kullanimi yukaridaki ile aynidir.

Windows Ayarlari Hakkinda Bilgi


GetSystemMetrics apisi Windowsun bir ok ayariyla ilgili bilgiler verir. Private Declare Function GetSystemMetrics Lib "user32" (ByVal nlndex As Long) As Long nlndex parametresine asagidaki sayilardan biri verilerek o sey hakkinda bilgi alinabilir. 0 Ekranin yatay genisligi 1 Ekranin dikey genisligi 2 Dikey kaydirma ubugundaki okun boyutu 3 Yatay kaydirma ubugundaki okun boyutu 4 Pencere basliginin yksekligi 5 Boyutlandirilamayan pencerelerin yatay kenarlik kalinligi 6 Boyutlandirilamayan pencerelerin dikey kenarlik kalinligi 7 Diyalog kutularinin yatay kenarlik kalinligi 8 Diyalog kutularinin dikey kenarlik kalinligi 9 Yatay kaydirma ubuklarindaki kaydirma kutusunun yksekligi 10 Yatay kaydirma ubuklarindaki kaydirma kutusunun genisligi 11 Standart ikon genisligi 12 Standart ikon yksekligi 13 Standart kursor genisligi 14 Standart kursor yksekligi 15 Men yksekligi 16 Ekrani kaplamis durumdaki pencerenin i genisligi 17 Ekrani kaplamis durumdaki pencerenin i yksekligi 19 Bilgisayar bagli bir farenin olup olmadigi 20 Dikey kaydirma ubugundaki okun yksekligi 21 Dikey kaydirma ubugundaki okun genisligi 22 Windowsun debug modunda alisip alismadigi 23 Fare dgmelerinin yer degistirilip degistirilmedigi 28 Pencerenin olabilecek minimum genisligi 29 Pencerenin olabilecek minimum yksekligi 30 Baslik ubugundaki resmin genisligi 31 Baslik ubugundaki resmin yksekligi 36 ift tiklama iin farenin yatay sapma genisligi 37 ift tiklama iin farenin yatay sapma yksekligi 38 Masa st ikonlarinin genisligi 39 Masa st ikonlarinin yksekligi 711

Microsoft Visual Basic 6.0


40 Popup menlerin sag tarafa dogru ailip ailmayacagi 41 Kalem yklenmisse onun handle numarasi 42 Windowsun karakterler iin iki byte (Japonca gibi) kullanip kullanmadigi 43 Farede bulunan dgme sayisi 51 Basliklarin genisligi 61 Ekrani kaplamis durumdaki pencerenin genisligi 63 Ykl bir ag olup olmadigi 67 Windows ailis modu. O = normal, l = Gvenli kip, 2 = Ag destegiyle Gvenli kip 71 Menlerdeki check isaretinin genisligi 72 Menlerdeki check isaretinin yksekligi 73 Bilgisayarin ok yavas olup olmadigi 74 Arapa Windows GetSystemMetrics apisi yukaridaki degerlerden biri ile agrilip o zelligin degeri veya aktif olup olmadigi grenilebilir. RNEK: Windowsun btn ayarlarini bildirecek bir program yapalim. rnegimiz iin formunuza bir ListBox yerlestirin.

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

Microsoft Visual Basic 6.0


List1.AddItem "11 Standart ikon genisligi=" & GetSystemMetrics(11) List1.AddItem "12 Standart ikon yksekligi=" & GetSystemMetrics(12) List1.AddItem "13 Standart kursor genisligi=" & GetSystemMetrics(13) List1.AddItem "14 Standart kursor yksekligi=" & GetSystemMetrics(14) List1.AddItem "15 Men yksekligi=" & GetSystemMetrics(15) List1.AddItem "16 Ekrani kaplamis durumdaki pencerenin i genisligi=" & GetSystemMetrics(16) List1.AddItem "17 Ekrani kaplamis durumdaki pencerenin i yksekligi=" & GetSystemMetrics(17) If GetSystemMetrics(19) Then List1.AddItem "19 Bilgisayar bagli bir fare var" Else: List1.AddItem "19 Bilgisayar bagli bir fare yok" End If List1.AddItem "20 Dikey kaydirma ubugundaki okun yksekligi^" & GetSystemMetrics(20) List1.AddItem "21 Dikey kaydirma ubugundaki okun genisligi=" & GetSystemMetrics(21) If GetSystemMetrics(22) Then List1.AddItem "22 Windows debug modunda alisiyor" Else: List1.AddItem "22 Windowsun debug modunda alismiyor" End If If GetSystemMetrics(23) Then List1.AddItem "23 Fare dgmeleri yer degistirilmis" Else: List1.AddItem "23 Fare dgmeleri yer degistirilmemis" End If List1.AddItem "28 Pencerenin olabilecek minimum genisligi=" & GetSystemMetrics(28) List1.AddItem "29 Pencerenin olabilecek minimum yksekligi=" & GetSystemMetrics(29) List1.AddItem "30 Baslik ubugundaki resmin genisligi=" & GetSystemMetrics(30) List1.AddItem "31 Baslik ubugundaki resmin ykseligi=" & GetSystemMetrics(31) List1.AddItem "36 ift tiklama iin farenin yatay sapma genisligi=" & GetSystemMetrics(36) List1.AddItem "37 ift tiklama iin farenin yatay sapma yksekligi=" & GetSystemMetrics(37) List1.AddItem "38 Masa st ikonlarinin genisligi=" & GetSystemMetrics(38) List1.AddItem "39 Masa st ikonlarinin yksekligi=" & GetSystemMetrics(39) If GetSystemMetrics(40) Then List1.AddItem "40 Popup menleri sag tarafa dogru ailiyor" Else List1.AddItem "40 Popup menleri sag tarafa dogru ailmiyor" 713

Microsoft Visual Basic 6.0


End If If GetSystemMetrics(41) Then List1.AddItem "41 Kalem yklenmis onun handle numarasi==" & GetSystemMetrics(41) Else List1.AddItem "41 Kalem yklenmemis" End If If GetSystemMetrics(42) Then List1.AddItem "42 Windowsun karakterler iin iki byte (Japonca gibi) kullaniyor" Else List1.AddItem "42 Windowsun karakterler iin iki byte (Japonca gibi) kullanmiyor" End If List1.AddItem "43 Farede bulunan dgme sayisi=" & GetSystemMetrics(43) List1.AddItem "51 Basliklarin genisligi=" & GetSystemMetrics(51) List1.AddItem "61 Ekrani kaplamis durumdaki pencerenin genisligi=" & GetSystemMetrics(61) If GetSystemMetrics(63) Then List1.AddItem "63 Ykl bir ag var" Else List1.AddItem "63 Ykl bir ag yok" End If Select Case GetSystemMetrics(67) Case 0: List1.AddItem "67 Windows ailis modu. Normal" Case 1: List1.AddItem "67 Windows ailis modu. Gvenli kip" Case 2: List1.AddItem "67 Windows ailis modu. Ag destegiyle Gvenli kip" End Select List1.AddItem "71 Menlerdeki check isaretinin genisligi=" & GetSystemMetrics(71) List1.AddItem "72 Menlerdeki check isaretinin yksekligi=" & GetSystemMetrics(72) If GetSystemMetrics(73) Then List1.AddItem "73 Bilgisayariniz ok yavas" Else List1.AddItem "73 Bilgisayariniz ok yavas degil" End If If GetSystemMetrics(74) Then List1.AddItem "74 Arapa Windows var" Else List1.AddItem "74 Arapa Windows yok" End If End Sub 714

Microsoft Visual Basic 6.0

Disk Srcler Hakkinda Bilgi Veren Apiler


Systemdeki disk srclerini grenmek
Declare Function GetDriveType Lib "Kernel32" (ByVal IpRootPathName As String) As Integer Bu fonksiyonla sistemdeki src tiplerini ve dolayli olarak ta sistemdeki mevcut srcleri grenmek mmkndr. LpRootPathName parametresi ile verilen srcnn tipini geriye bir sayi ile gnderir. Bu foksiyondan dnen degerler ve anlamlarida syledir: O 715

Microsoft Visual Basic 6.0


0:Yolu verilen src sistemde yok, 2 :Yolu verilen src bir disket src (veya tasinabilir disk), 3 :Yolu verilen src bir harddisk src (veya tasinamaz disk), 4 :Yolu verilen src bir uzak src ( Network srcs gibi), 5 :Yolu verilen src bir CDROM src 6 :Yolu verilen src bir RAM disk (Windows 98 baslangi disketinin olusturdugu src gibi) RNEK: rnek olarak sistemdeki btn srcleri ve tiplerini gsterecek bir program yazalim. rnegimizde src tipini grenmek iin bu API'yi kullanacagiz. Ayrica sistemde ka src oldugunu da bu API arac iligi ile dolayli olarak bulabiliriz. A harfinden Z harfine kadar olan btn harfleri bu API'ye parametre olarak bir dng iinde verirsek, verdigimiz harfe uyan srcler hakkindaki bilgi geri dnecek, o src yoksa da O degeri dnecektir. RNEK : GetDriveType Option Explicit Private Declare Function GetDriveType Lib "Kernel32" Alias "GetDriveTypeA" (ByVal IpRootPathName As String) As Integer Private Sub Form_Load() Show Dim i As Integer, a As Integer Dim s2, s3, s4, s5, s6 For i = 0 To 27 Btn harfleri dene a = GetDriveType (Chr(65 + i) + " : \ " ) 'rakami harfe evir Select Case a Case 0: 'i numarali src yok Case 2: 'disket src s2 = s2 + " " + Chr( 6 5 + i) + ": " Case 3: 'hard disk src s3 = s3 + " " + Chr(65 + i) + ": " Case 4: fUzak src network gibi s4 = s4 + " " + Chr(65 + i) + ": " Case 5: 'CDROM src s5 = s5 + " " + Chr(65 + i) + ": " Case 6: 'RAM disk s6 = s6 + " " + Chr(65 + i) + ": " End Select Next Print "Disket Srcler:"; If s2 = "" Then Print " Yok " Else Print s2 Print "Harddisk Srcler:"; If s3 = "" Then Print " Yok " Else Print s3 Print "Uzak src:"; If s4 = "" Then Print " Yok " Else Print s4 Print "CDROM src:"; If s5 = "" Then Print " Yok " Else Print s5 Print "RAM disk:"; If s6 - "" Then Print " Yok " Else Print s6 716

Microsoft Visual Basic 6.0


End Sub

Volume Bilgisini grenme


GetVolumelnformation Api'si araciligi ile bir srcdeki volmn adini, seri numarasini, dosya adinda destekledigi harf sayisini ve sikistirilmis olup olmadigini grenmek mmkndr. Declare Function GetVolumelnformation Lib "kernel32" Alias "GetVolumelnformationA" (ByVal IpRootPathName As String, ByVal IpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, IpVolumeSerialNumber As Long, IpMaximumComponentLength As Long, IpFileSystemFlags As Long, ByVal IpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long IpRootPathName: Volm bilgisi grenilecek srcnn ana dizinini gsteren string. rnegin "c:\" veya "d:\". IpVolumeNameBuffer: Volm adi bu parametreye verilen degiskenle geri dner. Bu parametreye en az 14 harf alabilecek bir string verilmelidir. nVolumeNameSize: IpVolumeNameBuffer parametresine verilen degiskenin uzunlugu bu parametreye verilir. IpVolumeSerialNumber: Volm seri numarasi bu parametreye verilen Long trndeki degiskenle geri dner. Sonu HEX fonksiyonu ile hexadesimale evrilirse seri numara grenilmis olur. IpMaximumComponentLength:

717

Microsoft Visual Basic 6.0


Volmn, dosya ve dizin isimlerinde destekledigi maximum harf sayisi bu parametreye verilen degiskenle dner. rnegin dos iin bu deger 11, Windows 9x iin 255'tir. IpFileSystemFlags: Volm hakkindaki bazi bilgiler bu parametreye verilen degiskenle geri dner. Geri dnen deger asagidaki sayilarla And islemine tabi tutularak ilgili zelligi destekleyip desteklemedigi grenilebilir. &H1: Dosya sistemi byk kk harf ayrimini desteler. rnegin "abc" ile "ABC" farkli dosyalardir. &H10: Dosya sistemi dosya tabanli sikistirmayi destekliyor. &H8000: Dosya sistemi volume tabanli sikistirma kullaniyor. (DoubleSpace veya DrvSpace) lpFile System Name Buffer: Dosya sisteminin ismi (Fat, Fat32, Ntfs, Cdfs vb) bu parametreye verilen degiskenle dner. nFileSystemNameSize: IpFileSystemNameBuffer parametresi iin kullanilan degiskenin uzunlugu. Eger fonksiyonda geriye O degeri dnerse islem basarilamamistir. RNEK: rnek olarak sistemden seilen src hakkinda bilgi veren bir program yazalim. rnegimiz iin formunuza bir DriveListBox yerlestirin. Kullanici bu listeden bir src setiginde ona ait bilgiyi forma yazdiralim. 'RNEK: GetVolumeInformation Option Explicit Private Declare Function GetVolumelnformation Lib "kernel32" Alias "GetVolumeInformstionA"(ByVal IpRootPathName As String ByVal IpVolumeNameBuf fer As String, ByVal nVolumeNameSize As Long, IpVolumeSerialNumber As Long, IpMaximumComponentLength As Long, IpFileSystemFlags As Long, ByVal IpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long Private Sub Form_Load() Show Drivel_Change End Sub Private Sub Drivel_Change() Dim r As Long Dim pos As Integer Dim VolumeSN As Long Dim MaxFNLen As Long Dim FsName As String 718

Microsoft Visual Basic 6.0


Dim maxuz As Long Dim flags As Long Dim VolumeName As String Dim surucu As String VolumeName = Space(14) FsName = Space(32) surucu = Left(Drivel.Drive, 2) & "\" r = GetVolumelnformation(surucu, VolumeName, Len(VolumeName), VolumeSN&, maxuz, flags, FsName, Len(FsName)) If r = 0 Then Exit Sub pos = InStr(VolumeName, Chr(0)) If pos Then VolumeName = Left(VolumeName, pos - 1) Print "VolmAdi:", , VolumeName Print "Seri No:", , Hex(VolumeSN) Print "Max dosya adi uzunlugu:", maxuz pos = InStr(FsName, Chr(0)) If pos Then FsName = Left(FsName, pos ~ 1) Print "Sistem:", , FsName If flags And &H8000 Then Print "Sikistirma:", , "DblSpace veya DrvSpace" If flags And &H10 Then Print "Sikistirma:", , "Dosya tabanli" Print "Byk kk harf ayrimi:", If flags And 1 Then Print "Var" Else Print "Yok" Print " --------------------" End Sub

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

Microsoft Visual Basic 6.0


Bu api normalde 64 bitlik tam sayilari kullanir. nk 32 bitlik bir sayi ile en ok 4GB ifade edilebilmektedir. VB'de 64 bitlik sayilari isleyecek degiskenler olmadigi iin de iki tane 32 bit (long) degiskenden olusan yeni bir tip tanimlayacagiz. Private Type uzunsayi l As Long 'Dsk kisim h As Long 'Yksek kisim End Type Bu tipi tanimladiktan sonra Api ierisindeki 64 bitlik tamsayilari bu tipten tanimlayabiliriz. 64 bitlik sonucu bulmak iin ise, yksek seviyeli kismi 2^32 ile arptiktan sonra dsk seviyeli kisim ile toplamamiz gerekir. Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal IpRootPathName As String, IpFreeBytesAvailableToCaller As uzunsayi, IpTotalNumberOfBytes As uzunsayi, IpTotalNumberOfFreeBytes As uzunsayi) As Long IpRootPathName: Boyutu grenilecek srcnn ana dizini. rnegin If C:\" IpFreeBytesAvailableToCaller: Bu parametreye verilen degiskenle o anki kullanicinin kullanabilecegi alandaki bos miktar bye olarak bildirilir. Network ortamlarinda kullanicilarin disk alanlari sinirlanabildigi iin diskteki bos alanla kullanicinin kullanabilecegi bos alan ayni olmayabilmektedir. Bu parametre o anki kullanicinin bos alanini gsterir. IpTotalNumberOfBytes: Diskin toplam kapasitesi bu parametreye verilen degiskenle dner. IpTotalNumberOfFreeBytes: Diskteki bos alan bu parametreye verilen degiskenle dner. RNEK: Yukarida yaptigimiz rnegi biraz daha gelistirerek seilen src boyutlari hakkinda da bilgi verilmesini saglayalim.

RNEK: GetDiskFreeSpaceEx Option Explicit Option Explicit Private Type uzunsayi 720

Microsoft Visual Basic 6.0


l As Long h As Long End Type Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumelnformationA" (ByVal IpRootPathName As String, ByVal IpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, IpVolumeSerialNumber As Long, IpMaximumComponentLength As Long, IpFileSystemFlags As Long, ByVal IpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long Private Sub Drive1_Change() Cls Dim r As Long Dim pos As Integer Dim VolumeSN As Long Dim MaxFNLen As Long Dim FsName As String Dim maxuz As Long Dim flags As Long Dim VolumeName As String Dim surucu As String VolumeName = Space(14) FsName = Space(32) surucu = Left(Drive1.Drive, 2) & "\" Dim afb As uzunsayi, tb As uzunsayi, fb As uzunsayi Call GetDiskFreeSpaceEx(surucu, afb, tb, fb) Print "Toplam kapasite MB:", , (tb.h * 2 ^ 32 + tb.l) / 1024 / 1024 Print "Toplam bos alan MB:", , (fb.h * 2 ^ 32 + fb.l) / 1024 / 1024 Print "Aktif kullanici iin bos alan MB:", (afb.h * 2 ^ 32 + afb.l) / 1024 / 1024 r = GetVolumelnformation(src, VolumeName, Len(VolumeName), VolumeSN&, maxuz, flags, FsName, Len(FsName)) If r = 0 Then Exit Sub pos = InStr(VolumeName, Chr(0)) If pos Then VolumeName = Left(VolumeName, pos - 1) Print "Volm Adi:", , VolumeName Print "Seri No:", , Hex(VolumeSN) Print "Max dosya adi uzunlugu:", maxuz pos = InStr(FsName, Chr(O)) 721

Microsoft Visual Basic 6.0


If pos Then FsName = Left(FsName, pos - 1) Print "Sistem:", , FsName If flags And &H8000 Then Print "Sikistirma:", , "DblSpace veya DrvSpace" If flags And &H10 Then Print "Sikistirma:", , "Dosya tabanli" Print "Byk kk harf ayrimi:", If flags And 1 Then Print "Var" Else: Print "Yok" Print " " End Sub Private Sub Form_Load() Show Drive1_Change End Sub

Windows Altinda alisan Btn Formlara Hkmetmek


VB'nin sundugu kendi imkanlariyla Windows altinda alisan diger programlarin formlarini degistirmek neredeyse imkansizdir. App.Activate ve SendKeys yntemleriyle bu isler ancak ilkel olarak yap ilabilir. Halbuki simdi verecegimiz A-Pllerle o anda Windows alt inda alisan bt n formlar zerinde kendi formu-nuzmus gibi rahatlikla islem yapabilirsiniz. Mesela alis masi gereken ancak grnts hosunuza gitmeyen bir formu istediginiz anda gizleyebilir ve tekrar gsterebilirsiniz, veya minimize dgmesi unutulmus() bir formu minimize hale getirebilirsiniz. Hayal gcnzle ve programc ilik kabiliyetinizle kendinize yeni bir Task Manager bile yapabilirsiniz. Windows altinda formlarla ilgili API leri kullanabilmek in gerekli i olan ilk sey o formun handle numaras idir (hWnd). Bu numaray i grendikten sonra o form artik sizin emrinize amadedir. Kendi formunuzun handle numarasina formadi.hWnd zelligiyle ulasabileceginizi biliyorsunuz. Ya sizin programiniza ait olmayan bir formun handle numarasini? Iste bu numarayi grenmek iin kullanacagimiz API GetWindow .

alisan formlarin handle numaralarini bulmak


Declare Function GetWindow Lib "User32" (ByVal hWnd As Integer, ByVal wCmd As Integer) As Integer Bu API kullanilarak sistemde o anda alisan formlarin ( gizli dahi olsa) handle numarasini grenmek m mkndr. Windows alisan btn formlari 722

Microsoft Visual Basic 6.0


bir listede tutar. Bu API ile o listedeki formlarin handle numaralari grenilir. HWnd: Referans olarak alinacak orijinal formun handle numarasidir.

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.

alisan formlarin basliklarini degistirmek


Declare Sub SetWindowText Lib "User32" Alias "SetWindowTextA" (ByVal hWnd As Integer, ByVal IpString As String) GetWindows API'siyle handle numarasini grendiginiz formun basligini SetWindowsText API'si ile degistirebilirsiniz. hWnd: Basligi degistirilecek formun handle numarasi IpString: Yeni baslik metni. alisan formlarin basliklarini bulmak VB deki App.Activate metodu ile pencere basligini verdiginiz bir programi aktif hale getirebilecegimizi biliyorsunuz. Ancak bu metotta pencere basligini sizin vermeniz gerekir ve verdiginiz baslikla aktif hale getirmek istediginiz basligin tamamen ayni olmasi gerekir. Ayrica bu metotla aktif hale getireceginiz program o anda alisiyor olmalidir. Bu metoddaki eksiklikleri su iki API ile gidermek mmkndr. 723

Microsoft Visual Basic 6.0


Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal IpString As String, ByVal aint As Integer) As Integer hWnd: Basligi grenilecek formun handle numarasi IpString: Basligin geri dnecegi degisken. Aint: IpString degiskenine kopyalanacak karakter sayisi. Bu parametreye basligin tam uzunlugunun bir fazlasi verilerek basligin tamaminin IpString degiskenine kopyalanmasini saglamalisiniz. Basligin tam olarak uzunlugunu ise GetWindowTextLength API'siyle grenebilirsiniz. Fonksiyondan geri dnen deger O ise ya fonksiyona girilen handle numarali bir form yoktur yada formun basligi bostur. Aksi takdirde dnen deger kopyalanan karakter sayisini verir, yani aint parametresiyle girdiginiz degerin bir eksigi. Declare Function GetWindowTextLength Lib "User32" Alias "GetWindowTextLengthA" (ByVal hWnd As Integer) As Integer Bu API ile de handle numarasini verdiginiz formun basliginin uzunlugunu gre nebilirsiniz. Yukarida da bahsettigimiz gibi buradan dnen degerin bir fazlasini GetWindowText API'sinin aint parametresine girmeniz gerekir. Degerin bir fazla sini girmemizin sebebi ise String degiskenlerin sonunda ASCII kodu O olan karakterin bulunmasi mecburiyetidir. Bu fonksiyondan geri dnen deger O ise handle numarasi verilen form sistemde mevcut degildir. RNEK: Simdi bu API'yi kullanarak sistemdeki btn basliklarini bir ListBox kontrolne ekleyecek kodu yazalim. formlarin

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.

RNEK : GetWindowText, GetWindowTextLength, GetWindow

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

Microsoft Visual Basic 6.0


String, ByVal aint As Integer) As Integer Private Declare Function GetWindow Lib "User32" (ByVal hWnd As Integer, ByVal wCmd As Integer) As Integer Private Sub Form_Load() Show Dim Aktif_pencere_hwnd, uz As Integer, baslik As String 'Ilk formun handle numarasini al Aktif_pencere_hwnd = GetWindow(Forml.hWnd, 0) While Aktif_pencere_hwnd <> 0 uz = GetWindowTextLength(Aktif_pencere_hwnd) baslik = Space(uz + 1) uz = GetWindowText (Aktif__pencere__hwnd, baslik, uz + 1) If uz > 0 Then 'islem tamam ise Listl.Addltem baslik 'Ekrana; yaz End If 'Sonrakinin handle numarasini al Aktif_pencere_hwnd = GetWindow(Aktif_pencere_hwnd, 2) 'dnen deger O ise liste bitti. Wend End Sub

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

Microsoft Visual Basic 6.0


Kullanicinin listeden setigi bir formu aktif hale getirmek iin de Liste kutusunun Doubleclick olayina su kodu yazin

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.

alisan formlarin durumunu degistirmek


Declare Function ShowWindow Lib "User32" (ByVal hWnd As Integer, ByVal nCmdShow As Integer) As Integer Bu API ile hWnd numarasi verdiginiz formun parametresi ile belirle nen zelliklerini degistirebilirsiniz. NCmdShow: O: Formu gizle (Visible = False ) 5: Formu Gster (Visible = True) 9: nceki Boyut 2: Minimize 3: Maximize Bu parametrenin diger degerlerini help dosyasinda bulabilirsiniz. ShowWindow AP'si formun durumunu degistirirken, formun durumu hakkinda bilgi verecek A-Pller de mevcuttur. nCmdShow

Form simge durumunda mi?


Declare Function IsIconic Lib "User32" (ByVal hWnd As Integer) As Integer 726

Microsoft Visual Basic 6.0


Handle numarasini verdiginiz form minimize ise geri dnen deger sifirdan farklidir, aksi takdirde sifirdir.

Form ekrani kaplamis mi?


Declare Function IsZoomed Lib "User32" (ByVal hWnd As Integer) As Integer Handle numarasini verdiginiz form maximize ise geri dnen deger sifirdan farklidir, aksi takdirde sifirdir.

Form gizli mi?


Declare Function IsWindowVisible Lib "User32" (ByVal hWnd As Integer) As Integer Handle numarasini verdiginiz form gizli is e geri dnen deger sifir, aksi takdirde sifirdan farklidir. RNEK: Yukaridaki bir rnekte, Windows altinda alisan btn uygulamalari listeleyecek bir program yazmistik. Simdi ayni mantikla btn formlarin handle numarasini grendikten sonra onlari durumla ri hakkinda (simge durumu! gizli vb) bilgi verecek bir program yazalim. rnegimiz iin bir Timer yerlestirin ve Interval zelligine 1000 verin. Public Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function IsZoomed Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Option Explicit Private Sub Timer1_Timer() Cls Dim Aktif_pencere_hwnd, uz As Integer, baslik As String 'Ilk formun handle numarasini al Aktif_pencere_hwnd = GetWindow(Form1.hwnd, 0) While Aktif_pencere_hwnd <> 0 'Print Aktifjpencere.hwnd 727

Microsoft Visual Basic 6.0


uz = GetWindowTextLength(Aktif_pencere_hwnd) baslik = Space(uz + 1) uz = GetWindowText(Aktif_pencere_hwnd, baslik, uz + 1) If uz > 0 Then baslik = Left(baslik, uz) If IsIconic(Aktif_pencere_hwnd) Then Print baslik & "->simge durumunda" End If If IsZoomed(Aktif_pencere_hwnd) Then Print baslik & " ->ekrani kaplamis" End If If Not IsWindowVisible(Aktif_pencere_hwnd) Then Print baslik & "~->gizli" End If End If Aktif_pencere_hwnd = GetWindow(Aktif_pencere_hwnd, 2) 'dnen deger O ise liste bitti. Wend End Sub

Masa stnn handle numarasi


Declare Function GetDesktopWindow Lib "User32" ()As Integer 728

Microsoft Visual Basic 6.0


Herhangi bir giris parametresi olmayan bu API masa stnn handle numarasini geri gnderir. Masa stnde islem yapmak istediginizde (rnegin ekran grntsn almak gibi) bu API ile masa stne ait handle numarasini grenebilirsiniz.

Formu en stte tutmak ve gizlemek


Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Integer, ByVal hWndlnsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal ex As Integer, ByVal cy As Integer, ByVal wFlags As Integer) Hande numarasi verilen formun zelliklerini degistirmek iin kullanilir. hWnd: zerinde islem yapilacak formun handle numarasi. hWndlnsertAfter: Form zerinde yapilacak siralama islemi bu parametreye verilecek asagidaki degerlerle belirlenir. O: 1: -1: -2: x,y: cx,cy: wFlags: Form diger formlarin nne alinir Form diger formlarin arkasina alinir. Form srekli olarak diger formlarin nnde kalir. Form u n en stte kalma zelligi kaldirilir. Formun yeni koordinatlari Formun yeni boyutlari Bu parametreye verilebilecek degerler sunlardir.

&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

Microsoft Visual Basic 6.0


Bu API'yi kulanarak sizin programiniza ait olmayan bir formu bile srekli en stte kalmasini saglayabiliriniz.

Form Basliginin rengini degistirmek


Declare Function FlashWindow Lib "User32" (ByVal hWnd As Integer, ByVal bInvert As Integer) As Integer Form basligi, formun aktif veya pasif olmasina gre rengi degisir. Ancak bu rengi FlashWindow API's! ile sizde degistirebilirsiniz. hWndparametresi ile handle numarasi verilen formun, bInvert parametresine True verilirse Formun su andaki baslik rengi d$tr duruma ger. False ise formun basligi orjinal konumuna dner. Yani aktifte aktif renge, pasif ise pasif renge. Burada kastedilen formun aktifligi ve pasifligi formun Enabled zeligi ile ilgili degildir. Aktiflikle o anda ekranda kontrol elinde bulunduran form , pasiflikle de kontrol elinde bulundurmayan dige r formlar kastedilmektedir. Bu API kullanilarak bir timer kontrolyle formunuzun snmesini saglayarak dikkat ekmesini saglayabilirsiniz. yanip

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

Microsoft Visual Basic 6.0


4: Sisteme cevap vermeyen uygulamalar varsa bunlarin sonlandirilmasi iin kullanicidan onay ister. Geriye dnen deger true ise i lem basarilmistir. False ise kapatilma islemi s bir program tarafindan iptal edilmistir. RNEK: ExitWindowsEx Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Sub Command1_C1ick() Dim c c = MsgBox("Windows Yeniden Baslatilacak. Onayliyormusunuz ?", vbYesNo, "Restart") If c = vbYes Then c = ExitWindowsEx(42, 0) End If End Sub

Formlara Sekil Vermek


Formlariniz klasik dikdrtgen olmak zorunda degildir. Isterseniz formlarinizi da ire, elips, okgen vb sekillerde de hazirlayabilirsiniz.

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

Microsoft Visual Basic 6.0


Bu API'deki parametreler olusturulacak elipsin i ine yerlestirilecegi dikd rtgenin koordinatlarini belirler. Is lem basa ril missa olusan seklin handle numarasi geri dnecektir. Olusturulan bu sekli forma uygulayan API ise SetWindowRgn'dir. Private Declare Function SetWindowRgn Lib "user32" (ByVal hwn As Long, ByVal hrgn As Long, ByVal bredraw As Boolean) As Integer Buradaki hwn parametresi sekli degistirilecek formun handle numarasini, hrgn parametresi uygulanacak seklin handle numarasini belirler, bredraw parametresi ise seklin uygulanmasi iin true olmalidir. Option Explicit Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal XI As Long, ByVal Yl As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwn As Long, ByVal hrgn As Long, ByVal bredraw As Boolean) As Integer Private Sub Form_Load() Dim sekilHandle As Long Show ScaleMode = 3 sekilHandle = CreateEllipticRgn(0, 0, Forml.ScaleWidth, Forml.ScaleHeight) Call SetWindowRgn(Forml.hWnd, sekilHandle, True) End Sub

732

Microsoft Visual Basic 6.0


CreatePolygonRgn apisi araciligiyla okgenler olusturulup formlar bu sekle sokulabilir. Private Declare Function CreatePolygonRgn Lib "gdi32" (IpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long Buradaki IpPoint parametresi asagidaki POINTAPI tipinden tanimlanmistir ve olusturulacak seklin kse koordinatlarini belirleyen bir dizidir. nCount parametresi ise kse sayisini bildirir. Private Type POINTAPI x As Long y As Long End Type RNEK: Option Explicit Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal XI As Long, ByVal Yl As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwn As Long, ByVal hrgn As Long, ByVal bredraw As Boolean) As Integer Private Declare Function CreatePolygonRgn Lib "gdi32" (IpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long

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

Microsoft Visual Basic 6.0


p(7).x = 250: p(7).y = 300 p(8).x = 100: p(8).y = 200 p ( 9 ) . x = 100: p ( 9 ) . y = 100 'basi ve sonu birlestirin sekilHandle = CreatePolygonRgn(p(1), 9, 0) Call SetWindowRgn(Forml.hWnd, sekilHandle, True) End Sub RNEK: Yildiz seklinde bir form Option Explicit Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal XI As Long, ByVal Yl As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hwn As Long, ByVal hrgn As Long, ByVal bredraw As Boolean) As Integer Private Declare Function CreatePolygonRgn Lib "gdi32" (IpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long Private Type POINTAPI x As Long y As Long End Type Private Sub Form_Load() Dim sekilHandle As Long Dim p ( 1 To 11) As POINTAPI Show ScaleMode = 3 p(l).x = 14: p ( l ) .y = 149 p(2).x = 100: p(2).y = 114 p(3).x = 105: p(3).y = 14 p ( 4 ) .x = 178: p ( 4 ) .y = 93 p(5).x = 267: p(5).y = 65 p(6).x = 221: p(6).y = 144 p ( 7 ) .x = 280: p(7).y - 242 p ( 8 ) .x = 181: p(8).y = 209 p ( 9 ) .x = 103: p(9).y = 266 p(10).x = 95: p(10).y = 182 p(ll).x = 14: p(ll).y = 149 sekilHandle = CreatePolygonRgn(p( 1 ) , 11, 0) Call SetWindowRgn(Form1.hWnd, sekilHandle, True) End Sub

734

Microsoft Visual Basic 6.0

Bir timer olayina yazacaginiz kodla formun seklini srekli degistirip animasyonlar da yaptirabilirsiniz.

Formu Taskbarda Gizleme


VB'de olusturdugunuz formlarin simgesi grev ubuguna yerlesir. zellikle programinizda ok sayida form varsa bu durum istenmez. Program inizdaki formlarin taskbarda grlmesini istemiyorsaniz GetWindowLong apisi araciligiyla formun zelliklerini grenip Set Window Log apisi ile bu zellikleri degistirerek formun taskbarda grlmemesini saglayabilirsiniz. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nlndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nlndex As Long, ByVal dwNewLong As Long) As Long Option Explicit 735

Microsoft Visual Basic 6.0


Private Declare Function SetWindowLong Lib "user32 Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nlndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32 Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nlndex As Long) As Long Private Const WS_EX_APPWINDOW = &H40000 Private Const GWL EXSTYLE = (-20) Private Sub Commandl_Click () Dim eski, yeni As Long eski = GetWindowLong(hwnd, GWL_EXSTYLE) yeni = eski And (Not WS_EX_APPWINDOW) Hide SetWindowLong hwnd, GWL_EXSTYLE, yeni Show End Sub

Menlerle ilgili API'ler


Windows API'lerini kullanarak menuleri de ok daha kullanisli bir sekile getirebilirsiniz. rnegin menlilerinize resim ekleyebilirsiniz. Bu kisimda da menulerle is lem yapacak bazi API'leri verecegiz. Her Windows kontrolnde oldugu gibi menlerin de bir handle numarasi vardir ve menlere bu handle numaralari vasitasiyla ulasilir. Bir form zerinde bir tane men olmayacagi iin menlere verilen handle numaralari biraz daha farklidir. ncelikle formun men ubugu iin bir handle verilir. Bu handle numarasi ile ana menlere, bu ana menlere verilen handle numarasiyla da alt menlere ulasilir. Ayrica formlarin sol st ksesinde bulunan System menusunun (buna kontrol menusu de denir) handle numarasida vardir.

Kontrol-System Mens

736

Microsoft Visual Basic 6.0

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.

System Menusunun Handle Numarasini grenmek


Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Integer, ByVal bRevert As Integer) As Integer hWnd: System menusu handle numarasi grenilecek formun handle numarasi bRevert: Bu parametreye False verilirse su andaki system menusunun handle numarasi verilir, True verilirse system menusu orjinal haline getirilir. Asagidaki gibi kullanilarak Form1'e ait system menusunun handle numarasi grenilebilir. Sysmenuh = GetSystemMenu (Forml.hWnd, False) Artik, bu handle numarasini kullanarak men zerinde islem yapabiliriz. Bu numarayi kullanarak menye yeni elemanlar ekleyelim.

System Mensne Yeni Seenekler Eklemek


737

Microsoft Visual Basic 6.0


Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Integer, ByVal wFlags As Integer, ByVal wIDNewItem As Integer, ByVal IpNewItem As Any) As Integer hMenu:Yeni seeneklerin eklenecegi mennn handle numarasi wFlags:Bu parametrenin alabilecegi bir ka deger var ve bu degerler sonraki iki parametrenin kullanimini etkiler. Menye eleman eklemek iin bu parametreye O (MF_STRING) degerini verecegiz. WIDNewItem: Eklenecek yeni seenegin tanitici numarasi. Buraya verecegimiz degerle ileride meny taniyacagiz. Bu parametreye verebileceginiz degerler &H10 ile &HFOOO arasinda son basamagi O olan hexadesimal sayilar olabilir. Son basamagi O vermezseniz Windows son basamagi dikkate almayacaktir. LpNewItem: wFlags parametresine bagli olarak bu parametreye men seeneginin textini yazacagiz. Fonksiyondan geri dnen deger O ise islem basarilamamistir. RNEK: GetMenu,AppendMenu Option Explicit Private Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Integer, ByVal wFlags As Integer, ByVal wIDNewItem As Integer, ByVal IpNewItem As Any) As Integer Private Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Integer, ByVal bRevert As Integer) As Integer Dim sh, x, tanitici1, tanitici2 Private Sub Form_Load() taniticil = 10 tanitici2 = 20 sh = GetSystemMenu(Form1.hWnd, False) x = AppendMenu(sh, 0, tanitici1, "Program Hakkinda") x = AppendMenu(sh, O, tanitici2, "alistir") End Sub Bu satirlarla system menusu asagidaki gibi olacaktir. Burada verdigimiz tanitici1 ve tanitici2 numaralarini daha sonra bu mennn seildigini anlamak iin kulla nacagiz. Bu yzden bu sayilan Global olarak tanimlamaniz gerekebilir.

738

Microsoft Visual Basic 6.0

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.

Mesaj Kuyrugundaki Mesaji Almak


Bir olay meydana geldiginde Windows bu olayi, olay hangi programa aitse o programa bildirir. Bu bildirme slemi programin mesaj kuyruguna i mesajin eklenmesiyle olur. Program bu mesaj kuyrugundaki mesajlari alarak i leme sokar. Normalde VB bu i i bizim yerimize yapar. Yani mesaj s s kuyrugundan aldigi me sajlari yorumlayarak mesaj hangi kontroln, hangi olayina aitse o olay alt programini agirir. Yukarida da belirttigimiz gibi System mensne eklenen seenekler VB tarafindan saglanmadigi iin VB bu mesaji isleyemeyecektir. Bu durumda mesajlari srekli olarak kontrol ederek system mensne ait olan m esajlari bizim yorumlamamiz gerekiyor. Mesaj kuyrugundan bir mesaji almak iin GetMessage API'sini kullanacagiz.

739

Microsoft Visual Basic 6.0


Declare Function GetMessage Lib "User32" Alias "GetMessageA" (IpMsg As MSG, ByVal hWnd As Integer, B yVal wMsgFilterMin As Integer, ByVal wMsgFilterMax As Integer) As Integer hWnd: Mesaji alinacak formun handle numarasi wMsgFilterMin, wMsgFilterMax: IpMsg: Bu iki parametre vasitasiyla mesajlar filtrelemeye tabi tutulabilir. Parametrelere O degeri verilirse btn mesajlar alinabilir. Siradaki mesaj MSG yapisinda tanimlanmis bu parametre ile geri dner. Mesaj yapisi asagida verilmistir. Fonksiyondan geri dnen deger O ise VM_QUIT mesaji alinmistir. Bu mesaj ile birlikte program sona erer. Type POINT x As Integer y As Integer End Type

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

Microsoft Visual Basic 6.0


seviyeli iki byte'ida y koordinatini verir. Is lem mouse ile yapilmamissa bu parametrenin bir anlami yoktur. Wparam parametresi ise yapilan islemin kodunu verir. Bu kod: &HF060: Kapat seenegi &HF030: Ekrani kapla seenegi &HF020: Simge durumuna klt seenegi &HF010: Tasi seenegi &HF120: nceki boyut seenegi &HFOOO: Boyut seenegi &HF130: Geis Yap seenegi TaniticiNo: Eger seilen seenek standart bir men seenegi degilse yani bizim ekledigimiz bir se enek ise geri dnen deger AppendMenu API'sinin WIDNewItem parametresine verdigimiz degerdir. Dim a, msgl As MSG a = GetMessage(msgl, forml.hWnd, O, 0) If msgl.message = &H112 Then 'WM_SYSCOMMAND ise Select Case msgl.wParam Case &H10: MsgBox ("Program Hakkinda Seildi") Case &H20: MsgBox ("alistir seildi") End Select End If Bu sekilde bir kodla mesaji alip isleyebiliriz. Ancak bu kod eksiktir. nk mesaji kuyruktan aliyoruz ancak sadece kendi isimize yariyorsa kullaniyoruz, yaramiyorsa yani system menusu ile ilgili bir seenek degilse hibir sey yaptirmiyoruz. Bu da diger mesajlarin VB taraf indan isletilmesini nleyecektir. Mesaj system mensne ait bir mesaj degilse DisPatchMessage API'si ile mesaji islenmesi iin forma gndermemiz gerekir.

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

Microsoft Visual Basic 6.0


a = GetMessage(msgl, forml.hWnd, O, 0) If msgl.message = &H112 Then 'WM_SYSCOMMAND ise Select Case msgl.wParam Case &H10: MsgBox ("Program Hakkinda Seildi") Case &H20: MsgBox ("alistir seildi") Case Else : a = DispatchMessage(Msgl) End Select Else a = DispatchMessage(Msgl) End If

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

Microsoft Visual Basic 6.0


Declare Function GetMessage Lib "user32" Alias "GetMessageA" (IpMsg As MSG, ByVal hwnd As Integer, ByVal wMsgFilterMin As Integer, ByVal wMsgFilterMax As Integer) As Integer Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Integer, ByVal wFlags As Integer, ByVal wIDNewItem As Integer, ByVal IpNewItem As Any) As Integer Declare Function TrnslateMessage Lib "user32" Alias "TranslateMessageA" (IpMsg As MSG) As Integer

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

Microsoft Visual Basic 6.0


End Select End Sub

Menu ubugunun handle numarasini grenmek


Declare Function GetMenu Lib "User32" (ByVal hWnd As Integer) As Integer hWnd parametresi ile verilen formun menu handle numarasini verir. Fonksiyondan geri dnen deger O ise ya handle numarasi verilen form sistemde ykl degildir yada men ubugu yoktur, yani formun menle ri yoktur. Dim MnHandle MnHandle = GetMenu(Forml.hWnd) If MnHandle Then Print "Menu ubugunun handle numarasi: " ; GetMenu(Forml.hWnd) Else Print "Formun menusu yok" End If Burada formun handle numarasi yerine kendi progamimiza ait bir formun handle n umarasini verdik. Ancak formlarla ilgili verdigimiz API'leri kullanarak kendi programiniza ait olmayan formlarin menlerine de burada verecegimiz API'leri uygulayabilirsiniz. AltMenlerin handle numarasini grenmek Declare Function GetSubMenu Lib "User32" (ByVal hMenu As Integer, ByVal nPos As Integer) As Integer hMenu: Altmensnn handle numarasi grenilecek mennn, handle numa rasi. nPos: Alt mennn menu iindeki sirasi. Ilk alt men iin 0.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Ancak bir mennn alt menusu olmayabilir veya sayisi belli olmayabilir. Bu sayiyi grenmek iinde GetMenultemCount API's! bulunmaktadir.

Menlerin alt men sayisini grenmek


Declare Function GetMenultemCount Lib "User32" (ByVal hMenu As Integer) As Integer hMenu: Altmen sayisi grenilecek mennn handle numarasi. Geri dnen deger -l ise handle numarasi verilen men mevcut degildir. Aksi taktirde geri dnen deger alt men sayisidir. Dolayisiyla geri dnen deger O ise mennn alt menusu yoktur. Print "Menu ubugu zerindeki menu sayisi"; Print GetMenultemCount( GetMenu(Forml.hWnd)) Bu API'lerle menlerin handle numarasini ve alt menu sayilarini nasil grenecegimizi biliyoruz. Bunlar menlerle ilgili API'leri kullanabilmek iin gerekli idi. Simdi bu API'leri kullanara k menlerle ilgili bazi isler yapan API'leri verelim.

Menlere resim eklemek


Declare Function GetMenuCheckMarkDimensions Lib "User" () As Long Menlerinize resim ekleyerek menlerinizin daha gzel grlmesini saglayabilirsiniz. Aslinda bu API'yi kullanmasaniz dahi Windows menler iin bir resim kullanir. Bahsettigimiz resim men isaretli iken gsterilen ^ isaretidir. Bir menu i saretli ise (Checked = True) bu resim men isminin basinda gsterilir. Isaretli degilse bos bir resim gsterilir. Iste bu resimleri istediginiz resimlerle degistire bilirsiniz. Ancak resmin byklg belirli sinirlar iinde olmalidir. GetMenuCheckMarkDimensions API'si bu boyutlari verir. Bu fonksiyondan geri dnen degerin dsk seviyeli iki byte'i resmin genisligini, yksek seviyeli b yte'i yksekligini pixel olarak verir. Bu deger 640x480 standart VGA znrlg iin 14x14'dr. Dim x X = GetMenuCheckMarkDimensions () Print "Menu iin kullanilabilecek resimin" Print " genisligi :", x And &HFFFF& Print " yksekligi:", (x And &HFFFFOOQO) / 65535)

746

Microsoft Visual Basic 6.0


Declare Function SetMenuItemBitmaps Lib "User" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer, ByVal hBitmapUnchecked As Integer, ByVal hBitmapChecked As Integer) As Integer Resmin olabilecek boyutlarini grendikten sonra bu resmi degistirelim. Bir men iki durumdan birinde olabilir. Isaretli veya isaretsiz. Ve bu her iki durum iin ayri bir resim ykleyebilirsiniz. Bu resimleri degistirecek API SetMenultemBitMaps APl'sidir. Bu API ile bir mennn alt menlerinin isaretli ve isaretsiz durumlari iin iki ayri resim ykleyebilirsiniz. Dolayisi ile her mennn alt menleri iin farkli resimler ykleyebilirsiniz. hMenu: nPosition: deger O'dir. Mennn handle numarasi. Altmennn men iindeki sirasi. Ilk men iin bu

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


son = bas End If If Commandl.Caption = "Resimli" Then For i = bas To son x = SetMenuItemBitmaps(menuhandle, i, &H400, Image2.Picture, Imagel.Picture) Next Commandl.Caption = "Orj inal" Else For i = bas To son x = SetMenuItemBitmaps(menuhandle, i, &H400, 0, 0) Next Commandl.Caption = "Resimli" End If End Sub Private Sub Command2_Click(index As Integer) CommonDialogl.Action = 1 If CommonDialogl.filename = "" Then Exit Sub 'iptal seildi ise If index = 1 Then Image2.Picture = LoadPicture(CommonDialogl.filename) Else Imagel.Picture = LoadPicture(CommonDialogl.filename) End If If Commandl.Caption = "Orj inal" Then 'Menu resimli durumda ise yeni resimleri aktif yap Commandl.Caption = "Resimli" commandl_click End If End Sub Private Sub Form_Load() Dim size, x Commandl.Caption = "Resimli" size = GetMenuCheckMarkDimensions() x = size End Sub Private Sub menu1_Click(index As Integer) menul(index).Checked = Not menul(index).Checked End Sub Private Sub Option1_Click() Textl.Visible = False End Sub Private Sub Option2_Click() Textl.Visible = True Textl = 1 End Sub Private Sub Textl_LostFocus() Dim anamenuhandle, menuhandle 749

Microsoft Visual Basic 6.0


Dim menusay anamenuhandle = GetMenu(Forml.hWnd) menuhandle = GetSubMenu(anamenuhandle, 0) menusay = GetMenuItemCount(menuhandle) If Val(Textl) > menusay Then MsgBox ("Menu numarasi l ile " & menusay & " arasinda olabilir") Textl.SetFocus End If End Sub Menlere resim eklemenin bir yoluda elemanin tamamen resim olmasidir. Bu islem AppendMen API'si ile yapilabilir. Declare Function AppendMen Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Integer, ByVal wFlags As Integer, ByVal wIDNewItem As Integer, ByVal IpNewItem As Any) As Integer hMenu: Yeni seeneklerin eklenecegi mennn handle numarasi wFlags: Bu parametrenin alabilecegi bir ka deger var ve bu degerler sonraki iki parametrenin kullanimini etkiler. Menye resimli eleman eklemek iin bu parametreye 4 (MF_BUMAPS) degerini verecegiz. WIDNewItem: Eklenecek yeni seenegin tanit ici numarasi. Buraya verecegimiz degerle ileride meny taniyacagiz. Bu parametreye verebileceginiz degerler &H10 ile &HFOOO arasinda son basamagi O olan hexadesimal sayilar olabilir. Son basamagi 0 vermezseniz Windows son basamagi dikkate almayacaktir. LpNewItem: wFlags parametresine bagli olarak bu parametreye men seenegi iin kullanilacak resmin Picture zelliginin dsk seviyeli iki baytini verecegiz. Fonksiyondan geri dnen deger O ise islem basarilamamistir. h = GetMenu(hWnd) 'formun m enusunu al h = GetSubMenu(h, 0) x = AppendMenu(h, &H4, 10, Picturel.Picture And &HFFFF)

Kapat Dgmesini Pasif Yapma


Windows 95 ile birlikte pencerelerin sag st ksesine x dgmesinin eklendigini biliyorsunuz. Bunu pasif yaparak kullanicinin programi buradan sonlandiramamasmi saglayabilirsiniz. Aslinda bunu pasif yapmak demek system mensndeki kapat seenegini kaldirmak demektir. RemoveMenu apisi ile istediginiz bir mendeki seenegi kaldirabilirsiniz. GetSystemMenu apisi ile system menusunun handle numarasini grendikten sonra bu mendeki 6. sirada olan kapat menusunu RemoveMenu apisi ile kaldirabilirsiniz.

750

Microsoft Visual Basic 6.0


Private Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Integer, ByVal bRevert As Integer) As Integer Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer Private Const MF_BYPOSITION = &H400 Private Sub Form_Load() dim mnhandle mnhandle = GetSystemMenu(hWnd, 0) call RemoveMenu(mnhandle, 6, MF_BYPOSITION) End Sub Bylece x dgmesi pasif olan bir formunuz olacakt ir.

Sikistirilmis Dosyalarla Ilgili APIler


Microsoftun rnlerini sikistirmak ve amak iin kullandigi DOS altinda alisan COMPRESS.EXE ve EXPAND.EXE programlarini kullanir. Windows altinda da COMPRESS.EXE programi ile sikistirilmis dosyalari amak iin LZEXPAND.DLL ktphanesi Windows'la birlikte gelmektedir. Bylece zellikle kurulum programlarinda standart olarak bir sikistirma teknigini kolayca kullanabilme imkani verilmektedir. Ancak LZEXPAND.DLL ile dosyalari sikistiramiyor sadece sikistirilmis dosyalari aabiliyorsunuz. Dosyalari sikistirmak iin DOS altinda alisan COMPRESS.EXE kullanilabilir. Sikistirilmis bir dosyayi amak iin su adimlar uygulanmalidir. 1. LzOpenFile ile sikistirilmis dosyayi amak(Open) 2. LzOpenFile ile ailacak dosyayi olusturmak 751

Microsoft Visual Basic 6.0


3. LzCopy ile sikistirilmis dosyayi aarak (UnCompress) 2. Adimda olusturulan dosyaya kopyalamak 4. LzCIose ile, ailmis olan iki dosyayi da kapatmak.

Bu adimlarda grldg gibi bir dosyayi amak iin gerekli API var. Bu APl'leri sirasi ile verelim.

Sikistirilmis Dosyayi Amak ve Hedef Dosyayi Olusturmak


Declare Function LZOpenFile Lib "\windows\system\lz32.dll" Alias "LZOpenFileA" (ByVal IpszFile As String, IpOf As ofstruct, ByVal style As Long) As Long IpszFile: Ailacak veya olusturulacak dosyanin adi IpOf: Ailan dosya hakkinda bilginin kopyalandigi Ofstruct yapisinda bir degisken. Asagida bu yapi verilmistir. Style: Dosya zerinde yapilacak islemi belirleyen asagidaki sayila rdan R islemine tabi tutularak elde edilen bir deger. Style &HO &H1 &H2 &H1000 &H200 &H2000 Anlami Dosya Dosya Dosya Dosya sadece okunmak iin ailacak sadece yazmak iin ailacak okunmak ve yazmak iin ailacak olusturulacak

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

Microsoft Visual Basic 6.0


Reserved2 As Long szPathName As String * 128 End Type cBytes: Bu yapinin byte olarak uzunlugunu bildirir. Asc(ofs.cBytes) seklinde grenilebilir. F F i x e d D i s k: . B u r a d a n d n e n d e g e r O i s e d o s y a h a r d d i s k t e d i r . ( Asc(ofs.FFixedDisk)) reserved: ayrilmis szPathName: adi. Su an iin bu parametrenin bir anlami yok. Ilerisi iin Ailan veya olusturulan dosyanin yolu ve srcs dahil

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

Microsoft Visual Basic 6.0


kaynakh = LZOpenFile ("\sound.ba_", ofs, O Or &H2000) Hata olustu ise hata kodunu ver If kaynakh = -1 Then MsgBox ("Hata kodu:" & ofs.nErrCode) End If

Sikistirilmis Dosyayi Hedef Dosyaya Amak


Declare Function LZCopy Lib "\windows\system\lz32" (ByVal hfSource As Long, ByVal hfDest As Long) As Long hfSource: Kaynak (sikistirilmis) dosyanin handle numarasi

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

Microsoft Visual Basic 6.0


Private Declare Function LZOpenFile Lib "\windows\system\lz32.dll" Alias "LZOpenFileA" (ByVal IpszFile As String, IpOf As OFSTRUCT, ByVal style As Long) As Long Private Declare Function LZCopy Lib "\windows\system\lz32" (ByVal hfSource As Long, ByVal hfDest As Long) As Long Private Declare Sub LZClose Lib "\windows\system\lz32" (ByVal hfFile As Long)

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

Ses kartinin API'lerle kullanilmasi


755

Microsoft Visual Basic 6.0


VB ses kartiniz iin (Genel olarak multimedya donanimlariniz iin) MCI kontroln sunar. Ancak bu kontrol her zaman ise yaramaz. Bu kontrol yeterince hiz li degildir. Ayrica programinizdan sadece sesleri kullanmak i in MCI kontrol iin bir sr kod yazmaniz da gerekmez. MCI kontroln kullanarak ses kartinin a-yarlarini da yapamazs iniz. Iste simdi verecegimiz APIlerle btn bu olumsuzluklari asabilirsiniz. Bu API'leri vermeden nce seslerle ilgili su zellikleri hatirlatalim: Ses kartlariyla gerek hayattaki sesler rneklenip saklanabilir. Bu islem iin ses kartinin mikrofon veya line-in girisleri kullanilir. rneklenen bu sesler daha sonra almayabilir. Bu i lem iin de hoparlr veya line-out s ikisi kullanilir. Gerek hayattan rneklenen sesler olduka fazla yer kaplarlar. rnegin piyanodan alinan 5 dakikalik bir m igi 8 bit 22 kHz ile mono z olarak rneklenirse bu ses dosyasi yakla sik olarak 22000 * 5 * 60 = 6.3 MB yer kaplar. Halbuki, piyanodan alinabilen ses notalarla olusturuldugundan, nota bilgileri kaydedilip bu sesler dijital olarak olusturulabilir. Bunun iinde MIDI standartlari gelistirilmistir. Ayni mz igi MIDI olarak kaydederseniz 30-100 KB yer kaplayacakt ir. Ayni sey her ses iin geerli degildir. rnegin insan sesi bu yntemlerle olusturulamaz. Genel olarak bu tip sesler rneklenerek elde edilir ve olduka fazla yer kaplar. Notalarla ifade edilebilen veya dzgn bir frekans genlik yapisina sahip sesler MIDI olarak kaydedilebilir. Bu da digerine gre olduka az yer kaplayacakt ir. Wav dosyalarini alabilmek iin sistemde ses kartinin bulunmasi sart degildir. Windows'a kurulu bir PC Speaker srcs varsa Wav dosyalari bilgisayarinizin hoparlrnden de alinabilir. Asagida verecegimiz API'lerde sistemdeki ses karti veya Speaker srcs fonksiyonlari zerinde islem yapilmasini saglar.

Wav dosyalarini almak


Declare Function sndplaysound Lib "winmm" Alias "sndPlaySoundA" (ByVal IpszSoundName As String, ByVal wFlags As Long) As Long IpszSoundName: alinacak Wav dosyasi wFlags: Bu parametrenin alabilecegi degerler sunlardir. 0: alinan dosya bitinceye kadar kontrol Windowsa birakilmaz 1: alinan dosya artalanda alinir. Yani para alinirken Windows altindaki diger programlar da alismaya devam eder. Bilgisayarinizin hizi parayi almaya yetmiyorsa dosyanin kesintisiz olarak alinabilmesi iin bu biti O yapmalisiniz.

756

Microsoft Visual Basic 6.0


8: Bir sonraki paraya kadar srekli alar. Bu degeri alacaginiz parayi fon mzigi olarak kullanacaksaniz verebilirsiniz. Bu degeri verdiginizde programi niz alismayi bitirse dahi dosya tekrar-tekrar almaya devam edecektir. Programdan ikarken bu degeri pasif hale getirmeniz gerekir. Fonksiyondan dnen deger -1 (True) ise para alinmistir, aksi takdirde alina-mamistir veya alman para henz bitmemistir. Private Declare Function sndplaysound Lib "winmm" Alias "sndPlaySoundA" (ByVal IpszSoundName As String, ByVal wFlags As Long) As Long Sub Form Load() x = sndplaysound("music.wav", 1) End Sub

Wav dosyalarini alacak donanim var mi?


Declare Function waveOutGetNumDevs Lib "winmm" () As Long Sistemde Wav dosyalarini alacak bir donanim olup olmadigini veya varsa ka tane oldugunu waveOutGetNumDevs API'si ile grenebiliriz. Bu fonksiyondan dnen deger O ise sistemde Wav dosyalarini alacak bir donanim (veya windowsa tanitilmis srcs) yoktur. Private Declare Function waveOutGetNumDevs Lib "winmm" () As Long Sub Form_Load() If WaveOutGetNumDevs() = 0 Then MsgBox("Sisteminde sesleri alacak donanim yok") Else MsgBox ("Sisteminizde " & waveOutGetNumDevs() & " tane ses srcs var") End If End Sub

Wav dosyalarini alacak donanimin kapasitesi nedir?


Declare Function waveOutGetDevCaps Lib "winmm" Alias "waveOutGetDevCapsA" (ByVal udeviceid As Long, IpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long Sistemde bulunan ses donaniminin stereo mu, mono mu oldugunu, ses ayari yapilip yapilamadigi gibi bazi zellikleri waveOutGetDevCaps API'si ile grenilebilir. udeviceid: Kapasitesi grenilecek birimin numarasi. Bu parametrenin alacagi degerlerler O ile sistemde ykl ses srcs sayisinin bir eksigi 757

Microsoft Visual Basic 6.0


arasindadir. Sisteminizde bir ses karti ve bir srcs varsa bu parametreye O, iki tane ise ikinci src iin l gibi degerler vermelisiniz. LpCaps: Bu parametre WAVEOUTCAPS kullanici tanimli tipinden bir degis kendir. Ve ses srcsnn kapasitesi bu tipte tanimlanmis degis ken ile geri dner. usize: WAVEOUTCAPS tipinden tanimlanmis degiskenin uzunlugu. Global Const MAXPNAMELEN = 32 ' rn isminin maksimum uzunlugu Type WAVEOUTCAPS wMid As Integer ' wpid As Integer ' vdriverversion As szpname As String dwFormats As Long wchannels As Long dwSupport As Long zellikler End Type retici ID numarasi rn ID numarasi Long ' Src versiyonu * MAXPNAMELEN ' rn ismi ' Destekledigi formatlar ' Destekledigi kanal sayisi (stereo,mono) ' Src tarafindan desteklenen

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 degerler ve anlamlari sunlardir. 0 1 :Mono :Stero

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

Microsoft Visual Basic 6.0


&H1: Pitch seviyesi ayarlanabilir. &H2: PlaybackRate ayari yapilabilir. &H4: Ses ayari yapilabilir. &H8: Sol ve sag hoparlrlerin ses seviyeleri ayri ayri ayarlanabilir. Fonksiyondan dnen degerlerin anlamlari syledir. 0: Hata yok 2: udeviceid parametresi ile verilen s rc yok. Sistemdeki src sayisindan daha byk bir numara vermissiniz. 6: Sistemde ykl src yok RNEK: rnek olarak sistemdeki ilk ses s rcs hakkinda detayli bilgi verecek bir program yazalim. RNEK : WaveOutGetNumDevs,WaveOutGetDevCaps 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 * MAXPNAMELEN 'rn ismi dwFormats As Long 'Destekledigi formatlar wchannels As Long 'Destekledigi kanal sayisi (stereo, mono) dwSupport As Long 'Src tarafindan desteklenen zellikler End Type Private Declare Function waveOutGetNumDevs Lib "winrnm" () As Long Private Declare Function waveOutGetDevCaps Lib "winrnm" Alias waveOutGetDevCapsA" (ByVal udeviceid As Long, IpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long Private Sub Form_Load () Dim Ipc As WAVEOUTCAPS Show If waveOutGetNumDevs () = 0 Then Print "Sisteminde sesleri alacak donanim yok" Exit Sub End If Print "Sisteminizde " & waveOutGetNumDevs() & " tane ses srcs var" Call waveOutGetDevCaps(0, Ipc, Len(lpc)) Print "Srcnn ismi:"; Ipc.szpname Print "Versiyon:" & (Ipc.vdriverversion And &HFF00) \ 256 & " . " (Ipc.vdriverversion And &HFF), If Ipc.wchannels = 1 Then Print "Mono" Else Print "Stereo" End If Print "Destekledigi formatlar:" If Ipc.dwFormats And 1 Then Print "11.025 kHz,Mono,8-bit" 759

&

Microsoft Visual Basic 6.0


If Ipc.dwFormats And 2 Then Print "11.025 kHz,Stereo,8-bit" If Ipc.dwFormats And 4 Then Print "11.025 kHz,Mono,16-bit" If Ipc.dwFormats And 8 Then Print "11.025 kHz,Stereo,16-bit" If Ipc.dwFormats And &H10 Then Print "22.05kHz,Mono,8-bit" If Ipc.dwFormats And &H20 Then Print "22.05kHz,Stereo,8-bit" If Ipc.dwFormats And &H40 Then Print "22.05kHz,Mono,16-bit" If Ipc.dwFormats And &H80 Then Print "22.05kHz,Stereo, 16-bit" If Ipc.dwFormats And &H100 Then Print "44.1kHz,Mono,8-bit" If Ipc.dwFormats And &H200 Then Print "44.1kHz,Stereo,8-bit" If Ipc.dwFormats And &H400 Then Print "44.1kHz,Mono,16-bit" If Ipc.dwFormats And &H800 Then Print "44.1kHz,Stereo,16-bit" End Sub

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

Ses ayari yapmak


Ses donaniminiz yazilimla ses ayari yapilmasina olanak taniyorsa sol ve sag ses seviyelerini grenmek ve ayarlamak WaveOutGetVolume ve WaveOutSetVolume API'leriyle yapilabilir. 'Ses seviyesini grenmek iin Declare Function waveOutGetVolume Lib "winmm" (ByVal udeviceid As Long, lpdwvolume As Long) As Long 'Ses seviyesini degistirmek iin Declare Function waveOutsetVolume Lib "winmm" (ByVal udeviceid 760

Microsoft Visual Basic 6.0


As Long, ByVal dwVolume As Long) As Long Udeviceid: Lpdwvolume: Ses seviyesi ayarlanacak veya grenilecek srcnn numarasi. Ses seviyesi bu 32 bitlik degisken ile ayarlanir. Bu parametrenin yksek seviyeli 2 bayti sag hoparlrn ses seviyesini, dsk seviyeli 2 bayti sol hoparlrn ses seviyesini ayarlar. Bu degerlerin &HFFFF olmasi sesin en yksek seviyesini 0 olmasi en dsk seviyesini gsterir. Eger ses karti her iki hoparlrn ses ayarini ayri ayri yapamiyorsa yksek seviyeli 2 byte dikkate alinmaz, dsk seviyeli 2 byte her iki hoparlrn de ikis seviyesini ayarlar.

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

Microsoft Visual Basic 6.0


Private Declare Function waveOutGetVolume Lib "winmm" (ByVal uDevicelD As Long, lpdwvolume As Long) As Long Private Declare Function waveOutSetVolume Lib "winmm" (ByVal uDevicelD As Long, ByVal dwVolume As Long) As Long Private Sub Form_Load() Dim lpc As WAVEOUTCAPS If waveOutGetNumDevs() = 0 Then Print "Sisteminde sesleri alacak donanim yok" End End If Call waveOutGetDevCaps(0, lpc, Len(lpc)) If lpc.wchannels = 0 Then Slider2.Visible = False 'mono ise birini gizle End If If (lpc.dwSupport And 4) = 0 Then 'Ses ayarini desteklemiyorsa ikisinide gizle Slider1.Visible = False Slider2.Visible = False End If If (lpc.dwSupport And 8) = 0 Then 'Sol sag ses ayarini desteklemiyorsa birini gizle Slider2.Visible = False End If Slider1.Min = 0 Slider1.Max = &HFFFF& Slider1.TickFrequency = &HFFFF& / 10 Slider2.Min = 0 Slider2.Max = &HFFFF& Slider2.TickFrequency = &HFFFF& / 10 'Su anki seviyeyi gster Dim x, sol, sag, st Call waveOutGetVolume(0, x) sol = x And &HFFFF& 'dsk seviyeli iki byte st = Hex(x And &HFFFF0000) If Len(st) > 4 Then st = Mid(st, 1, Len(st) - 4) 'Yksek seviyeli iki bayti al Else st = "0" End If sag = CDbl("&h" & st) Slider1.Value = sol Slider2.Value = sag End Sub Sub sesayar() Dim x, sol, sag, s sol = Slider1.Value sag = Slider2.Value s = Val("&h" & Hex(sag) & String(4 - Len(Hex(sol)), "0") & Hex(sol) & "&") Cali waveOutSetVolume(0, s) End Sub Private Sub Slider1_Click() sesayar End Sub 762

Microsoft Visual Basic 6.0


Private Sub Slider2__Click() sesayar End Sub Private Sub Slider1_Scroll() sesayar End Sub Private Sub Slider2_Scroll() sesayar End Sub

Ses Girisi Ile Ilgili APIler


Ses kartinizin ses kaydi yapma destegi varsa ve srcs Windows'a kurulu ise ses kayit ayarlarini asagidaki API'lerle yapabilirsiniz.

Ses kaydi yapacak donanim var mi?


Declare Function waveinGetNumDevs Lib "winmm" () As Long Sistemde ses kaydi yapacak donanim kontroln ve varsa ka tane oldugunu WavelnGetNumDevs API'si ile grenebiliriz. Bu fonksiyondan dnen deger 0 ise sistemde kayit yapacak bir donanim yok veya Windowsa tanitilmamis olabilir. Private Declare Function waveinGetNumDevs Lib "winmm" () As Long Private Sub Form_Load() If waveinGetNumDevs() = 0 Then MsgBox ("Sisteminizde ses kaydi yapacak donanim yok") Else MsgBox ("Sisteminizde " & waveinGetNumDevs() & " tane ses kaydi yapacak donanim var") End If End Sub

Ses kaydi yapacak donanimin kapasitesi nedir?


Declare Function waveinGetDevCaps Lib "winmm" (ByVal udeviceid As Long, IpCaps As WAVEINCAPS, ByVal uSize As Long) As Long Sistemde bulunan ses kayit WavelnGetDevCaps A-PI'si ile grenilebilir. udeviceid: donaniminin bazi zellikleri

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

Microsoft Visual Basic 6.0


LpCaps: Bu parametre WAVEINCAPS kullanici tanimli tipinden bir degiskendir. Ses kayit srcsnn kapasitesi bu tipte tanimlanmis degisken ile geri dner. WAVEINCAPS yapisini general-declarations kisminda syle tanimlamalisiniz.

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

MIDI ikisi Ile Ilgili APIler


Eger ses kartinizin MIDI destegi varsa ve gerekli src Windows'a kurulu ise MIDI ikis ayarlarini asagidaki API'lerle yapabilirsiniz.

MIDI formatindaki dosyalari alacak donanim var mi?


Declare Function MidiOutGetNumDevs Lib "winmm" () As Long Sistemde MIDI ikis donanimi olup olmadigini veya varsa katane oldugunu MidiOutGetNumDevs API'si ile grenebiliriz.

MIDI ikis kapasitesi nedir?

764

Microsoft Visual Basic 6.0


Declare Function midiOutGetDevCaps Lib "winmm" (ByVal udeviceid As Long, IpCaps As MIDIOUTCAPS, ByVal uSize As Long) As Long Sistemde bulunan MIDI ikis donaniminin zelliklen MidiOutGetDevCaps APIsi ile grenilebilir. bazi

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

Microsoft Visual Basic 6.0


Bu degiskenden dnen degerin 1 olmasi seslerin zel bir donanim tarafindan olusturuldugunu gsterir ve bu durumda diger 4 parametrenin (WVoices, WNotes, WChannel, dWSupport) bir anlami yoktur. Fonksiyondan dnen degerlerin anlamlari syledir. 0: Hata yok 2: udeviceid parametresi ile verilen src yok. Sistemdeki src sayisindan daha byk bir numara vermissiniz. 6: Sistemde ykl src yok

MIDI ikis ses seviyesini grenmek ve ayarlamak


Eger MIDI donanimi yazilimla ses ayari yapilmasina imkan taniyorsa sol ve sag ses seviyelerini grenmek ve ayarlamak MidiOutGetVolume ve MidiOutSetVolume API'leriyle yapilabilir. Ses seviyesini grenmek iin: Declare Function MidiOutGetVolume Lib "winmm" (ByVal udeviceid As Long, lpdwvolume As Long) As Long Ses seviyesini degistirmek iin: Declare Function MidiOutsetVolume Lib "winmm" (ByVal udeviceid As Long, ByVal dwVolume As Long) As Long Bu iki API'nin kullanimi ses ikis seviyesi iin verdigimiz WaveOutSetVolume ve WaveutGetVolume API'leriyle ayni.

MIDI giris donanimi var mi?


Declare Function MidiinGetNurnDevs Lib "winmm" () As Long Bu fonksiyondan dnen deger 0 ise sistemde MIDI kaydi yapacak bir donanim (veya windowsa tanitilmis srcs) yoktur. Declare Function MidiinGetNurnDevs Lib "winmm" () As Long Private Sub Form_Load() If MidiinGetNurnDevs() = 0 Then MsgBox ("Sisteminde MIDI giris donanimi yok") End If End Sub

766

Microsoft Visual Basic 6.0


Ses kartinin sundugu diger sundugu fonksiyonlarla ilgili APIler
Ses kartiniz ses ve midi dosyalarinin ayarlan haricinde kendine zg diger bazi ayarlarin yapilmasini da sagliyor olabilir. Ses kartinizdan; bir CD'nin veya speaker'in ses ayarlarini bu zellikleri kullanarak yapabilirsiniz. Ses kartinizin sagladigi bu diger fonksiyonlari Auxlary olarak adlandirilan APIlerle kullanabilirsiniz.

Yardimci Fonksiyonlarin Sayisi?


Declare Function auxGetNumDevs Lib "winmm" () As Long
Bu fonksiyondan dnen deger 0 ise donanimin sundugu yardimci islemler yoktur. Aksi takdirde dnen deger desteklenen yardima islemlerin sayisini verir.

Desteklenen Yardimci Fonksiyonlarin sitesi nedir?


Declare Function auxGetDevCaps Lib "winmm" (ByVal udeviceid As Long, IpCaps As AUKCAPS, ByVal uSize As Long) As Long Udeviceid :Kapasitesi grenilecek yardimci birimin numarasi, Ilk birim iin bu numaranin degeri 0 dir. LpCaps :Bu parametre AUXCAPS kullanici tanimli tipinden bir degiskendir, AUXCAPS yapisini general-declarat ions kisminda syle tanimlamalisiniz.

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.

DWSupport: Bu degiskenden dnen degerin ilk iki bitinin anlami


vardir. Bu bitler ve anlamlari syledir. 1: Ses ayari yapilabiliyor 2: Sol-sag ses ayari ayri ayri yapilabiliyor. Fonksiyondan dnen degerlerin anlamlan syledir. 767

Microsoft Visual Basic 6.0


0: Hata yok 2: udeviceid parametresi ile verilen src yok. Sistemdeki src sayisindan daha byk bir numara vermissiniz. 6: Sistemde ykl src yok

Yardimci birimlerin ses seviyesini grenmek ve ayarlamak


Eger desteklenen yardimci birimin ses ayari yazilimla yapilabiliyorsa bu birimin ses seviyesini grenmek ve ayarlamak AuxGetVolume ve AuxSetVolume API'leriyle yapilabilir. Ses seviyesini grenmek iin:

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

: Islenecek resmin bulundugu kontroln hDC


numarasi.

hDestDc
numarasi

: Islenen resmin gsterilecegi kontroln hDC : Resmin gsterilecegi kontrol iindeki koordinatlar.
768

X, Y

Microsoft Visual Basic 6.0


nWidth, nHeight:Islenecek resmin genisligi ve yksekligi. XSrc,YSrc : Islenecek resmin bulundugu kontrol iindeki resim
parasinin baslangi koordinatlari.

dwRop
uygulanacak islem.

: Resim kaynaktan hedefe kopyalanirken


Bu islemlerden bazilari sunlardir.

&H550009: Hedef resmin tersi alinir.

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.

&H8800C6: Kaynak resim ile Hedef resim AND islemine tabi


tutlarak 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

Microsoft Visual Basic 6.0


End Sub

&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

Microsoft Visual Basic 6.0


ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Sub Form_Load() Show Picture2.ScaleMode = 3 Picture1.ScaleMode = 3 Picture2.FontBold = False If File1.ListCount > 0 Then 'icon varsa Click olayini meydana getir File1.ListIndex = 0 End If End Sub Sub Drive1_Change() ChDrive Drive1.Drive Dir1.Path = Drive1.Drive End Sub Sub Dir1_Change() File1.Path = Dir1.Path ChDir Dir1.Path If File1.ListCount > 0 Then 'icon varsa Click olayini meydana getir File1.ListIndex = 0 End If End Sub Sub File1_Click() On Local Error GoTo hata Dim iconpersutun, iconpersatir, t Dim X, Y, i, j, r, g, w, h, k, ha Static b, s, eskidizin If eskidizin <> File1.Path Then 'dizin degismisse eskidizin = File1.Path Else If File1.ListIndex >= b And File1.ListIndex <= s Then 'Seilen dosya ekranda halen varsa Picture1.Picture = LoadPicture(File1.FileName) Exit Sub End If End If w = Picture1.ScaleWidth h = Picture1.ScaleHeight iconpersutun = Int(Picture2.ScaleWidth / (w + 30)) iconpersatir = Int(Picture2.ScaleHeight / (h + Picture2.TextHeight("X"))) b = File1.TopIndex s = iconpersutun * iconpersatir + b - 1 If s > File1.ListCount - 1 Then s = File1.ListCount - 1 End If Picture2.Cls X = 15
771

Microsoft Visual Basic 6.0


Y = 0 k = b For i = b To s Picture1.Picture = LoadPicture(File1.List(i)) If ((i - b) Mod iconpersutun) = 0 And i <> b Then X = 15 k = i Y = Y + Picture1.ScaleHeight + Picture2.TextHeight("X") End If X = (i - k) * (w + 30) + 15 If ha = 1 Then 'hatali resim ha = 0 Picture2.CurrentX = X Picture2.CurrentY = Y + h / 2 Picture2.Print "HATALI" Else t = BitBlt(Picture2.hDC, X, Y, w, h, Picture1.hDC, 0, 0, &HCC0020) End If Picture2.CurrentX = X - 15 + ((w + 30) Picture2.TextWidth(File1.List(i))) / 2 'ortayi bul Picture2.CurrentY = Y + Picture1.ScaleHeight Picture2.Print File1.List(i) DoEvents Next X = 0 For i = 0 To Picture2.ScaleWidth X = X + w + 30 Picture2.Line (X, 0)-(X, (h + Picture2.TextHeight("X")) * iconpersatir) Next Y = 0 For i = 0 To Picture2.ScaleHeight Y = Y + h + Picture2.TextHeight("X") Picture2.Line (0, Y)-((w + 30) * iconpersutun, Y) Next Exit Sub hata: If Err = 481 Then ha = 1 'resim hatali Resume Next End Sub

772

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


nWidth, nHeight :Resim parasinin hedefteki yeni boyutlari

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

Microsoft Visual Basic 6.0


PrintScreen tusunu SendKeys komutu ile gnderemedigimiz iin PrintScreen tusuna kullanicinin basmasi gerekiyor. Ekran grntsn API kullanarak almak mnkndr. GetDC, GetDesktopHwnd ve BitBlt apileri ile ekran grnts alinabilir.

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.

Nesnelerin hDC numarasini grenmek


Declare Function getdc Lib "User32" (ByVal hWnd As Long) As Long
hWnd : hDC numarasi alinacak kontroln handle numarasi.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Dikkat ederseniz rnekte listbox iindeki her elemanin yksekligini bulabilmek iin formun TextHeight zelligini kullandik. Bunun iin nce formun fontsize zelligini stenin fontsize zelligine atadik ve formun TextHeight zelligi vasitasi ilede bu font byklgndeki bir harfin yksekligini pixel olarak bulduk. rnekteki resimler yapay yollarla olusturuldugu iin Formun Paint olayinda ve Listenin Click olayinda resimleri tekrar gsterecek kodlarida yazmaniz gerekir. Bu yntemi kullanarak istediginiz btn nesnelere resimler ekleyebilirsiniz

Mouse ile semek


Fare ile bir resmi seip tasimak iin gerekli islemler bir resim isleme programinda bulunmasi gereken zelliklerdir. DrawFocusRect API'si ile bir alani semek, InvertRect API'si ile de seili kismi ters evirmek mmkndr. Ayrica seili kismi tasimak iin de BitBlt kullanilabilir. Public Declare Function DrawFocusRect Lib "user32" Alias "DrawFocusRect" (ByVal hdc As Long, lpRect As RECT) As Long Hdc :Seilecek kismin bulundugu kontroln hDC numarasi. IpRect Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type DrawFocusRect ile seim yapildiktan sonra, seimin kaldirilmasi iin tekrar ayni API agrilmalidir. Public Declare Function InvertRect Lib "user32" Alias "InvertRect" (ByVal hdc As Long, lpRect As RECT) As Long IpRect parametresi ile belirlenmis alanin ters renkte gsterilmesi iin bu API kullanilir. Ikinci kez agrildiginda belirlenen alan orjinal renklerine dner. RNEK: rnek olarak farenin sol tusu ile seip, sag tusu ile tasima yapilabilecek bir program yazalim. rnegimiz iin formun Picture zelligi ile bir resim ykleyin ve asagidaki kodu yazin. Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type 777 :Seilecek kismin koordinatlari asagidaki yapi ile tanimlanmis bu parametre ile belirlenir.

Microsoft Visual Basic 6.0


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 Declare Function DrawFocusRect Lib "User32" (ByVal hdc As Long, IpRect As RECT) As Long Private Declare Function InvertRect Lib "User32" (ByVal hdc As Long, IpRect As RECT) As Long Dim MouseRect As RECT Private Sub Form_Load() ScaleMode = 3 'Pixel End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Daha nce seili olani kaldir. InvertRect hdc, MouseRect DrawFocusRect hdc, MouseRect If Button And 1 Then 'sol tus basildi ise MouseRect.Left = X MouseRect.Top = Y MouseRect.Right = X MouseRect.Bottom = Y End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Not (Button And 3) Then 'Sol veya sag tus birakildi ise MouseRect.Right = X MouseRect.Bottom = Y InvertRect hdc, MouseRect End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Static sonx, sony 'Sag tus ile tasi If Button And 2 Then 'zerinden getigin yeri rjinal hale evir. Call BitBlt(hdc, sonx, sony, MouseRect.Right MouseRect.Left, MouseRect.Bottom - MouseRect.Top, hdc, MouseRect.Left, MouseRect.Top, &H660046) 'XOR islemine tabi tut sonx = X sony = Y 778

Microsoft Visual Basic 6.0


Call BitBlt(hdc, X, Y, MouseRect.Right - MouseRect.Left, MouseRect.Bottom - MouseRect.Top, hdc, MouseRect.Left, MouseRect.Top, &H660046) 'XOR End If If Button And 1 Then 'Sol tus ile se DrawFocusRect hdc, MouseRect MouseRect.Right = X MouseRect.Bottom = Y DrawFocusRect hdc, MouseRect End If End Sub

Program Dosyalarindan ICON alma


Program dosyalan (EXE, DLL vb) iinde bir veya daha fazla sayida ikonlar bulunabilir. VB ancak ICO uzantili resim dosyalarindaki ikon dosyalarini alabilir. Ancak Extractlcon apisi ile istediginiz bir program dosyasindaki ikonlari alabilir ve Drwalcon apisi ile de herhangi bir resim kontrol iinde gsterebilirsiniz. Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long Hlnst :Formunuzun handle numarasini. lpszExeFileName :Ikonlarini almak istediginiz dosyanin yolunu ve adini. Nlconlndex :Almak istediginiz ikonun numarasini verin. Bir dosyada birden fazla ikon bulunabilir. Ilk ikonun numarasi O'dir. Eger numa rasini verdiginiz ikon dosyada yoksa geriye O degeri dner. Diger durumda ise geriye dnen deper ikonun handle numarasidir. Bu numarayi Drawlcon apisinde kullanarak o ikonu istediginiz yere izdirebilirsiniz.

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

Microsoft Visual Basic 6.0


Private Sub Dir1_Change() ChDir Dir1.Path File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() ChDrive Drive1.Drive Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click() Dim ih, dosya As String, i, y, x If Left(File1.Path, 1) = "\" Then dosya = File1.Path & File1.FileName Else dosya = File1.Path & "\" & File1.FileName End If Picture1.Picture = LoadPicture() 'nceki resimleri sil Do i = i + 1 ih = ExtractIcon(hWnd, dosya, i) ih = DrawIcon(Picture1.hdc, x, y, ih) x = x + 32 'her ikon 32 pixeldir 'eger bir satir dolarsa alt satira ge If x > Picture1.ScaleWidth Then x = 0 y = y + 32 End If Loop While ih <> 0 End Sub Private Sub Form_Load() File1.Pattern = "*.exe;*.dil" Picture1.ScaleMode = 3 'pixel ScaleMode = 3 'pixel 'ikonlarin tam sigmasi iin picturel boyutunu 32 nin kati yap Picture1.Width = Picture1.Width - (Picture1.Width Mod 32) End Sub

780

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Private Sub Form_Load() Dim x, uz uz = 2 * List1.Width / Screen.TwipsPerPixelX x = SendMessage(List1.hwnd, &H415, uz, 0) End Sub rnekte eklenen kaydirma ubugunun boyu listboxun genisliginin 2 kati olarak verilmistir. Bu deger listbox iindeki elemanlarin uzunluguna gre artirilip azaltilabilir. Ancak ListBox'un genisligine esit bir kaydirma ubugunun etkisi olmayacaktir.

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

Microsoft Visual Basic 6.0


Kendiliginden Ailan ComboBox
Bir ComboBox aktif oldugunda kendiliginden ailmasini saglayabilirsiniz. Bu islem iin ComboBox'un handle numarasini kullanarak o kontrole CB_SHOWDROPDOWN mesajini SendMessage APIsi ile gndermeniz yeterlidir. 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 Const CB_SHOWDROPDOWN = &H14F Private Sub Combo1_GotFocus() SendMessage Combo1.hWnd, CB_SHOWDROPDOWN / True, ByVal 0& End Sub

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

Microsoft Visual Basic 6.0


Sub Command1_Click() Dim r As rect Form1.ScaleMode = 3 'pixel r.left = left / Screen.TwipsPerPixelX + 5 r.top = top / Screen.TwipsPerPixelY + 22 r.bottom = (top + Height) / Screen.TwipsPerPixelY - 5 r.right = (left + Width) / Screen.TwipsPerPixelX - 5 'Fareyi Forml iine hapset ClipCursor r End Sub Private Sub Command2_Click() Dim r As rect r.left = 0 r.top = 0 r.bottom = Screen.Height / Screen.TwipsPerPixelX r.right = Screen.Width / Screen.TwipsPerPixelX 'Farenin yeni hareket alaninin ekranin tamami yap. ClipCursor r End Sub

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)

Yazici Hakkinda Daha ok Bilgi


Public Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long hDC :Hakkinda bilgi alinacak birimin hDC numarasi. Yazici hakkinda bilgi almak iin Printer.hDC, Ekran hakkinda bilgi almak iin Forml.hDC kullanabilirsiniz. nlndex :Hakkinda bilgi alinacak konu. Bu degere verilen sayiya gre geriye dnen degerler ve anlamlari syledir. nlndex=0 :Yazici srcsnn (veya hDCsi verilen birimin) versiyonu geri dner.

Dim ver ver = getDeviceCaps(Printer.hDC, 0) Print "Yazici versiyonu="; Print ((ver And &HFF00) / &H100) & "." & (ver And &HFF) 784

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


RNEK : GetDeviceCaps Option Explicit Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long Private Sub Form_Load() Show Dim X As String, ver, tek FontUnderline = True Print "Yazicinin:" FontUnderline = False X = String(255, 0) ver = GetDeviceCaps(Printer.hdc, 0) Print "Versiyonu:"; ((ver And &HFF00) / &H100) & "." & (ver And &HFF) Print "Tekonoloj i:"; tek = GetDeviceCaps(Printer.hdc, 2) Select Case tek Case 0: Print "Vektr Plotter" Case 1: Print "Raster Display" Case 2: Print "Raster printer" Case 3: Print "Raster Camera" Case 4: Print "Character Stream,PLP" Case 5: Print "Metafile, VDM" Case 6: Print "Display File" End Select Print "Yatay:"; GetDeviceCaps(Printer.hdc, 4) & " mm" Print "Dikey:"; GetDeviceCaps(Printer.hdc, 6) & " mm" Print "znrlk:"; GetDeviceCaps(Printer.hdc, 8) & "x" & GetDeviceCaps(Printer.hdc, 10) & " piksel" Print "Renk sayisi:"; GetDeviceCaps(Printer.hdc, 14) * 2 ^ GetDeviceCaps(Printer.hdc, 12) Print "Font sayisi:"; GetDeviceCaps(Printer.hdc, 22) FontUnderline = True Print "Ekranin:" FontUnderline = False X = String(255, 0) ver = GetDeviceCaps(hdc, 0) Print "Versiyonu:"; ((ver And &HFF00) / &H100) & "." & (ver And &HFF) Print "Tekonoloji:"; tek = GetDeviceCaps(hdc, 2) Select Case tek Case 0: Print "Vektr Plotter" Case 1: Print "Raster Display" Case 2: Print "Raster printer" Case 3: Print "Raster Camera" Case 4: Print "Character Str.eam, PLP" Case 5: Print "Metafile, VDM" Case 6: Print "Display File" End Select Print "Yatay:"; GetDeviceCaps(hdc, 4) & " mm" Print "Dikey:"; GetDeviceCaps(hdc, 6) & " mm" 786

Microsoft Visual Basic 6.0


Print "znrlk:"; GetDeviceCaps(hdc, 8) & "x"; GetDeviceCaps(hdc, 10) & " piksel" Print "Renk sayisi:"; GetDeviceCaps(hdc, 14) * 2 ^ GetDeviceCaps(hdc, 12) End Sub

INI Dosyasindan okuma


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 INI dosyalarindan bir degeri okumak iin GetPrivateProfileString APIsi kullanilir. IpFileName IpApplicationName IpKey Name IpDefault varsayilan deger. IpReturnedString nSize uzunlugu : Okunacak dosyanin ismi : INI dosyasindan okunacak blmn ismi : Bu blm altinda okunacak anahtar kelime : Anahtar kelime bulunamazsa geri dnecek : Geri dnecek degiskenin ismi : IpReturnedString degiskeninin

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

Microsoft Visual Basic 6.0


VB registry islemleri iin DeleteSetting, GetSetting, GetAllSetting ve SaveSetting fonksiyonlarini sunar ancak bu fonlsiyonlarla registry dosyasindaki btn ayarlara ulasmak mmkn degildir. Bu noktada bazi Windows API'leri kullanilarak registry islemleri kolayca yapilabilir. Registry dosyasi 6 ana basliktan olusur. Baslat-alistir menusu ile ailan pencereye REGEDIT yazarak Windowsun kayit dzenleyici programini alistirirsaniz bu ana basliklari grrsnz.

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

Microsoft Visual Basic 6.0


RegOpenKey apisi araciligi ile bir alt anahat ailir ve bu anahtara ait handle numarasi elde edilir. Elde edilen bu handle numarasi kullanilarak RegQueryValueEx apisi agrilir ve bu api araciligi ile istenen anahtarin degeri grenilir. Son olarak RegCloseKey apisi agrilarak ailan alt anahtar kapatilir. Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long hKey parametresine ailacak ana anahtarin (kayit dzenleyici programinda grdgmgz 6 ana basliktan birinin) degeri verilir. Bu degerler sunlardir: Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEYJJDCAL.MACHINE = &H80000002 Const HKEYJJSERS = &H80000003

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

Microsoft Visual Basic 6.0


Fonksiyondan geriye dnen deger 0 ise islem basarilmistir. Public Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long RegOpenKey araciligi ile ailan bir alt anahtar bu API ile kapatilir.

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

Microsoft Visual Basic 6.0


If RegOpenKey(HKEY_LOCAL_MACHINE, alt, hKey) = 0 Then IpData = 0& nSizeData = Len(IpData) If RegQueryValueEx(hKey, anahtar, 0&, 0&, IpData, nSizeData) = 0 Then If IpData <> 0 Then MsgBox ("Internet baglantisi aktif") Else MsgBox ("Internet baglantisi aktif degil") End If End If RegCloseKey (hKey) End If End Sub

Programinizi Task Listesinden Gizleme


Porgraminiz gizli yapsaniz bile kullanici Ctrl+Alt+Del tuslarina bastiginda ailacak listde programiniz gzkecektir. Bazi API'leri kullanarak programinizin tamamen grnmez olmasini saglayabilirsiniz. Programiniz gizlemek iin formun Load olayina asagidaki kodu, yine ikarken de normal hale getirmek iin Formun Unload olayina asagidaki kodu yazmaniz gerekir.

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

Microsoft Visual Basic 6.0


IfClipPrecision As Byte lfQuality As Byte IfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Private Sub Form_Load() Dim x As LOGFONT AutoRedraw = True ai = 270 boyut = 20 x.IfEscapement = ai * 10 x.IfHeight = (boyut * -20) / Screen.TwipsPerPixelY rFont = CreateFontIndirect(x) Call SelectObject(hdc, rFont) CurrentX = ScaleWidth / 2 CurrentY = 0 Print "Visual Basic" End Sub

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

Microsoft Visual Basic 6.0


IfUnderline As Byte IfStrikeOut As Byte IfCharSet As Byte IfOutPrecision As Byte IfClipPrecision As Byte lfQuality As Byte IfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Private Sub Form_Load() Dim x As LOGFONT Dim ai, boyut, rfont ScaleMode = 3 AutoRedraw = True Show For ai = 0 To 360 Step 10 'ai = (ai + 10) Mod 360 boyut = 20 x.IfEscapement = ai * 10 x.IfHeight = (boyut * -20) / Screen.TwipsPerPixelY rfont = CreateFontIndirect(x) Call SelectObject(hdc, rfont) CurrentX = ScaleWidth / 2 CurrentY = ScaleHeight / 2 Print "Visual Basic" Next End Sub

793

Microsoft Visual Basic 6.0


Bekletme
Hizli alisan program kodlarinizi (zellikle de dnglerde) yavaslatmak isteyebilirsiniz. Bu islemler iin VB'de herhangi bir komut bulunmaz ancak Windowsun Sleep apisi sistemi verdiginiz sre boyunca bekletir. Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) Buradaki dwMilliseconds parametresi ne kadar bekletilecegini belirler ve milisaniye cinsindendir. Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Form_Load() Show Dim i For i = 1 To 10 Sleep 500 DoEvents Print i Next End Sub

Duvar Kagidini Degistirme


Windows duvar kagidini degistirmek iin SystemParametersInfo apisinden yararlanilir. Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long Bu API bir ok ise yarar ancak duvar kagidini degistirmek iin asagidaki gibi kullanilir: call SystemParametersInfo (20,0,dosya,1) Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long Sub Form_Load() Call SystemParametersInfo(20, 0, "c:\windows\bulutlar.bmp", 1) End Sub

Windowsun alisma sresi


794

Microsoft Visual Basic 6.0


GetTickCount apisi araciligiyla windowsun ne kadar sredir aik oldugunu bulabilirsiniz. Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long RNEK: Windowsun ne kadar sredir alistigini srekli gsterecek bir kod yazalim. rnegimiz iin formunuza bir Timer yerlestirin ve Interval zelligini 1000 yapin. Option Explicit Private Declare Function GetTickCount Lib "kernel32" () As Long Private Sub Timer1_Timer() Dim t t = GetTickCount& Caption = (t \ 1440000) & ":" 'saat t = t Mod (60000 * 24) 'kalan dakikay bul Caption = Caption & (t \ 60000) & ":" 'dakika t = t Mod (60000) 'kalan saniyeyi bul Caption = Caption & (t \ 1000) 'saniye Label1.Caption = Caption End Sub

Belgeler Mensne Dokman Ekleme


Windows 9X ve st versiyonlarda Baslat menusu altinda Belglerim menusu oldugunu biliyorsunuz. Bu mende son kullandiginiz belgelerin bir listesi tutulur. Eger sizin programinizin kullandigi belgelerin de bu listeye eklenmesini isterseniz SHAddToRecentDocs apisini kullanabilirsiniz. Bu api ayni zamanda Belgelerim menusunu silmek iin de kullanilir. Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long, ByVal pv As String) uFlags parametresine 2 degeri verildikten sonra pv parametresine eklenecek dokmanin yolu ve adi girilir. Eger ikinci parametreye bos string verilirse belgeler menusu silinir. Option Explicit Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long, ByVal pv As String) Private Sub Form_Load() Call SHAddToRecentDocs(2, "c:\windows\bulutlar.bmp") End Sub

Dizin Seme Penceresi


795

Microsoft Visual Basic 6.0


SHBrovvseForFolder apisi araciligiyla Windows'un asagidaki dizin seme penceresi gsterilebilir ve SHGetPathFromlDList apisi ile de seilen dizin gsterilebilir. Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long IpfnCallback As Long IParam As Long iImage As Long End Type Const BIF_RETURNONLYFSDIRS = 1 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal IpStringl As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32" (Ipbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shel!32" (ByVal pidList As Long, ByVal IpBuffer As String) As Long Private Sub Form_Load() Dim yer As Integer, id As Long Dim yol As String, inf As BrowseInfo inf.hWndOwner = hWnd inf.lpszTitle = lstrcat("C:\", "") inf.ulFlags = BIF_RETURNONLYFSDIRS id = SHBrowseForFolder(inf) If id Then yol = String(260, 0) SHGetPathFromIDList id, yol CoTaskMemFree id yer = InStr(yol, vbNullChar) If yer Then yol = Left$(yol, yer - 1) End If End If MsgBox "Seilen dizin " & yol

796

Microsoft Visual Basic 6.0


End Sub

Bilgisayar Adini grenme


Denetim Masasinda Ag simgesini ift tiklayarak ailan pencerenin Tanimlama kismina geerseniz bilgisayarinizin ag zerindeki ismini grebilirsiniz. Bu adi grenebilmek iin GetComputerName apisini kullanabilirsiniz. Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal IpBuffer As String, nSize As Long) As Long Bilgisayarin adi IpBuffer parametresi ile verilen degiskende dner. Bu degiskenin uzunligu ise nSize parametresi ile bildirilir. Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal IpBuffer As String, nSize As Long) As Long Private Sub Form_Load() Dim s As String s = Space(255) Call GetComputerName(s, 255) MsgBox ("Bilgisayarin adi:" & s) End Sub

797

Microsoft Visual Basic 6.0


System Tray Uygulamalari
Windows grev ubugunun en saginda bulunan yere System Tray denir.

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

Microsoft Visual Basic 6.0


cbSize Hwnd uCallbackMessage :Tanimlanan degiskenin uzunlugu. :System Tray'a yerlestirilecek formun hWnd numarasi :System Tray'a yerlesmis icon zerinde kullanici bir islem yaptiginda agrilacak olay. Genellikle MouseMove olayi verilerek gerekli kod bu olaya yazilir. Bu parametreye &H200 degeri verilirse MouseMove olayi bildirilmis olur. :System Tray'da gsterilecek Icon bu zellikle belirlenir. Formun Icon zelligini buraya verebileceginiz gibi farkli ikonlar da verebilirsiniz. :Kullanici fare ile System Tray'daki ikon zerinde bir mddet durdugunda gsterilecek aiklama mesaji.

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

Microsoft Visual Basic 6.0


v Eger bazi parametreleri degistirirseniz, rnegin IpData parametresindeki Icon'u degistirirseniz bu degisikligin etkili olmasi iin Api'yi 1 parametresi ile tekrar agirmaniz gerekir. Private Sub Command1_Click() tray.szTip = "Bizim Uygulama alisiyor" + Chr(0) 'system trayi gncelle Shell_NotifyIcon 1, tray End Sub v Uygulamayi System Tray'dan kaldirmak istediginizde ilk parametreye 2 degerini vererek agirabilirsiniz. Private Sub Form_Unload(Cancel As Integer) 'system traydan kaldir Shell_NotifyIcon 2, tray End Sub v System Tray'a yerlesmis icon zerinde kullanici tarafindan bir islem yapilmak istendiginde MouseMove olayi meydana gelir. Bu olaydaki, normalde farenin tiklandigi koordinati gsteren X parametresi ze! bir amala kullanilir ve kullanicinin ne yaptigi programa bildirilir. MouseMove olayindaki X parametresi asagidaki degerlerden birini alabilir &H201 &H202 &H203 &H204 &H205 &H206 : Sol tusa basildi. : Sol tus birakildi. : ift tiklandi. : Sag tusa basildi. : Sag tus birakildi. : Sag tusla ift tiklandi.

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

Microsoft Visual Basic 6.0


'Sag tusla tiklandiginda yapilacak islem End Select End Sub rnegin kullanici System Tray'daki ikonu ift tikladiginda formun gsterilmesini ve sag fare tusuna bastiginda ise bir mennn gsterilmesini isteyebilirsiniz. v Eger ikonu sag tusla tiklandiginda bir men ailmasini istiyorsaniz nce Men Editr araciligi ile bir men tasarlamaniz ve MouseMove olayina yazacaginiz kodla bu meny aktif hale getirmeniz gerekir. Toois-Menu Editr araciligi ile mennz tasarlayin. Burada ana mennn ismini MnMenu verin. Normalde bu mennn men ubugunda gzkmemesi iin Visible zelliginin isaretini kaldirdik. Bylece men formda grlmeyecek, ancak yazacaginiz kodla aktif hale gelecektir. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case X Case &H203 'ift tiklandiginda formu gsterir Form1.Show Case &H205 'Sag tusla tiklandiginda meny gsterir PopupMenu MnMenu End Select End Sub Artik ikon ift tiklandiginda formumuz grlecek, sag tusla tiklandiginda ise tasarladigimiz men ailacaktir. Menlerin Click olaylarina gerekli kodu yazarak zerine dsen islemi yapmasini saglayabilirsiniz. v System Tray olarak tasarladiginiz formun simge durumuna kltlmesi durumunda grev ubuguna yerlesmemesini isterseniz Formun resize olayina yazacaginiz kodla formu gizleyebilirsiniz. Private Sub Form_Resize() If WindowState = 1 Then 'minimize edildiyse gizle Hide End If End Sub Bu durumda formu gsterecek kodda da bir degisiklik yaparak ikon ift tiklandiginda formun minimize durumunda ikarilmasi gerekir. Aksi takdirde form hep gilzi kalacaktir. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case X 801

Microsoft Visual Basic 6.0


Case &H203 'ift tiklandiginda formu gster Form1.Show Form1.WindowState = 0 'Normal boyutlarina getir. Case &H205 'Sag tusla tiklandiginda meny gster PopupMenu MnMenu End Select End Sub v System Tray olarak tasarladiginiz bir uygulamanin Task Listesinde grlme mesini isteyebilirsiniz. Bu durumda App nesnesinin TaskVisible zelligine False verebilirsiniz. Private Sub Form_Load() '................ 'Task listesinde gsterme App.TaskVisible = False End Sub RNEK: rnek olarak bir System Tray uygulamasi yazalim. rnegimizde Kulla nici en ok kullandigi programlari tanitabilsin ve biz bunlari bir menye ekleyelim. Kullanici System Tray'a yerlestirdigimiz simgeyi sag fare tusu ile tikladiginda belirledigi uygulamalarin listesi gelsin ve listeden setigi bir uygulama alistirilsin. rnegimiz iin asagidaki formu hazirlayin. Forma bir CommonDialog kontrol, iki text kutusu, iki Liste ve iki tane komut dgmesi yerlestirin.

Toois-Menu Editr araciligi ile a ilan asagidaki pencereden mennz tasarlayin.

802

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


CommonDialog1.DialogTitle = "Uygulamayi seiniz" CommonDialog1.CancelError = True CommonDialog1.Filter = "Programlar|*.exe;*.com;*.bat;*.pif|Btn Dosyalar!*.*||" CommonDialog1.FilterIndex = 0 CommonDialog1.ShowOpen Text1 = CommonDialog1.FileName Text2 = CommonDialog1.FileTitle Command2.SetFocus Exit Sub iptal: Exit Sub End Sub Private Sub Command2_Click() List1.AddItem Text1 List2.AddItem Text2 'Yeni men olustur Dim i i = List1.ListCount Load MnUygulama(i) MnUygulama(i).Visible = True MnUygulama(i).Caption = Text2 End Sub Private Sub Form_Load() Caption = "Hizli Baslat" tray.cbSize = Len(tray) tray.hwnd = Form1.hwnd tray.uID = vbNull tray.szTip = "Hizli Baslat " + Chr(0) tray.uCallbackMessage = &H200 tray.uFlags = 7 tray.hicon = Form1.Icon 'system traya ekle Shell_NotifyIcon 0, tray Hide 'formu gizle ScaleMode = 3 'pixel 'Task listesinde gsterme App.TaskVisible = False If Dir("liste.dat") <> "" Then 'liste varsa a Dim m, i i = 0 'Listeyi dosyaya kaydet Open "liste.dat" For Input As #1 While Not EOF(1) Input #1, m List1.AddItem m Input #1, m List2.AddItem m i = i + 1 Load MnUygulama(i) MnUygulama(i).Visible = True MnUygulama(i).Caption = m 804

Microsoft Visual Basic 6.0


Wend Close #1 End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single) Select Case x Case &H203 'ift tiklandiginda formu gster Form1.Show Form1.WindowState = 0 'Normal boyutlarina getir. Case &H205 'Sag tusla tiklandiginda meny gster PopupMenu MnMenu End Select End Sub Private Sub Form_Resize() If WindowState = 1 Then 'minimize edildiyse gizle Hide End If End Sub Private Sub Form_Unload(Cancel As Integer) 'system traydan kaldir Shell_NotifyIcon 2, tray Dim m, i 'Listeyi dosyaya kaydet Open "liste.dat" For Output As #1 For i = 0 To List1.ListCount - 1 m = List1.List(i) Write #1, m m = List2.List(i) Write #1, m Next Close #1 End Sub Private Sub MnAyarlar_Click() WindowState = 0 Show End Sub Private Sub cik_Click() Unload Me End Sub Private Sub MnUygulama_Click(Index As Integer) On Local Error GoTo program_hatasi Dim x x = Shell(List1.List(Index - 1), vbNormalFocus) Exit Sub program_hatasi: 805

Microsoft Visual Basic 6.0


MsgBox ("Program alistirilamadi: " & Error) Exit Sub End Sub Programi alistirdiginizda System Tray'a uygulamamiz yerlesecektir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0 KURULUM


Windows 2000 Server zerinde yklenmemis olma ihtimali ve Professional zerine kurulmasi gerektigi iin nasil oldugunu bilmek amaciyla kisaca IIS'in kurulumundan bahsetmek istiyorum: Start/Settings/Control Panel'e (Baslat/Ayarlar/Denetim Masasi) tiklayarak Control Panel'i (Denetim Masasi) aiyoruz. Control Panel'de Add Remove Programs (Program Ekle/Kaldir) linkine ift tiklayarak ailan pencerede "Add/Remove Windows Components"i (Windows Bilesenleri Ekle/Kaldir) tikliyoruz. Karsiniza gelecek olan yeni pencerede windows bilesenlerini grebilirsiniz :

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Visual InterDev RAD Remote Deployment Support : Bu bilesen yardimiyla server'iniz zerindeki dosyalara Visual InterDev ile uzaktan baglanilarak direkt zerinde alisilabilmesi iin gerekli destegi saglayabilirsiniz. World Wide Web Server : En nemli bilesen. Server'iniz zerinden web sitelerinin tm dnyaya yayinlanabilmesi iin gerekli servis. Ihtiyaciniza gre istediginiz bilesenleri setikten sonra sirasiyla OK ve Next tuslarina basiyoruz. Bylece IIS kurulumunu tamamlamis oluyoruz (Bu islem iin isletim sisteminin CD'sine ihtiyaciniz olacaktir). NOT : Windows 2000 Professional yukarida saydigimiz bilesenlerin tmn iermez. FTP Server, Frontpage 2000 Server Extensions ve SMTP Service bilesenlerini iermektedir.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

IIS'DE GENEL AYARLAR


IIS'e ulastiktan sonra hemen ayarlari yapmaya baslayalim : "Internet Information Services" linkine sag tiklayip, "Properties" seenegine basarak "Internet Information Services Properties" penceresini aiyoruz.

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

Microsoft Visual Basic 6.0


Master Properties : Bu blmde WWW Service (Web Sitesi Yayinlama Servisi) ve FTP Service (FTP Sitesi Yayinlama Servisi) hizmetlerinin tm sitelerinde geerli olacak ayarlar yapilabilir. Her bir servis ii " Edit " tusuna basilarak ailacak olan pencere yardimiyla ayarlar gereklestirilebilir. Bu ayarlardan daha sonra, Web sitesi ve FTP sitesi olusturmayi anlatacagim blmlerde bahsedecegim. Enable Banwidth Throttling : Server zerinde alisacak olan tm Web ve FTP siteleri iin geerli olacak bant genisligi sinirlamasi gereklestirilebilir. Bu tr genel bir kisitlama, bir veya birka adet sitenin yer aldigi kendinize ait bir server zerinde uygulanmaz. Daha ok birok sitenin barindirildigi hosting firmalari iin uygundur. Computer MIME Map : Bu blmde makina zerindeki tm Web siteleri iin geerli olacak ve Web siteleri tarafindan kullaniciya ulasmasi istenen dosya tipleri belirlenebilir.

813

Microsoft Visual Basic 6.0


Web siteleri zerinden ziyaretiye iletilmesi istenmeyen dosya tipleri de yine bu blmden kaldirilabilir. Server Extensions : Server Extensions blmnde Frontpage hazirlanmis Web siteleri iin ayarlar yapilabilir. Server Extensions ile

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

Microsoft Visual Basic 6.0


Options : Specify how mail should be sent : Gerektigi durumda e-mail tabanli web zelliklerini (e- mail form handler, ziyaretiye mail gndermek) kullanirken gerekli olan mail ayarlari "Settings" tusuna basilarak yapilabilir. Permissions : Log authoring actions : Bu kutucuk isaretlenerek Web sitesi zerinde yapilan islemlerin (dosya ekleme, silme gibi) kaydi (log) tutulabilir. Bu loglar _vti_log klasr altinda yer almaktadir. Manage Permissions Manually : Bu kutu isaretlenerek gvenlik ayarlarinin Frontpage Server Extensions yerine elle yapilmasi saglanabilir. Require SSL for authoring : Web sitesine zerinde dosya ekleme ve silme gibi islemlerin gereklestirilmesi sirasinda SSL ile gvenlik saglanmasi iin bu blm isaretlenmelidir. Allow authors to upload executables : Web sitesine CGI veya ASP gibi scriptlerin veya diger alistirilabilir dosyalarin atilip atilamayacagina bu blmden karar verilebilir.

IIS'TE YERALAN SERVISLER


IIS'e bir nceki makalemizde bahsettigimiz yollardan birisi ile ulasiyoruz.

815

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


grntlenen "Administration Web Site Properties" penceresinde yer alan "TCP Port" blmnden grenebilir ve degistirebilirsiniz.

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

Microsoft Visual Basic 6.0 WEB SITESI OLUSTURMA


Web sitesi olusturmak iin, Internet Information Services'a sag tiklayip ailan menden New >> Web Site 'a basiyoruz.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0 WEB SITESININ AYARLARI


Daha nce bahsettigimiz yntemlerden biri ile IIS'e ulasiyoruz. IIS'de daha nce olusturdugumuz "Test Sitesi" isimli web sitesinin zerine gelip sag tusa tiklayarak "Properties"e basiyoruz. Web Site

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

Microsoft Visual Basic 6.0


amalar iin degistirilir. Port degistirildiginde siteye http://www.siteadi.com: port_numarasi/ seklinde ulasilabilir. "Advanced" tusuna basara k ailan "Advanced Multiple Web Site Configuration" isimli pencerede "Mutiple identities for this Web Site" blmnde web sitesine birden fazla isim ile ulasilmasi saglanabilir. Ayni sekilde eger IIS'e SSL sertifikasi eklenmis ise "Multiple SSL identities for this Web Site" blmnden web sitesine SSL ile gvenli bir sekilde ulasilmasi saglanabilir. Connections Bu blmde "Unlimited" seili durumda ise web sitesine baglanan kisi sayisinda bir sinirlama olmaz. "Limited To:" seili durumda ise sadece belirtilen sayida ziyareti kabul edilecektir. Connection Timeout: Saniye cinsinden IIS'in aktif olmayan kullanicilar ile baglantiyi kesme zamani. Ziyareti tarafinda olusan bir hata sonucu dzgn bir sekilde kapatilamayan baglantilar belirtilen sre sonunda otomatik olarak kapatilir. Enable Logging Bu blm isaretleyerek web sitesine yapilan tm ziyaretlerin kaydini tutabilirsiniz. "Active log format" blmnden Microsoft IIS Log File Format, NCSA Log File Format, ODBC Logging ve W3C Extended Log File Format seeneklerinden istediginize uyani seerek kayitlari tutmaya baslayabilirsiniz. "Properties" tusuna basarak semis oldugunuz log tutma yntemi ile ilgili ayarlari yapabilirsiniz. Bylece hangi sayfalarin ne kadar ziyaret edildigini, web sitesinin en ok hangi saatlerde ziyaret edildigi vb. gibi bilgiler grenilebilir. Operators Bu blmde IIS Manager yardimiyla web sitesine ulasabilecek ve ayarlarina mdahele edebilecek kullanicilar tanimlanabilir. Varsayilan olarak "Administrators" grubuna dahil olan kullanicilar IIS Manager'dan web sitesinin ayarlarina mdahale edebilirler. IIS zerinde tanimli birden fazla siteden sadece bir tanesi iin yetki verilmek istenilen kullanici bu blmden eklenebilir. Performance Bu blmde adindan da anlasilabilecegi g ibi web sitesinin ne kadar performans ile alisabilecegi belirlenebilir. 822

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


sitesinin serveri isgrmez hale getirmesi nlenebilir. "Enforce limits" isaretlendiginde web sitesinin kisa sreler iin limiti asmasi saglanabilir. Limitlerin kontrol sresi 24 saattir. Her 24 saat sonrasinda limit asim kontrolleri sifirlanir. rnek : Bir web sitesi %10 CPU kullanimi ile sinirlanmissa ve 24 saat ierisinde, bu srenin %10'u olan 2.4 saatlik srede limitleri asmissa Event Log'a bir kayit eklenir. Web sitesi limitini % 150 asmis ise ve bu sre 3.6 saat toplamina erismis ise Event Log'a bir kayit yazilir ve limiti asmasini saglayan islemler engellenir. Web sitesi limiti % 200 asmis ve bu sre toplam 4.8 saat veya zeri olmus ise Event Log'a bir kayit yazilir ve Web sitesinin alismasi durdurulur. ISAPI Filters Ailimi Internet Server Application Programming Interface olan ISAPI Filtreleri, HTTP isteklerine cevap verebilen programlar olarak tanimlanabilir. ISAPI Filtreleri, DLL dosyalaridir. Add tusunu kullanarak ISAPI Filtresi eklenebilir, Remove tusu ile isaretlenen ISAPI Filtresi'ni silinebilir, Edit tusu ile ISAPI Filtresi ile ilgili dzenleme yapilabilir. Sol tarafta yer alan ok tuslarini kullanarak ISAPI Filtrelerinin alisma ncelikleri degistirilebilir.

824

Microsoft Visual Basic 6.0

Home Directory Bu blmde web sitesinine ait dosyalarin yer aldigi klasr bilgileri ve uygulama ayarlari ile ilgili blmler yer almaktadir.

825

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Network Directory Bu seenek "A share located on another computer" seenegi isaretli oldugunda grntlenir. "\\makina_adi\paylasim_adi" seklinde diger makinada yeralan dosyalara ulasilabilir. Redirect to "A redirection to a URL" seenegi isaretli oldugunda grntlenir. "http://www.xxx.com" seklinde baska bir siteye ynlendirme saglanir. Script source Access Bu seenek isaretlendiginde Read veya Write hakki verilmis olan kullanicilarin kaynak koduna ulasmasi saglanabilir. Normal sartlarda kullanilmasi tavsiye edilmez. Read Web sitesine baglanacak kullanicilarin dosyalari okumasi veya alistirabilmesi iin verilmesi gerekir. Write Web sitesine baglanan kullanicilarin dosyalar zerinde degisiklik yapabilmesine, yeni dosya upload edebilmesine olanak saglar. Normal sartlarda kullanilmasi tavsiye edilmez. Mutlaka write hakki verilmesi gerekiyorsa ilgili klasrde bu hakkin verilmesi daha sagliklidir. Directory browsing Bu seenek isaretlenerek web sitesine baglanan kullanicilarin ilgili klasrde varolan dosyalarin bir listesini grmesi saglanir. Ancak bu klasrde default.asp, default.html, index.asp gibi klasr adresi verildiginde alisan dosyalar varsa klasr ierigi grntlenemeyecektir. Gerekli olmadigi srece bu seenegin aktif olmasi tavsiye edilmez.

827

Microsoft Visual Basic 6.0


Log visits Bu seenek varsayilan olarak isaretlidir ve ziyaretilerin yaptiklari tm islemlerin kaydinin tutulmasini saglar. Index this source Bu seenek yardimiyla Microsoft Indexing Service kullanilarak full-text search yapilabilmesi saglanir. "A redirection to URL " seenegi isaretli oldugunda asagidaki seenekler grntlenecektir : The exact URL entered above Girilmis olan tam adrese gidilmesini saglar. Bylece web sitesinin ynlendirildigi sitede istenilen herhangi bir alt sayfadan baslanmasi saglanabilir. A directory below this one Bu seenek yardimiyla web sitesinin kendi ierisindeki herhangi bir alt klasre ynlendirilmesi saglanabilir. r : /yenisite yazildiginda www.test.com yazildiginda sayfa www.test.com/yenisite adresine ynlendirilecektir. A permanent redirection for this source Web sitesine baglanan kullaniciya ynlendirme ile ilgili bir mesaj gnderir. Application Application name Web sitesinin bulundugu uygulama blmnn adi. Execute Permissions Bu blmde alistirilabilecek dosya tipleri belirlenir. None isaretlendiginde sadece statik HTML sayfalari ve resim dosyalari grntlenebilir. Scripts only seenegi isaretlendiginde ASP gibi script dosyalarinin alistirilmasi saglanir. Scripts and Executables isaretli ise her trl dosya alistirilabilir hale gelir. Settings

828

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Applicaton Mappings Bu listede hangi uzantiya sahip olan dosyanin hangi DLL ile iliskili oldugu, hangi islemlerin gereklestirilebilecegi grntlenmektedir. Yapilmak istenilenlere gre bu listede ekleme, ikarma veya dzenleme islemleri yapilabilir. App Options Bu blmde ASP sayfalarinin nasil alisacagi ile ilgili ayarlar yapilabilir.

Enable session state Varsayilan olarak isaretlidir. Web sitesinde session ile ilgili islemlerin yapilabilmesini saglar.

830

Microsoft Visual Basic 6.0


Session timeout Dakika olarak session ile ilgili bilgilerin tutulacagi zamani gsterir. Varsayilan olarak 20 dakikadir. Amaca uygun olarak degistirilebilir. Bu sre script ierisinden Session.Timeout = xx olarak degistirilebilir.

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

Microsoft Visual Basic 6.0


App Debugging Bu blmde ASP sayfalarinin alismasi sirasinda olusan hatalarin ayiklanabilmesi ile ilgili islemler gereklestirilebilir.

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

Microsoft Visual Basic 6.0


Script Error Messages Bu blmde ASP kodlarinin alismasi sirasinda bir hata olustugunda ziyaretiye gsterilecek mesaj ile ilgili ayarlamalar yapilabilir. Send detailed ASP error messages to client Varsayilan olarak isaretlidir. Hata olustugunda hata ile ilgili tm aiklamalarin ziyaretinin browser'inda grnmesini saglar. Bu aiklamalar hatanin olustugu satir, hatanin olustugu ASP sayfasi, kod ile ilgili aiklama vs. ierir. Send text error message to client ASP kodlarinin alismasi sirasinda bir hata olustugunda istenilen mesajin ziyaretiye ulastirilmasini saglar. Bylece hata ile ilgili ayrintilar ziyaretiden gizlenmis olur. Documents Bu blmde Web sitesinin alistirilacak sayfalar belirle nebilir. alismasi sirasinda varsayilan olarak

833

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0 WEB SITESININ AYARLARI -II


Daha nce bahsettigimiz yntemlerden biri ile IIS'e ulasiyoruz. IIS'de daha nce olusturdugumuz "Test Sitesi" isimli web sitesinin zerine gelip sag tusa tiklayarak "Properties"e basiyoruz. Directory Security

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

Microsoft Visual Basic 6.0


isteniyorsa o zaman ayarlarin yapilmasi gerekmektedir. Ayarlari yapmak iin "Edit" tusuna basiyoruz.

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

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Basic authentication : IIS tarafinda yetkilendirme iin en ok kullanilan yntemdir. Girilen kullanici adi ve sifre bilgileri normal text halinde sifrelenmemis olarak gnderilir. Bu yetkilendirme daha ok internet zerinde kullanilir, intranet zerinde "Integrated Windows authentication" ile kullanmak daha mantiklidir. Digest authentication for Windows domain servers : Bu yntem IIS 5.0 ile beraber gelmektedir. Girilen kullanici adi ve sifre bilgileri zel bir algoritma ile sifrelenmis olarak gnderilir. Integrated Windows authentication : Windows'un normal kullanici islemleri sirasinda kullandigi yetkilendirme metodunu kullanir. Genelde intranette ve domain yapisi ieren networklerde kullanilir. Internet zerinden de kullanilabilir. Bu yntemin 2 kisitlamasi vardir : 1. Sadece Internet Explorer ile alisir, diger browser'lar ile alismaz. Internet Explorer versiyonu 2.0 ve zeri olmalidir. 2. Proxy sunuculari ve HTTP Proxy ile saglanan baglantilarla alismaz. IP address and domain name restrictions Bu blm yardimiyla web sitesine erismesi veya erismemesi istenilen IP adresleri, bilgisayarlar veya kullanicilar tanimlanabilir. Bu zellik sadece server sistemlerde alismaktadir. Edit tusuna basildiginda "IP Address and Domain Name Restrictions " isimli pencere grntlenir.

838

Microsoft Visual Basic 6.0


Pencerede grlecegi gibi varsayilan olarak web sitesi herkese aiktir. Granted Access isaretli iken Add tusu yardimiyla IP adresi, IP adres grubu veya domain adi eklenirse; eklenen bilgilere sahip kullanicilar web sitesine erisemeyecektir. Eger Denied Access isaretli duruma getirilir ise o zaman da sadece listeye eklenmis olan kullanicilar web sitesine erisebilecektir. Secure communications Bu blm, gvenli baglantilarin gerektigi durumlarda (r: internet bankaciligi, sirkete ait gizli bilgilere erisilmesi vb.) kullanilir. SSL sertifikalari bu blm yardimiyla eklenerek gvenli baglanti kurulmasi saglanir. HTTP Headers

839

Microsoft Visual Basic 6.0


Enable Content Expiration Bu blmde Enable Content Expiration blmn isaretlenerek web sitesindeki tm sayfalarin belirli bir sre sonra expire (sresi dolmasi) olmasi saglanabilir. Bu zellik daha ok srekli degisen sayfalar iin kullanilabilir. Custom HTTP Headers Adindan da anlasilabilecegi gibi web sitesine zel olarak bilgiler tanimlanabilir. Bu tanimlanan bilgiler server'dan client'a gnderilir. Content Rating Web sitesinde barindirilan zel ierik (yetiskin vs.) ve seviyesi tanimlanarak bu bilgiler HTTP header bilgileriyle client'a gnderilir. Bylece kisilerin istenmeyen ierige erismesi engellenebilir. MIME Map Web sitesinde eklenebilir. Custom Errors kullanilmak istenilen farkli dosya tipleri bu blmden

840

Microsoft Visual Basic 6.0


Bu blmde web sitesinde olusan hatalar sonucunda kullaniciya gsterilen sayfalar degistirilebilir. Bylece kullaniciya istenilen sekilde mesajlar verilebilir. Degistirilmek istenilen mesaja ait link seili hale getirilerek Edit Properties'e basildiginda Error Mapping Properties isimli pencere grntlenir.

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

Microsoft Visual Basic 6.0


Server Extensions

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

Microsoft Visual Basic 6.0 PC TAKIP PROGRAMI


MDI FORM

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

Microsoft Visual Basic 6.0


Form1.Caption = "Blm Tanimlama" Form1.Label1.Caption = "Olusturulmak istenen Blm adini giriniz..!" End Sub Private Sub Bolumad1_Click() On Error GoTo hata SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Form6.Show hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub Private Sub cikis_Click() End End Sub Private Sub MDIForm_Load() Dim i As Integer For i = 1 To 5 StatusBar1.Panels.Add Next i With StatusBar1.Panels .Item(1).AutoSize = sbrContents .Item(1).Text = "PC Takip Programi ZINNET KALA" .Item(1).MinWidth = 7000 .Item(2).Style = sbrCaps .Item(2).MinWidth = 600 .Item(3).Style = sbrNum .Item(3).MinWidth = 600 .Item(4).Style = sbrIns .Item(4).MinWidth = 600 .Item(5).Style = sbrTime .Item(5).MinWidth = 600 .Item(6).Style = sbrDate End With End Sub Private Sub parca_Click() On Error GoTo hata 844

Microsoft Visual Basic 6.0


SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast If Data1.Recordset.RecordCount <= 0 Then MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" Exit Sub End If Form2.Show hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub Private Sub parcabilgisi0_Click() On Error GoTo hata SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Form5.Text1.Text = 1 hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub Private Sub parcabilgisi1_Click() On Error GoTo hata SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Form5.Text1.Text = 2 hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub 845

Microsoft Visual Basic 6.0


Private Sub Parcafiyati_Click() On Error GoTo hata SQL = "select * from bolum" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Form4.Text3.Text = 0 hata: Select Case Err Case Is = 3021 MsgBox "Tanimli Blm olmadigi iin giris yapilamaz.!" End Select End Sub Private Sub pccc_Click() On Error GoTo hata tar = InputBox("Rapor alinmak istenen tarihi giriniz.!", "PC satis raporu", "##.##.####") SQL = "select * from satis where tarih='" & tar & "'" Data4.RecordSource = SQL Data4.Refresh Data4.Recordset.MoveLast Form7.Text1.Text = tar Form7.Text2.Text = 2 hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub pparcca_Click() On Error GoTo hata tar = InputBox("Rapor alinmak istenen tarihi giriniz.!", "Para satis raporu", "##.##.####") SQL = "select * from parca where tarih='" & tar & "'" Data3.RecordSource = SQL Data3.Refresh Data3.Recordset.MoveLast Form7.Text1.Text = tar Form7.Text2.Text = 1 hata: Select Case Err Case Is = 3021 846

Microsoft Visual Basic 6.0


End Select End Sub Private Sub Satisrap_Click() Form7.Show End Sub

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

Microsoft Visual Basic 6.0


Case Is = 3021 bolum_kayit End Select End Sub Private Sub CommandButton2_Click() Unload Me End Sub Private Sub Form_Activate() Form1.Left = 3390 Form1.Top = 2475 Text1.SetFocus End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Text1.Text <> "" Then CommandButton1.SetFocus End Sub FORM 2

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

Microsoft Visual Basic 6.0


SQL = "select * from kur where tarih='" & Date & "'" Data5.RecordSource = SQL Data5.Refresh Data5.Recordset.MoveLast MaskEdBox7.Text = Data5.Recordset.dolar MaskEdBox8.Text = Data5.Recordset.mark End Sub Private Sub kayt() Data4.Recordset.AddNew Data4.Recordset.bolum = Combo1.Text Data4.Recordset.firma = Combo2.Text Data4.Recordset.model = Text1.Text Data4.Recordset.doviz1 = MaskEdBox4.FormattedText If Option1.Value = True Then Data4.Recordset.kur = 1 If Option2.Value = True Then Data4.Recordset.kur = 0 Data4.Recordset.Update MsgBox "Kayit Tamamlandi..!" temizle Combo1.SetFocus End Sub Private Sub temizle() Combo1.Clear Combo2.Clear Text1.Text = "" MaskEdBox4.Text = "" combo1_doldur Combo1_LostFocus End Sub 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 849

Microsoft Visual Basic 6.0


Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo1.Text <> "" Then If Text5.Text = 0 Then Combo2.Clear Combo2.SetFocus End If End Sub Private Sub Combo1_LostFocus() On Error GoTo hata If Combo1.Text = "" Or Combo1.Text = " " Then Combo1.SetFocus Exit Sub End If SQL = "select distinct firma from parca where bolum='" & Combo1.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount If Text5.Text = 0 Then Combo2.Clear Data2.Recordset.MoveFirst For i = 0 To a Combo2.AddItem Data2.Recordset.firma Data2.Recordset.MoveNext Next i hata: Select Case Err Case Is = 6148 End Select End Sub Private Sub Combo2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo2.Text <> "" Then If Text5.Text = 0 Then Text1.Text = "" Text1.SetFocus End If End Sub Private Sub Form_Activate() Option1.Value = True kur_sapta combo1_doldur If Form2.Text5.Text = 1 Then Combo1.Text = Text6.Text Combo2.Text = Text7.Text Text1.Text = Text8.Text SQL = "select * from parca where bolum='" & Text6.Text & "' and firma='" & Text7.Text & "' and model='" & Text8.Text & "'" 850

Microsoft Visual Basic 6.0


Data6.RecordSource = SQL Data6.Refresh Data6.Recordset.MoveLast If Data6.Recordset.kur = 1 Then Option1.Value = True Else Option2.Value = True End If MaskEdBox4.Text = Data6.Recordset.doviz1 End If Combo1.SetFocus End Sub Private Sub MaskEdBox4_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Text5.Text = 0 Then kayt If KeyAscii = 13 And Text5.Text = 1 Then kaytdeg End Sub Private Sub Option1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then MaskEdBox4.SetFocus End Sub Private Sub Option2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then MaskEdBox4.SetFocus End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Text1.Text <> "" Then Option1.SetFocus End Sub Private Sub Text1_LostFocus() On Error GoTo hata If Text5.Text = 0 Then SQL = "select * from parca where bolum='" & Combo1.Text & "' and firma='" & Combo2.Text & "' and model='" & Text1.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast MsgBox "Ltfen girilen bilgilere dikkat edini. Bu kayit var.!" Combo1.SetFocus Exit Sub End If hata: Select Case Err Case Is = 3021 Option1.SetFocus End Select End Sub 851

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Data1.Recordset.Update MDIForm1.Show End If Unload Form3 End If End Sub Private Sub Form_Activate() If Date = "28.02.2000" Or Date = "29.02.2000" Or Date = "01.03.2000" Or Date = "02.03.2000" Then MsgBox "Programin kullanim sresi dolmustur.Gemis olsun.", 32 + 256, "Bitti" End End If tarih_kontrol MaskEdBox1.SetFocus End Sub Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then MaskEdBox2.SetFocus End Sub Private Sub MaskEdBox2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then CommandButton1.SetFocus End Sub

FORM 4

853

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Printer.Print " Alicinin Adi Soyadi veya Unvani : "; Text1.Text Printer.Print Printer.FontSize = 8 Printer.Print " NO BLM FIRMA MODEL FIYATI" Printer.Print " -----------------------------------------------------------------------------------" j = 2.5 Data4.Recordset.MoveFirst For i = 1 To qq h = h + 1 Printer.CurrentX = 2.6 * 567 Printer.CurrentY = j * 567 Printer.Print h Printer.CurrentX = 3.4 * 567 Printer.CurrentY = j * 567 Printer.Print Data4.Recordset("tur") Printer.CurrentX = 7.6 * 567 Printer.CurrentY = j * 567 Printer.Print Data4.Recordset("firma") Printer.CurrentX = 11.5 * 567 Printer.CurrentY = j * 567 Printer.Print Data4.Recordset("model") Printer.CurrentX = 15.1 * 567 Printer.CurrentY = j * 567 Printer.Print Data4.Recordset("tl") Data4.Recordset.MoveNext j = j + 0.4 If j >= 27 Then GoTo m End If Next i Printer.FontBold = True Printer.Print "" Printer.Print " Toplam Tutar............: "; MaskEdBox5.FormattedText Printer.FontBold = False Printer.EndDoc hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub aktarma_bosalt() On Error GoTo hata 855

Microsoft Visual Basic 6.0


SQL = "select * from aktarma" Data4.RecordSource = SQL Data4.Refresh Data4.Recordset.MoveLast sayi = Data4.Recordset.RecordCount Data4.Recordset.MoveFirst For i = 1 To sayi Data4.Recordset.Delete Data4.Recordset.MoveNext Next i Combo1.SetFocus hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub kur_sapta() SQL = "select * from kur where tarih='" & Date & "'" Data3.RecordSource = SQL Data3.Refresh Data3.Recordset.MoveLast MaskEdBox3.Text = Data3.Recordset.dolar MaskEdBox4.Text = Data3.Recordset.mark End Sub 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 Combo21_Change() End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) 856

Microsoft Visual Basic 6.0


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 Next i hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Combo2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo2.Text <> "" Then Combo3.Clear Combo3.SetFocus End If End Sub Private Sub Combo2_LostFocus() On Error GoTo hata SQL = "select model from parca where bolum='" & Combo1.Text & "' and firma='" & Combo2.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Combo3.Clear Data2.Recordset.MoveFirst For i = 0 To a Combo3.AddItem Data2.Recordset.model Data2.Recordset.MoveNext Next i 857

Microsoft Visual Basic 6.0


hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Combo3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo3.Text <> "" Then CommandButton1.Enabled = True CommandButton1.SetFocus End If End Sub Private Sub Combo3_LostFocus() On Error GoTo hata SQL = "select kur,doviz1 from parca where bolum='" & Combo1.Text & "' and firma='" & Combo2.Text & "' and model='" & Combo3.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast Text2.Text = Data2.Recordset.kur MaskEdBox1.Text = Data2.Recordset.doviz1 If Text2.Text = 1 Then MaskEdBox2.Text = MaskEdBox1.Text * MaskEdBox3.Text Label1.Caption = "Dolar karsiligi" Else MaskEdBox2.Text = MaskEdBox1.Text * MaskEdBox4.Text Label1.Caption = "Euro karsiligi" End If hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub CommandButton1_Click() Data4.Recordset.AddNew Data4.Recordset.tur = Combo1.Text Data4.Recordset.firma = Combo2.Text Data4.Recordset.model = Combo3.Text Data4.Recordset.doviz = MaskEdBox1.FormattedText Data4.Recordset.tl = MaskEdBox2.FormattedText Data4.Recordset.Update Data4.Refresh Combo2.Clear Combo3.Clear 858

Microsoft Visual Basic 6.0


MaskEdBox1.Text = "" MaskEdBox5.Text = Val(MaskEdBox5.Text) + Val(MaskEdBox2.Text) MaskEdBox2.Text = "" CommandButton2.Enabled = True Combo1.SetFocus End Sub Private Sub CommandButton2_Click() On Error GoTo hata SQL = "select * from aktarma" Data4.RecordSource = SQL Data4.Refresh Data4.Recordset.MoveLast If Data4.Recordset.RecordCount > 15 Then MsgBox "Fazla sayida para satildi..! Ltfen dzeltiniz..!" Exit Sub End If sor = MsgBox("Satis yapmak istediginize emin misiniz?", 4 + 32 + 256, "Onay") If sor = 6 Then ad = InputBox("Alicini Adi Soyadi veya nvani", "Alici") Text1.Text = ad yazdir If Text3.Text = 1 Then Data5.Recordset.AddNew Data5.Recordset.tarih = Date Data5.Recordset.alici = ad Data5.Recordset.tl_toplam = MaskEdBox5.FormattedText K = 2 For i = 0 To 14 DBGrid1.Row = i For j = 0 To 4 K = K + 1 DBGrid1.Col = j Data5.Recordset(K) = DBGrid1() Next j Next i Data5.Recordset.Update aktarma_bosalt Else Data6.Recordset.AddNew Data6.Recordset.tarih = Date Data6.Recordset.alici = ad Data6.Recordset.tl_toplam = MaskEdBox5.FormattedText K = 2 For i = 0 To 14 DBGrid1.Row = i For j = 0 To 4 859

Microsoft Visual Basic 6.0


K = K + 1 DBGrid1.Col = j Data6.Recordset(K) = DBGrid1() Next j Next i Data6.Recordset.Update aktarma_bosalt End If End If hata: Select Case Err Case Is = 6148 If Text3.Text = 1 Then Data5.Recordset.Update aktarma_bosalt Else Data6.Recordset.Update aktarma_bosalt End If MaskEdBox5.Text = "" End Select End Sub Private Sub DBGrid1_DblClick() xads = Data4.Recordset("tur") tlfiyat = Data4.Recordset("tl") cevap = MsgBox("Bu kaydi silmek istediginize eminmisiniz?", 4 + 32, "Dikkat") If cevap = 6 Then Data4.Recordset.Delete MaskEdBox5.Text = MaskEdBox5.Text - tlfiyat Exit Sub End If End Sub Private Sub Form_Activate() kur_sapta combo1_doldur Combo1.SetFocus End Sub Private Sub Form_Unload(Cancel As Integer) aktarma_bosalt End Sub FORM 5

860

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Next i hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Combo2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo2.Text <> "" Then Combo3.Clear Combo3.SetFocus End If End Sub Private Sub Combo2_LostFocus() On Error GoTo hata SQL = "select model from parca where bolum='" & Combo1.Text & "' and firma='" & Combo2.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast a = Data2.Recordset.RecordCount Combo3.Clear Data2.Recordset.MoveFirst For i = 0 To a Combo3.AddItem Data2.Recordset.model Data2.Recordset.MoveNext Next i hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Combo3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And Combo3.Text <> "" Then If Text1.Text = 1 Then CommandButton1.Enabled = True CommandButton1.SetFocus End If If Text1.Text = 2 Then CommandButton2.Enabled = True CommandButton2.SetFocus End If End If End Sub 862

Microsoft Visual Basic 6.0


Private Sub CommandButton1_Click() Form2.Text6.Text = Form5.Combo1.Text Form2.Text7.Text = Form5.Combo2.Text Form2.Text8.Text = Form5.Combo3.Text Form2.Text5.Text = 1 Unload Form5 End Sub Private Sub CommandButton2_Click() On Error GoTo hata SQL = "select * from parca where bolum='" & Combo1.Text & "' and firma='" & Combo2.Text & "' and model='" & Combo3.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast Data2.Recordset.Delete MsgBox (Combo1.Text & " " & Combo2.Text & " " & Combo3.Text & " silindi.!") Unload Me hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub Form_Activate() If Text1.Text = 1 Then Form5.Caption = "Degisiklik" CommandButton1.Visible = True CommandButton2.Visible = False End If If Text1.Text = 2 Then Form5.Caption = "Silme" CommandButton1.Visible = False CommandButton2.Visible = True End If combo1_doldur Combo1.SetFocus End Sub

FORM 6

863

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


End Sub

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

Microsoft Visual Basic 6.0


Data3.Refresh Data3.Recordset.MoveLast sayi = Data3.Recordset.RecordCount Data3.Recordset.MoveFirst For i = 1 To sayi Data3.Recordset.Delete Data3.Recordset.MoveNext Next i Text2.Text = "" MaskEdBox2.Text = "" Data3.Refresh Data3.Recordset.MoveFirst hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub yazdir() On Error GoTo hata SQL = "select * from aktarma" Data3.RecordSource = SQL Data3.Refresh Data3.Recordset.MoveLast qq = Data3.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 Printer.Print " Alicinin Adi Soyadi veya Unvani : "; Text2.Text Printer.Print Printer.FontSize = 8 Printer.Print " NO BLM FIRMA MODEL FIYATI" 866

Microsoft Visual Basic 6.0


Printer.Print " -----------------------------------------------------------------------------------" j = 2.5 Data3.Recordset.MoveFirst For i = 1 To qq h = h + 1 Printer.CurrentX = 2.6 * 567 Printer.CurrentY = j * 567 Printer.Print h Printer.CurrentX = 3.4 * 567 Printer.CurrentY = j * 567 Printer.Print Data3.Recordset("tur") Printer.CurrentX = 7.6 * 567 Printer.CurrentY = j * 567 Printer.Print Data3.Recordset("firma") Printer.CurrentX = 11.5 * 567 Printer.CurrentY = j * 567 Printer.Print Data3.Recordset("model") Printer.CurrentX = 15.1 * 567 Printer.CurrentY = j * 567 Printer.Print Data3.Recordset("tl") Data3.Recordset.MoveNext j = j + 0.4 If j >= 27 Then GoTo m End If Next i Printer.FontBold = True Printer.Print "" Printer.Print " Toplam Tutar............: "; MaskEdBox2.FormattedText Printer.FontBold = False Printer.EndDoc hata: Select Case Err Case Is = 3021 End Select End Sub Private Sub aktarma_doldur1() On Error GoTo hata SQL = "select * from parca where alici='" & Text2.Text & "' and tl_toplam='" & MaskEdBox2.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast For i = 3 To 73 Step 5 Data3.Recordset.AddNew Data3.Recordset.tur = Data2.Recordset(i) 867

Microsoft Visual Basic 6.0


Data3.Recordset.firma = Data2.Recordset(i + 1) Data3.Recordset.doviz = Data2.Recordset(i + 3) Data3.Recordset.model = Data2.Recordset(i + 2) Data3.Recordset.tl = Data2.Recordset(i + 4) Data3.Recordset.Update Data3.Refresh Next i hata: Select Case Err Case Is = 3021 Data3.Refresh End Select End Sub Private Sub aktarma_doldur() On Error GoTo hata SQL = "select * from satis where alici='" & tl_toplam='" & MaskEdBox2.Text & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast For i = 3 To 78 Step 5 Data3.Recordset.AddNew Data3.Recordset.tur = Data1.Recordset(i) Data3.Recordset.firma = Data1.Recordset(i + Data3.Recordset.doviz = Data1.Recordset(i + Data3.Recordset.model = Data1.Recordset(i + Data3.Recordset.tl = Data1.Recordset(i + 4) Data3.Recordset.Update Data3.Refresh Next i hata: Select Case Err Case Is = 3021 End Select End Sub Text2.Text & "' and

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

Microsoft Visual Basic 6.0


End Sub Private Sub doldur() On Error GoTo hata SQL = "select * from satis where tarih='" & MaskEdBox1.Text & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveFirst hata: Select Case Err Case Is = 3021 Text1.Text = 1 End Select End Sub Private Sub CommandButton1_Click() yazdir aktarma_bosalt Form7.Height = 3285 Form7.Width = 10500 End Sub Private Sub CommandButton2_Click() sor = MsgBox("Bu kaydi silmek istediginize emin misiniz?", 4 + 32 + 256, "Silme") If sor = 6 Then If Text3.Text = 1 Then SQL = "select * from satis where alici='" & Text2.Text & "' and tl_toplam='" & MaskEdBox2.Text & "' and tarih='" & MaskEdBox1.Text & "'" Data1.RecordSource = SQL Data1.Refresh Data1.Recordset.MoveLast Data1.Recordset.Delete doldur MsgBox "Kayit Silindi.!" Else SQL = "select * from parca where alici='" & Text2.Text & "' and tl_toplam='" & MaskEdBox2.Text & "' and tarih='" & MaskEdBox1.Text & "'" Data2.RecordSource = SQL Data2.Refresh Data2.Recordset.MoveLast Data2.Recordset.Delete doldur1 MsgBox "Kayit Silindi.!" End If aktarma_bosalt 869

Microsoft Visual Basic 6.0


Form7.Height = 3285 Form7.Width = 10500 End If End Sub Private Sub CommandButton4_Click() SQL = "select * from aktarma" Data3.RecordSource = SQL Data3.Refresh Data3.Recordset.MoveLast qq = Data3.Recordset.RecordCount Data3.Recordset.MoveFirst For i = 1 To qq Data3.Recordset.Delete Data3.Recordset.MoveNext Next i End Sub Private Sub DBGrid1_DblClick() aktarma_bosalt Text2.Text = Data1.Recordset("alici") MaskEdBox2.Text = Data1.Recordset("tl_toplam") Text3.Text = 1 aktarma_doldur doldur dbgasaal Form7.Height = 7350 Form7.Width = 10500 End Sub Private Sub DBGrid2_DblClick() aktarma_bosalt Text2.Text = Data2.Recordset("alici") MaskEdBox2.Text = Data2.Recordset("tl_toplam") Text3.Text = 0 aktarma_doldur1 doldur1 dbgasaal Form7.Height = 7350 Form7.Width = 10500 End Sub Private Sub Form_Unload(Cancel As Integer) aktarma_bosalt End Sub Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 And MaskEdBox1.Text <> "" Then 870

Microsoft Visual Basic 6.0


doldur doldur1 If Text1.Text = 0 Or Text1.Text = 1 Then Form7.Height = 3285 Form7.Width = 10500 MaskEdBox1.SetFocus Else Form7.Height = 900 Form7.Width = 3180 Text1.Text = 0 End If End If End Sub

ADRES VE TELEFON DEFTERI PROGRAMI


FORM 1

871

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Private Sub Form_Activate() Text4.SetFocus End Sub Private Sub Form_Load() Image2.Picture = Image1(0).Picture If YeniKayit Then Label14.Caption = "Kisi Hakkindaki Kisisel Bilgiyi Bu Kisma Girin" Else Label14.Caption = "'" & Form1.Caption & "'" & " Hakkindaki Kisisel Bilgiyi Bu Kisma Girin" End If End Sub Private Sub Form_Unload(Cancel As Integer) YeniKayit = False End Sub Sub verikaydet() Dim X As ListItem, C As String On Error GoTo son Select Case Combo1.ListIndex Case 0: C = "n" Case 1: C = "Bayan" Case 2: C = "Erkek" End Select RcSet![adisoyadi] = Form1.Text4 RcSet![fax] = Form1.Text2(2) RcSet![cins] = C RcSet![dogumtarihi] = Form1.Text3(0) RcSet![evtelefonu2] = Form1.Text1(2) RcSet![emailadresi] = Form1.Text3(1) RcSet![evtelefonu1] = Form1.Text1(1) RcSet![evadresi] = Form1.Text1(0) RcSet![postakodu] = Form1.Text1(3) RcSet![semt] = Form1.Text1(4) RcSet![Il] = Form1.Text1(5) RcSet![Ilce] = Form1.Text1(6) RcSet![issemt] = Form1.Text2(4) RcSet![Istelefonu2] = Form1.Text2(1) RcSet![IsAdresi] = Form1.Text2(3) RcSet![isil] = Form1.Text2(5) RcSet![isilce] = Form1.Text2(6) RcSet![Istelefonu1] = Form1.Text2(0) RcSet![Not] = Form1.Text3(2) RcSet.Update If YeniKayit = True Then Select Case Combo1.ListIndex 873

Microsoft Visual Basic 6.0


Case 0: Set X = Form4.ListView1.ListItems.Add(, , Form1.Text4.Text, "no", "no") Case 1: Set X = Form4.ListView1.ListItems.Add(, , Form1.Text4.Text, "bayan", "bayan") Case 2: Set X = Form4.ListView1.ListItems.Add(, , Form1.Text4.Text, "erkek", "erkek") End Select If Not IsNull(Text1(1)) Then X.SubItems(1) = Text1(1) If Not IsNull(Text1(2)) Then X.SubItems(2) = Text1(2) If Not IsNull(Text3(1)) Then X.SubItems(3) = Text3(1) Else 'yeni kayit diilse Select Case Combo1.ListIndex Case 2 Form4.ListView1.ListItems(no).Icon = "erkek" Form4.ListView1.ListItems(no).SmallIcon = "erkek" Case 1 Form4.ListView1.ListItems(no).Icon = "bayan" Form4.ListView1.ListItems(no).SmallIcon = "bayan" Case 0 Form4.ListView1.ListItems(no).Icon = "no" Form4.ListView1.ListItems(no).SmallIcon = "no" End Select Form4.ListView1.ListItems(no).Text = Text4 Form4.ListView1.ListItems(no).SubItems(1) = Text1(1) Form4.ListView1.ListItems(no).SubItems(2) = Text1(2) Form4.ListView1.ListItems(no).SubItems(3) = Text3(1) End If YeniKayit = False Unload Me Set Form1 = Nothing Exit Sub son: If Err = 3315 Then MsgBox ("'Adi Soyadi' Alani Bos Birakilamaz"), 16, "Hata" Text4.SetFocus End If If Err = 3022 Then MsgBox ("Ayni Ada ve Soyada Sahip Baska bir Kayit Daha Var ltfen Bu kisimdaki bilgiyi Tekrar girin"), 16, "Uyari !" Text4.SelStart = 0 Text4.SelLength = Len(Text4) Text4.SetFocus Else Clipboard.SetText Str(Err) MsgBox Err.Description, vbCritical, "Hata" RcSet.CancelUpdate End If 874

Microsoft Visual Basic 6.0


End Sub Private Sub TabStrip1_Click() Select Case TabStrip1.SelectedItem.Index Case 1 Frame1.Visible = True Frame2.Visible = False Frame3.Visible = False Frame4.Visible = False Frame1.Left = 180 If Caption <> "Yeni Kayit" Then Label14.Caption = "'" & Caption & "'" & " Hakkindaki Kisisel Bilgileri Bu Kisma Girin" Else Label14.Caption = "Kisi Hakkindaki Kisisel Bilgileri Bu Kisma Girin" End If Image2.Picture = Image1(0).Picture Case 2 Frame1.Visible = False Frame2.Visible = True Frame3.Visible = False Frame4.Visible = False Frame2.Left = 180 Image2.Picture = Image1(1).Picture If Caption <> "Yeni Kayit" Then Label14.Caption = "'" & Caption & "'" & " Hakkindaki evle ilgili Bilgileri Bu Kisma Girin" Else Label14.Caption = "Kisi Hakkindaki evle ilgili Bilgileri Bu Kisma Girin" End If For i = 0 To 3 Image1(0).Visible = False Next Image1(1).Visible = True Case 3 Frame1.Visible = False Frame2.Visible = False Frame3.Visible = True Frame4.Visible = False Frame3.Left = 180 Image2.Picture = Image1(2).Picture If Caption <> "Yeni Kayit" Then Label14.Caption = "'" & Caption & "'" & " Hakkindaki isle ilgili Bilgileri Bu Kisma Girin" Else Label14.Caption = "Kisi Hakkindaki isle ilgili Bilgileri Bu Kisma Girin" 875

Microsoft Visual Basic 6.0


End If Case 4 Frame1.Visible = False Frame2.Visible = False Frame3.Visible = False Frame4.Visible = True Frame4.Left = 180 Image2.Picture = Image1(3).Picture If Caption <> "Yeni Kayit" Then Label14.Caption = "'" & Caption & "'" & " Hakkindaki diger Bilgileri Bu Kisma Girin" Else Label14.Caption = "Kisi Hakkindaki diger Bilgileri Bu Kisma Girin" End If End Select

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

Private Sub Command1_Click() Unload Me Set Form2 = Nothing End Sub

FORM 3 876

Microsoft Visual Basic 6.0

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

Microsoft Visual Basic 6.0


Set X = Nothing Exit Sub Hata: MsgBox "Hata :" & Err.Description End Sub Sub kayityazdir() Dim kri As String Dim X As Printer On Error GoTo son kri = Form4.ListView1.SelectedItem.Text RcSet.MoveFirst While Not RcSet.EOF If RcSet![adisoyadi] = kri Then GoTo Bitir RcSet.MoveNext Wend Bitir:

'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

Microsoft Visual Basic 6.0


'// Printer.CurrentY = Y // '// Printer.Print alan.Name // '// Printer.CurrentX = X2 // '// Printer.CurrentY = Y // '// Printer.Print alan.Value // '// End If // '// Next // '///////////////////////////////////////////////////// 'Not!! : Kutunun iindeki kod parasi, asagidaki tm satirlarin yaptigin 'isin aynisini yapabilir

'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

Microsoft Visual Basic 6.0


If Not IsNull(RcSet![emailadresi]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "E-mail Adresi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![emailadresi] End If 'Cep tel yaz If Not IsNull(RcSet![evtelefonu2]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Cep Telefonu:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![evtelefonu2] End If ' Ev Telefonu Yaz If Not IsNull(RcSet![evtelefonu1]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Ev Telefonu:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![evtelefonu1] End If 'Ev adresi Yaz If Not IsNull(RcSet![evadresi]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Ev Adresi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![evadresi] End If 'ev posta kodu yaz If Not IsNull(RcSet![postakodu]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Posta Kodu(Ev):" 880

Microsoft Visual Basic 6.0


Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![postakodu] End If ' ev semtini yaz If Not IsNull(RcSet![semt]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Semt(Ev):" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![semt] End If 'ev ilini yaz If Not IsNull(RcSet![Il]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "il(Ev):" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![Il] End If 'ev ile If Not IsNull(RcSet![Ilce]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Ile(Ev):" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![Ilce] End If 'is yeri yaz If Not IsNull(RcSet![issemt]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Is Yeri:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![issemt] End If ' Blm If Not IsNull(RcSet![Istelefonu2]) Then 881

Microsoft Visual Basic 6.0


Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Blm:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![Istelefonu2] End If ' is telefonu If Not IsNull(RcSet![Istelefonu1]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Is Telefonu:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![Istelefonu1] End If 'isadressi yaz If Not IsNull(RcSet![IsAdresi]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Is Adresi:" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![IsAdresi] End If 'is ili If Not IsNull(RcSet![isil]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Il(is):" Printer.CurrentX = X2 Printer.CurrentY = Y Printer.Print RcSet![isil] End If 'isile If Not IsNull(RcSet![isilce]) Then Y = Y + artim Printer.CurrentX = x1 Printer.CurrentY = Y Printer.Print "Ile(is)" Printer.CurrentX = X2 882

Microsoft Visual Basic 6.0


Printer.CurrentY = Y Printer.Print RcSet![isilce] End If

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

Microsoft Visual Basic 6.0


End Select End If

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

Microsoft Visual Basic 6.0


.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Adresler.mdb" .Open End With RcSet.CursorType = adOpenDynamic RcSet.CursorLocation = adUseClient RcSet.LockType = adLockOptimistic RcSet.Open "genel", Baglanti RegYkle ' Registry verilerini al zellikykle 'Registry verilerine gre nesnelerin zelliklerini belirle isimykle "Genel", RcSet 'Adres defterindeki kayitlari Listeye doldur Exit Sub ' Hata isleyici son: MsgBox Err.Description, vbCritical, "Hata" Resume Next End Sub Private Sub Form_Resize() ' formun boyutlari degistiginde On Error GoTo son 'liste ve text kutusunun uzunlugu ve genisligini formun yeni boyutlarina gre ayarla ListView1.Width = Form4.Width - ListView1.Left - 100 ListView1.Height = Form4.Height - (ListView1.Top + 680) Exit Sub son: End Sub Private Sub Form_Unload(Cancel As Integer) ' form geri yklendiginde(Programdan ikildiginda) On Error GoTo Hata RegKaydet ' Registry'e Nesnelerin zelliklerini son haliyle kaydet RcSet.Close 'Tabloyu kapat Baglanti.Close 'Baglantiyi kapat 'Degiskenleri bellekten sil Set RcSet = Nothing Set Baglanti = Nothing End 'programi sonlandir Hata: Resume Next End Sub Private Sub ListView1_DblClick() On Error GoTo son 'hata olustugunda hata isleyiciye git 885

Microsoft Visual Basic 6.0


'listede seili bir isim yoksa alt programdan ik If ListView1.SelectedItem.Selected = False Then Exit Sub 'seili ismin numarasini al no = ListView1.SelectedItem.Index 'seili isme gre kisinin diger ayrintilarini form1(ayrintilar formunda gster) veriykle Exit Sub son: End Sub Private Sub ListView1_KeyDown(KeyCode As Integer, Shift As Integer) On Error GoTo son If ListView1.SelectedItem.Selected Then If KeyCode = 46 Then sil ListView1.SelectedItem.Text 'eger 'Del' Tusuna basilirsa kaydi sil If KeyCode = 13 Then ListView1_DblClick 'Enter tusuna basilirsa kisinin ayrintilarini gster End If Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo son If Button = 2 Then 'mouse'in sag tusuna basilirsa kontrol 'men gelerinin Durumlarini kontrol et PopupMenu menudosya, 2, , , menuac 'menugrnm mensn Popupmenu(patlayan menu) olarak yarat End If Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menuac_Click() ListView1_DblClick 'listenin ift tiklamasiyla ayni grevi yerine getiriyor End Sub Private Sub menuaraubugu_Click() 'ara ubuguna tiklanirsa 886

Microsoft Visual Basic 6.0


On Error GoTo son 'hata olustugunda hata isleyiciye git Aracubugu = Not Aracubugu Toolbar1.Visible = Aracubugu ' diger nesnelerin genisliklerini ara ubugunun grnrlgne gre ayarla If Aracubugu Then Text1.Top = Toolbar1.Height + 30: Label1.Top = Toolbar1.Height + 30 ListView1.Top = Toolbar1.Height + Text1.Height + 10 ListView1.Height = ListView1.Height - Toolbar1.Height Else Text1.Top = 30: Label1.Top = 30 ListView1.Top = Text1.Height + 10 ListView1.Height = ListView1.Height + Toolbar1.Height End If Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menuartan_Click() On Error GoTo son 'listede siralama A da Z ye Siralama = lvwAscending ListView1.SortOrder = Siralama 'Ara ubugundaki siralama butonlarini degistir Toolbar1.Buttons(11).Value = tbrPressed Toolbar1.Buttons(12).Value = tbrUnpressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menuayrinti_Click() On Error GoTo son Grnm = lvwReport ListView1.View = Grnm Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrPressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menuazalan_Click() On Error GoTo son Siralama = lvwDescending ListView1.SortOrder = Siralama 887

Microsoft Visual Basic 6.0


Toolbar1.Buttons(11).Value = tbrUnpressed Toolbar1.Buttons(12).Value = tbrPressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menubyksimge_Click() On Error GoTo son Grnm = lvwIcon ListView1.View = Grnm Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrPressed Toolbar1.Buttons(9).Value = tbrUnpressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menudosya_Click() On Error GoTo son menuac.Enabled = ListView1.ListItems.Count > 0 menusil.Enabled = ListView1.ListItems.Count > 0 menuyaz.Enabled = ListView1.ListItems.Count > 0 menuac.Enabled = ListView1.SelectedItem.Selected menusil.Enabled = ListView1.SelectedItem.Selected menuyaz.Enabled = ListView1.SelectedItem.Selected son: End Sub Private Sub menuend_Click() On Error GoTo Hata RegKaydet ' Registry'e Nesnelerin zelliklerini son haliyle kaydet RcSet.Close 'Tabloyu kapat Baglanti.Close 'Baglantiyi kapat Set RcSet = Nothing Set Baglanti = Nothing End Hata: Resume Next End Sub Private Sub menugrnm_Click() kontrol End Sub Private Sub menuhakkinda_Click() 888

Microsoft Visual Basic 6.0


Form2.Show 1 End Sub Private Sub menukksimge_Click() On Error GoTo son Grnm = lvwSmallIcon ListView1.View = Grnm Toolbar1.Buttons(6).Value = tbrPressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrUnpressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menuliste_Click() On Error GoTo son Grnm = lvwList ListView1.View = Grnm Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrPressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrUnpressed Exit Sub son: MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub Private Sub menusil_Click() On Error GoTo son If Not ListView1.SelectedItem.Selected Then Exit Sub sil ListView1.SelectedItem.Text son: End Sub Private Sub menuyaz_Click() Dim soru As Integer, isim As String isim = Me.ListView1.SelectedItem.Text soru = MsgBox("Adres Defterindeki '" & isim & "' adli kisinin tm bilgileri yazdirilicak.Bunu yapmak istediginizden emin misiniz", vbYesNo) If soru = vbYes Then kayityazdir End Sub Private Sub menuyeni_Click() YeniKayit = True RcSet.AddNew Form1.Caption = "Yeni Kayit" 889

Microsoft Visual Basic 6.0


Form1.Label14.Caption = "Kisi Hakkindaki Kisisel Bilgileri Bu Kisma Girin" Form1.Combo1.AddItem "" Form1.Combo1.AddItem "Bayan" Form1.Combo1.AddItem "Erkek" Form1.Combo1.ListIndex = 0 Form1.Show 1 End Sub Sub sil(X As String) Dim kri On Error GoTo son kri = ListView1.SelectedItem.Text a = MsgBox(X & " Kaydi Kalici Olarak Silinecek Bunu Yapmak istediginizden eminmisiniz ?", vbYesNo, "Sil") If a = vbNo Then Exit Sub Baglanti.Execute "DELETE FROM genel WHERE [Adisoyadi]='" & kri & "'" 'Not:satir silme islemi "Rcset.Delete" seklindede yapilabilir" ListView1.ListItems.Remove (ListView1.SelectedItem.Index) son: End Sub Sub RegKaydet() SaveSetting "AdresTelefon", "Ozellik", "Gorunum", Grnm SaveSetting "AdresTelefon", "Ozellik", "Siralama", Siralama SaveSetting "AdresTelefon", "Ozellik", "Toolbar", Aracubugu SaveSetting "AdresTelefon", "Ozellik", "Status", durumcubugu End Sub Sub RegYkle() On Error GoTo son Grnm = Val(GetSetting("AdresTelefon", "Ozellik", "Gorunum")) Siralama = Val(GetSetting("AdresTelefon", "Ozellik", "Siralama")) Aracubugu = Val(GetSetting("AdresTelefon", "Ozellik", "Toolbar")) durumcubugu = Val(GetSetting("AdresTelefon", "Ozellik", "Status")) Exit Sub son: MsgBox "Hata :" & Err.Description End Sub Sub zellikykle() On Error GoTo son Toolbar1.Visible = Aracubugu ListView1.View = Grnm ListView1.SortOrder = Siralama If Not Aracubugu Then Text1.Top = 30: Label1.Top = 30 ListView1.Top = Text1.Height + 10 End If 890

Microsoft Visual Basic 6.0


Select Case Grnm Case lvwList Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrPressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrUnpressed Case lvwSmallIcon Toolbar1.Buttons(6).Value = tbrPressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrUnpressed Case lvwIcon Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrPressed Toolbar1.Buttons(9).Value = tbrUnpressed Case lvwReport Toolbar1.Buttons(6).Value = tbrUnpressed Toolbar1.Buttons(7).Value = tbrUnpressed Toolbar1.Buttons(8).Value = tbrUnpressed Toolbar1.Buttons(9).Value = tbrPressed End Select Select Case Siralama Case lvwAscending Form4.Toolbar1.Buttons(11).Value = tbrPressed Form4.Toolbar1.Buttons(12).Value = tbrUnpressed Case lvwDescending Form4.Toolbar1.Buttons(11).Value = tbrUnpressed Form4.Toolbar1.Buttons(12).Value = tbrPressed End Select Toolbar1.Buttons(6).Style = tbrButtonGroup Toolbar1.Buttons(7).Style = tbrButtonGroup Toolbar1.Buttons(8).Style = tbrButtonGroup Toolbar1.Buttons(9).Style = tbrButtonGroup Toolbar1.Buttons(11).Style = tbrButtonGroup Toolbar1.Buttons(12).Style = tbrButtonGroup Exit Sub son: MsgBox "Hata :" & Err.Description End Sub Private Sub Text1_Change() Dim x1 As ListItem Dim kri As String On Error GoTo son kri = Text1 If Len(kri) = 0 Then Exit Sub Set x1 = ListView1.FindItem(kri, lvwText, , lvwPartial) 891

Microsoft Visual Basic 6.0


If x1 Is Nothing Then Exit Sub x1.Selected = True x1.EnsureVisible son: End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then ListView1.SetFocus KeyAscii = 0 End If End Sub Sub kontrol() menudurum.Checked = durumcubugu menuaraubugu.Checked = Aracubugu Select Case Grnm Case lvwSmallIcon menukksimge.Checked = True menuliste.Checked = False menubyksimge.Checked = False menuayrinti.Checked = False Case lvwList menukksimge.Checked = False menuliste.Checked = True menubyksimge.Checked = False menuayrinti.Checked = False Case lvwIcon menukksimge.Checked = False menuliste.Checked = False menubyksimge.Checked = True menuayrinti.Checked = False Case lvwReport menukksimge.Checked = False menuliste.Checked = False menubyksimge.Checked = False menuayrinti.Checked = True End Select Select Case Siralama Case lvwAscending menuartan.Checked = True menuazalan.Checked = False Case lvwDescending menuazalan.Checked = True menuartan.Checked = False 892

Microsoft Visual Basic 6.0


End Select End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Dim kri As String On Error GoTo son Select Case Button.Index Case 1 YeniKayit = True RcSet.AddNew Form1.Caption = "Yeni Kayit" Form1.Label14.Caption = "Kisi Hakkindaki Kisisel Bilgileri Bu Kisma Girin" Form1.Combo1.AddItem "" Form1.Combo1.AddItem "Bayan" Form1.Combo1.AddItem "Erkek" Form1.Combo1.ListIndex = 0 Form1.Show 1 Case 2 If ListView1.SelectedItem.Selected = False Then Exit Sub sil ListView1.SelectedItem.Text Case 3: ListView1_DblClick Case 4 If ListView1.SelectedItem.Selected = False Then Exit Sub kayityazdir Case 6 ListView1.View = lvwSmallIcon Grnm = lvwSmallIcon Case 7 ListView1.View = lvwList Grnm = lvwList Case 8 ListView1.View = lvwIcon Grnm = lvwIcon Case 9 ListView1.View = lvwReport Grnm = lvwReport Case 11 ListView1.SortOrder = lvwAscending Siralama = lvwAscending Case 12 ListView1.SortOrder = lvwDescending Siralama = lvwDescending End Select Exit Sub son: 893

Microsoft Visual Basic 6.0


MsgBox ("Hata:" & Err.Description), 16, "Hata" End Sub MODULE Public Public Public Public Public Public Public Public Public 1 Grnm As Integer Siralama As Integer Aracubugu As Integer durumcubugu As Integer YeniKayit As Boolean KeyNo As Integer no As Integer Baglanti As New ADODB.Connection RcSet As New ADODB.Recordset

894

You might also like