SlideShare a Scribd company logo
DELPHI 7
II
ZİRVEDEKİ BEYİNLER


Nihat DEMİRLİ               Yüksel İNAN




 DELPHI 7




                Yayınları
Kitap Yazarları

                           Nihat DEMİRLİ
                   MCP-MCSE-MCDBA-MCSD-MCAD
                       nihadd@prestigeturk.com

                   M. Yüksel İNAN
   MCP-MCP+INT-MCSA-MCSE-MCDBA-MCSD-MCT-MCAD
                yuksel@yukselinan.com

                                   Teknik Editör
                                   Sibel YANAR
                                    MCP-MCSE

                              ISBN: 975-92267-0-7

                       Prestie Education Center
                                Merkez
       Halitağa Cd. Kıvanç Sok. No: 1/5 Kadıköy/İSTANBUL
                       Tel: 0216. 330 06 50 (pbx)
                             0216. 449 54 78
                             0216. 345 71 75
                         Fax: 0216. 345 71 75
                                  Şube
Gazi Üniversitesi Mühendislik-Mimarlık Fakültesi Maltepe / ANKARA
                  Tel: 0312. 231 74 00 / 1031 (Dahili)
                   mail: prestige@prestigeturk.com
                      web: www.prestigeturk.com

                         Yayına Hazırlayan – Kapak
                             Selman Ali METİN

                               Baskı
                      Ümit Ofset Matbaacılık
      Büyük Sanayi 1. Cad. 107/32-39-40-54 İskitler / ANKARA
                 Tel: 0312. 384 26 27 – 384 17 07


                                    Ankara, 2003


  Kitabın tüm hakları Prestij Bilişim Eğitim-Öğretim Turizm Hiz. Tic. Ltd. Şti.’ne aittir.
İzinsiz olarak kısmen veya tamamen kullanılması, kopyalanması ve çoğaltılması yasaktır.



                                           IV
ÖNSÖZ


       Zirvedeki Beyinler serisine ait beşinci kitabımızla karşınızdayız. Serimizi
tamamlama aşamasında bizlere göstermiş olduğunuz ilgiye, öneri ve
isteklerinize teşekkürlerimizi sunuyoruz.

       Bu sefer Microsoft ürünü olmayan bir yazılım dili üzerine birikimlerimizi
sizlerle paylaşmak istedik. Delphi'yi çok sevdiğinizi bu hususta kaynak sıkıntısı
çektiğinizi biliyoruz. Amacımız bu kadar fazla sevilen bir dil hususunda
mümkün olduğu kadar geniş çaplı bir inceleme yapıp sonuçları sizlerle
paylaşmaktan ibarettir. Delphi ile yazılmış birçok uygulamamızın halen aktif
olarak büyük ve orta ölçekli firmalarda kullanıldığını,kodlarının Kitabın bazı
bölümlerinde ufak modüller halinde sizlere sunulduğunu göreceksiniz.

      Diğer kitaplarımıza göstermiş olduğunuz ilgiyi aynen bu kitaba da
göstermeniz temennisiyle "Delphi 7 İle Veritabanı ve Network Uygulamaları"
Kitabımızda görüşmek üzere.

      Bütün Hayalleriniz Gerçek Olsun.........



                                                                   Sibel YANAR
                                                                   Teknik Editör
VI
TEŞEKKÜR


Üniversitemize bağlı olarak çalışan Prestige firmasının üniversitemiz
bünyesinde öğrencilerimize ve akademik personelimize sağladığı eğitim
olanakları ve yaptığı çalışmalar için Sayın Nihat DEMİRLİ ve Yüksel İNAN’a
teşekkür ederim.



                                               Prof. Dr. Hüsnü CAN
                                               G.Ü. Müh.-Mim. Fak.
                                                     DEKANI
TEŞEKKÜR

Bakım-onarım işlerimizin bilgisayar ortamında dosyalama ve takibi ile ilgili
program çalışmasına yaptığı yardım için Sayın Nihat DEMİRLİ ve Yüksel
İNAN’a teşekkür ederim.



                                                   T. KARLIDAĞ
                                                 Migros Türk T.A.Ş.
                                                  İnş. Emlak Müd.




                                                                         IX
TEŞEKKÜR

Bankamız Güvenlik Sistemleri ve Kredi Kartı Uygulama çalışmalarına yönelik
yazılım+danışmanlık hizmetlerinden dolayı Nihat DEMİRLİ ve Yüksel İNAN’a
teşekkür ederiz.



                                                          Burak AKTAŞ
                                                          INTERBANK
                                                         İnş. Emlak Md.
XII
İÇİNDEKİLER

BÖLÜM 1
DELPHI’YE GİRİŞ .............................................................................................. 1
      Delphi 7’ye Giriş ..................................................................................... 3
      Component Palette ................................................................................... 4
      Object Inspector ....................................................................................... 6
      Events’lara Erişebilmek........................................................................... 6
      Kod Penceresine Ulaşmak ....................................................................... 7
      Kod (Unit) Penceresinin Özellikleri ........................................................ 8
      Ctrl+Space Tuşunun Beraber Kullanılması............................................. 8
      Kod Penceresinde “.” Karakterinin Kullanılması.................................... 8
      Object TreeView Penceresi ..................................................................... 9
      Delphi Dosya Uzantıları .......................................................................... 10
      Kod Penceresine Ait Font Ayarları.......................................................... 11
      Uses İfadesi.............................................................................................. 12
      Project Manager Penceresi....................................................................... 14
      Window List Penceresi ............................................................................ 15

BÖLÜM 2
DELPHİ’NİN TEMELLERİ................................................................................ 17
      Örnekleri Yapabilmeniz İçin Gerekli Olan Pratik Kodlar....................... 19
      Aktif Formu Kapatmak............................................................................ 23
      Alt Satırdaki Kodların İşlemesini Engellemek ........................................ 23
      Programı Sonlandırmak ........................................................................... 24
      Programı İkinci Formdan Başlatmak....................................................... 24
      Herhangi Bir Exe Uygulamasını Çalıştırmak .......................................... 25
      Ağdaki Bir Bilgisayarda Bulunan Exe Uzantılı Dosyayı Çalıştırmak .... 25
      Değişkenler .............................................................................................. 26
      Değişken Tanımlarken Dikkat Edilecek Olan Hususlar.......................... 27
                Tam Sayı Değişken Tipleri............................................... ....... 29
                Reel Sayı Değişken Tipleri............................................... ....... 31
                String Değişken Tipleri..................................................... ....... 33
                Boolean Tip Değişken Tanımlamak ................................. ....... 34
                Tarihsel İçerikli Değişken Tanımlamak ........................... ....... 34
                Delphi’de Sabit Değişken Tanımlamak............................ ....... 35
                Local Static Değişken Tanımlamak.................................. ....... 35
      Tüm Alt Yordamlar Tarafından Kullanılabilecek Değişken
      Tanımlamak ............................................................................................. 37
      Tüm Formlar Tarafından Kullanılabilecek Değişken Tanımlamak ........ 39
      Tip Tanımlamaları ................................................................................... 41
                Enumerated Types ............................................................ ....... 41
                Subrange Types................................................................. ....... 46
Set Types........................................................................... ....... 47
                     Record Types .................................................................... ....... 50
             With-do bloğu .......................................................................................... 50
             Dizi Değişkenler ...................................................................................... 52
                     Sabit Uzunluklu Dizi Değişken Tanımlamak................... ....... 52
                     Sabit Uzunluklu İki Boyutlu Dizi Tanımlamak................ ....... 55
                     Değişken Uzunluklu (Dinamik) Dizi Değişken Tanımlamak .. 58
                     Çok Boyutlu Dinamik Dizi Tanımlamak.......................... ....... 60
                     Dinamik Dizileri Yeniden Boyutlandırmak ..................... ....... 62

BÖLÜM 3
DELPHI’DE ATAMA İŞLEMLERİ & OPERATÖRLER .............................. 63
      Delphi’de Kullanılan Operatörler ............................................................ 65
              Matematiksel Operatörler ................................................. ....... 65
              Logical Operatörler........................................................... ....... 66
      Delphi’de Diğer Atama İşlemleri ............................................................ 68

BÖLÜM 4
DELPHI’DE DALLANMA & DÖNGÜ KOMUTLARI ................................... 73
      IF Yapısının Delphi’de Kullanım Şekilleri ............................................. 75
      Tek Satırda Birden Fazla Şartı Kontrol Etmek (And & Or).................... 80
      Is Operatörü Kullanarak Karşılaştırma Yapmak ..................................... 85
      Case Yapısının Delphi’de Kullanım Şekilleri ......................................... 86
      Döngüler .................................................................................................. 89
               For Döngüsü ..................................................................... ....... 89
               Repeat Until Döngüsü....................................................... ....... 96
               While Do Döngüsü ........................................................... ....... 99
      Sıralama Algoritmaları ............................................................................ 100
               Bubble Sort ....................................................................... ....... 101
               Bubble Sort ...................................................................... ....... 103
               Shell Sort........................................................................... ....... 104
               Selection Sort.................................................................... ....... 105
               Quick Sort ......................................................................... ....... 106
      Döngü Yönlendirme Komutları ............................................................... 107
               Continue............................................................................ ....... 107
               Break ................................................................................. ....... 108
               Exit.................................................................................... ....... 108
               Halt.................................................................................... ....... 109
               Application.Terminate ...................................................... ....... 110
               Sleep Komutu ................................................................... ....... 112
               Application.ProcessMessages........................................... ....... 113




XIV
BÖLÜM 5
DELPHI’DE FONKSİYON & PROSEDÜRLER.............................................. 115
      Delphi’de Prosedürler .............................................................................. 117
              Prosedürleri Diğer Yordamlara Bildirmek ....................... ....... 119
              Parametre İçeren Prosedür Tanımlamak........................... ....... 119
              Birden Fazla Parametreli Prosedür Tanımlamak.............. ....... 121
              Dizi Parametreli Prosedür Tanımlamak ........................... ....... 123
              Dinamik Dizi Parametreli Prosedür Tanımlamak ............ ....... 124
              Opsiyonel Parametreli Prosedür Tanımlamak.................. ....... 125
      Delphi’de Fonksiyonlar ........................................................................... 127
              Fonksiyonlarda Aşırı Yükleme......................................... ....... 128
              Dizi Parametreli Fonksiyon Tanımlamak......................... ....... 130
              Okek Hesaplayan Fonksiyon ............................................ ....... 131
              Obeb Hesaplayan Fonksiyon ............................................ ....... 133
              Fonksiyonlara Birden Fazla Değer Hesaplatmak ............. ....... 135
              Delphi’de Rekürsif Fonksiyonlar ..................................... ....... 139

BÖLÜM 6
BİLGİLENDİRME PENCERELERİ ................................................................. 141
      Mesaj Pencereleri..................................................................................... 143
               ShowMessage ................................................................... ....... 143
               ShowMessagePos.............................................................. ....... 144
               ShowMessageFmt............................................................. ....... 145
               MessageDlg ...................................................................... ....... 147
      Basılan Düğmeye Göre Kod Satırlarını İşletmek .................................... 153
               MessageDlgPos................................................................. ....... 155
               Application.MessageBox.................................................. ....... 156
      InputBox Fonksiyonu .............................................................................. 164
      InputQuery Fonksiyonu ........................................................................... 170
      Idle Olayı Yaratarak Projeyi Kontrol Etmek ........................................... 173
      İki Kontrolün Aynı Eventı Kullanması.................................................... 176

BÖLÜM 7
DELPHİ’DE HATA YAKALAMA ..................................................................... 179
      Delphi’de Oluşabilecek İllegal Durumları Çözmek ................................ 181
              Lokal Hata Yakalama ....................................................... ....... 181
                    Try-except-End ...................................................... ....... 181
                    Try-Finally-End ...................................................... ....... 185
              Genel Hata Yakalama ....................................................... ....... 185




                                                                                                      XV
BÖLÜM 8
DELPHI’DE UNIT KAVRAMI........................................................................... 189
      Unit Penceresi: ......................................................................................... 191
               Uygulama 1....................................................................... ....... 193
               Uygulama 2....................................................................... ....... 194

BÖLÜM 9
DELPHİ’DE CLASS YAPISI .............................................................................. 203
      Delphi’de Class Uygulamaları................................................................. 205
              Adım Adım Class Oluşturmak.......................................... ....... 205
              Class İçerisinde Tanımlanan Değişkene Erişmek ............ ....... 208
              Class İçesisinde Tanımlanan Fonksiyona Erişmek .......... ....... 210
              Class içerisinde oluşturulmuş Olan Prosedüre Erişmek... ....... 214
              Class lara Özellik Eklenmesi ............................................ ....... 218
      Form Kullanmayan Windows Uygulamaları Geliştirmek....................... 222

BÖLÜM 10
İŞARETÇİLER & KATARLAR ......................................................................... 225
      Delphi’de Pointer Değişkenlerin Yeri ..................................................... 227
                İşaretçi Bildirimi ............................................................... ....... 227
                İşaretçilere Adres Göstermek ........................................... ....... 228
                İşaretçilere Değer Atamak ................................................ ....... 228
                İşaretçileri Aritmetik İşlemlerde Kullanmak.................... ....... 231
                Kullanıcı Tanımlı Tip Değişkeni Olarak Pointer Kullanmak .. 232
                İşaretçilerin Dizi Değişkenlerle Beraber Kullanılması..... ....... 233
                İşaretçi İle Dizi Elemanları Arasında Dolaşmak .............. ....... 235
                İşaretçi Fonksiyon İlişkisi................................................. ....... 238
                İşaretçi Prosedür İlişkilendirilmesi ................................... ....... 240
                İşaretçi Class İlişkisi ......................................................... ....... 241
      Katarlar .................................................................................................... 242
                Katar Bildiriminin Yapılması ........................................... ....... 242
                Karakterler Arasında Gezinmek ....................................... ....... 244
                Katarları Char Tipli Dizi Değişken Olarak Tanımlamak . ....... 246

BÖLÜM 11
DLL DOSYALARI OLUŞTURMAK ................................................................. 249
      DLL Ne İşe Yarar .................................................................................... 251
      Dll İçerisinde Prosedür Oluşturmak ........................................................ 253
      Dll İçerisindeki Prosedüre Programdan Ulaşmak ................................... 253
      Dll İçerisinde Fonksiyon Oluşturmak...................................................... 254
      Dll İçerisindeki Fonksiyona Programdan Erişmek.................................. 255




XVI
BÖLÜM 12
DELPHİ FONKSİYONLARI .............................................................................. 259
      Fonksiyonlara Giriş.................................................................................. 261
              Matematiksel Fonksiyonlar .............................................. ....... 261
                    Abs .......................................................................... ....... 261
                    Ceil.......................................................................... ....... 262
                    Floor........................................................................ ....... 262
                    Trunc....................................................................... ....... 263
                    Frac ......................................................................... ....... 264
                    Exp .......................................................................... ....... 264
                    Int............................................................................ ....... 265
                    IntPower.................................................................. ....... 265
                    Ln ............................................................................ ....... 266
                    Log10...................................................................... ....... 266
                    Log2........................................................................ ....... 267
                    LogN ....................................................................... ....... 267
                    Max ......................................................................... ....... 268
                    Min.......................................................................... ....... 268
                    Muldiv..................................................................... ....... 269
                    Pi ............................................................................. ....... 269
                    Poly ......................................................................... ....... 270
                    Power ...................................................................... ....... 271
                    Round...................................................................... ....... 271
                    RoundTo ................................................................. ....... 272
                    Sign ......................................................................... ....... 273
                    SimpleRoundTo...................................................... ....... 274
                    Sqr........................................................................... ....... 274
                    Sqrt.......................................................................... ....... 275
                    Inc ........................................................................... ....... 275
                    Dec .......................................................................... ....... 276
                    Div .......................................................................... ....... 277
                    Mod......................................................................... ....... 277
                    Shl ........................................................................... ....... 278
                    Shr........................................................................... ....... 278
              Tarih – İçerikli Fonksiyonlar ............................................ ....... 283
                    CompareDate .......................................................... ....... 283
                    CompareDateTime.................................................. ....... 283
                    CompareTime ......................................................... ....... 284
                    CurrentYear ............................................................ ....... 284
                    Date......................................................................... ....... 284
                    DateOf..................................................................... ....... 285
                    DateTimeToStr ....................................................... ....... 286
                    DateToStr................................................................ ....... 286


                                                                                                    XVII
DayOfWeek ............................................................ ....... 287
        DayOf ..................................................................... ....... 288
        DayOfTheMonth .................................................... ....... 288
        DayOfTheWeek...................................................... ....... 289
        DayOfTheYear ....................................................... ....... 289
        DaysBetween .......................................................... ....... 289
        DaysInMonth .......................................................... ....... 290
        DaysInAMonth ....................................................... ....... 290
        DaysInAYear .......................................................... ....... 291
        DaysInYear ............................................................. ....... 291
        DaySpan.................................................................. ....... 292
        DecodeDate............................................................. ....... 292
        DecodeDateDay...................................................... ....... 293
        DecodeDateMonthWeek ........................................ ....... 293
        DecodeTime............................................................ ....... 294
        EncodeDate............................................................. ....... 295
        EncodeDateDay ...................................................... ....... 295
        EncodeDateMonthWeek......................................... ....... 296
        EncodeDateWeek ................................................... ....... 296
        EncodeDayOfWeekInMonth.................................. ....... 297
        EncodeTime............................................................ ....... 297
        EndOfADay ............................................................ ....... 297
        EndOfAMonth ........................................................ ....... 298
        EndOfAWeek ......................................................... ....... 298
        EndOfAYear ........................................................... ....... 299
        FormatDateTime..................................................... ....... 299
        IncAMonth.............................................................. ....... 300
        IncDay..................................................................... ....... 300
        IncMonth................................................................. ....... 301
        IncWeek.................................................................. ....... 301
        IncYear ................................................................... ....... 302
        IsInLeapYear .......................................................... ....... 302
        IsLeapYear.............................................................. ....... 303
        IsToday ................................................................... ....... 303
        IsValidDate ............................................................. ....... 304
        MonthOf ................................................................. ....... 304
        MonthOfTheYear ................................................... ....... 305
        MonthsBetween ...................................................... ....... 305
        Now......................................................................... ....... 306
        NthDayOfWeek ...................................................... ....... 306
        RecodeDate............................................................. ....... 306
        RecodeYear............................................................. ....... 307
        ReplaceDate............................................................ ....... 308


XVIII
StartOfADay ........................................................... ....... 308
      StartOfAMonth ....................................................... ....... 309
      StartOfAWeek ........................................................ ....... 309
      StartOfAYear.......................................................... ....... 310
      StartOfTheMonth.................................................... ....... 310
      StartOfTheWeek ..................................................... ....... 310
      StrToDate................................................................ ....... 311
      StrToDateDef.......................................................... ....... 311
      StrToDateTime ....................................................... ....... 312
      StrToDateTimeDef ................................................. ....... 312
      StrToTime............................................................... ....... 313
      StrToTimeDef......................................................... ....... 313
      Time-GetTime ........................................................ ....... 314
      TimeOf.................................................................... ....... 314
      TimeToStr............................................................... ....... 315
      Today ...................................................................... ....... 315
      Tomorrow ............................................................... ....... 316
      WeekOf................................................................... ....... 316
      WeekOfTheMonth.................................................. ....... 316
      WeeksBetween ....................................................... ....... 317
      WeeksInAYear ....................................................... ....... 317
      YearOf .................................................................... ....... 318
      YearsBetween ......................................................... ....... 318
      Yesterday ................................................................ ....... 319
String – İçerikli Fonksiyonlar........................................... ....... 320
      AnsiCompareStr ..................................................... ....... 320
      AnsiCompareText................................................... ....... 320
      AnsiDequotedStr .................................................... ....... 321
      AnsiLeftStr ............................................................. ....... 322
      AnsiLowerCase ...................................................... ....... 322
      AnsiMidStr ............................................................. ....... 323
      AnsiPos ................................................................... ....... 324
      AnsiReplaceStr ....................................................... ....... 325
      AnsiReplaceText .................................................... ....... 326
      AnsiReverseString ................................................. ....... 326
      AnsiRightStr ........................................................... ....... 327
      AnsiUpperCase ....................................................... ....... 327
      CompareStr ............................................................. ....... 328
      CopmpareText ........................................................ ....... 328
      Concat ..................................................................... ....... 329
      Copy........................................................................ ....... 329
      Delete...................................................................... ....... 330
      DupeString.............................................................. ....... 330


                                                                                  XIX
Insert ....................................................................... ....... 331
           LeftBStr .................................................................. ....... 331
           Length ..................................................................... ....... 332
           LowerCase .............................................................. ....... 332
           MidStr ..................................................................... ....... 332
           Pos........................................................................... ....... 333
           RightStr................................................................... ....... 333
           SetLength................................................................ ....... 334
           SetString ................................................................. ....... 334
           Str............................................................................ ....... 335
           StringOfChar .......................................................... ....... 335
           StringReplace.......................................................... ....... 336
           StuffString............................................................... ....... 337
           Trim ........................................................................ ....... 337
           TrimLeft.................................................................. ....... 338
           TrimRight ............................................................... ....... 338
           UpperCase............................................................... ....... 338
           WrapText ................................................................ ....... 339
           Chr .......................................................................... ....... 339
           Ord .......................................................................... ....... 340
           Val........................................................................... ....... 341
           StrToInt................................................................... ....... 342
           StrToIntDef............................................................. ....... 343
           StrToFloat ............................................................... ....... 344
           StrToFloatDef ......................................................... ....... 344
           IntToStr(sayi)-FloatToStr....................................... ....... 345
           FloatToStrF............................................................. ....... 345
           FormatFloat............................................................. ....... 347
     Rasgele Sayı Üretim Fonksiyonları.................................. ....... 348
           RandomFrom .......................................................... ....... 349
           RandomRange ........................................................ ....... 350
           Sayısal Loto Programı ............................................ ....... 350
     Dizi Fonksiyonları ............................................................ ....... 352
           Mean ....................................................................... ....... 352
           Sum ......................................................................... ....... 352
           SumInt..................................................................... ....... 353
           SumOfSquares ........................................................ ....... 353
           SumsAndSquares.................................................... ....... 354
           TotalVariance ......................................................... ....... 354
           Variance.................................................................. ....... 355
           EnsureRange ........................................................... ....... 355
           High ........................................................................ ....... 355
           Low ......................................................................... ....... 356


XX
MaxIntValue ........................................................... ....... 357
      MaxValue ............................................................... ....... 357
      MinIntValue............................................................ ....... 358
      MinValue ................................................................ ....... 358
Klasör ve Dosya Fonksiyonları ........................................ ....... 360
      ChDir ...................................................................... ....... 360
      CloseFile ................................................................. ....... 360
      CreateDir................................................................. ....... 361
      DeleteFile................................................................ ....... 361
      DirectoryExists ....................................................... ....... 362
      DiskFree.................................................................. ....... 362
      DiskSize.................................................................. ....... 363
      FileAge ................................................................... ....... 363
      FileDateToDateTime .............................................. ....... 363
      FileExists ................................................................ ....... 364
      FileGetAttr.............................................................. ....... 364
      FileIsReadOnly ....................................................... ....... 365
      FileSearch ............................................................... ....... 366
      FileSetAttr............................................................... ....... 366
      FindFirst.................................................................. ....... 367
      FindNext ................................................................. ....... 367
      ForceDirectories ..................................................... ....... 368
      GetCurrentDir ......................................................... ....... 369
      GetDir ..................................................................... ....... 369
      RemoveDir.............................................................. ....... 369
      RenameFile ............................................................. ....... 370
      SelectDirectory ....................................................... ....... 371
      ExtractFileDir ......................................................... ....... 372
      ExtractFileDrive ..................................................... ....... 373
      ExtractFileExt ......................................................... ....... 373
      ExtractFileName ..................................................... ....... 374
      ExtractFilePath ....................................................... ....... 374
      ExtractShortPathName ........................................... ....... 375
      WinExec ................................................................. ....... 375
Fonksiyonları Network Ortamında Kullanmak ................ ....... 377
      Klasörün Paylaşıma Açılması................................. ....... 377
      UNC Path Nasıl Belirtilir ....................................... ....... 377
      Makineler Arası Dosya Transferi ........................... ....... 378
      Diğer Makinedeki Dosyayı Silmek ........................ ....... 378
      Diğer Makinedeki “exe” Uygulamasını Çalıştırmak...... 379
Log Dosyası Oluşturmak: ................................................. ....... 380
      “TextFile” Kullanarak Dosyadan Veri Okumak .... ....... 383
       “TextFile” Kullanarak Dosyaya Veri Yazmak...... ....... 384


                                                                                  XXI
BÖLÜM 13
DELPHİ KONTROLLERİ .................................................................................. 387
      Form Özellikleri....................................................................................... 389
      MDI Form Oluşturmak ............................................................................ 403
      Label Kontrolü ......................................................................................... 405
      Edit Kontrolü ........................................................................................... 408
      Button Kontrolü ....................................................................................... 425
      BitBtn Kontrolü ....................................................................................... 428
      CheckBox Kontrolü ................................................................................. 430
      RadioButton Kontrolü.............................................................................. 433
      GroupBox Kontrolü ................................................................................. 434
      Panel Kontrolü ......................................................................................... 437
      ListBox Kontrolü ..................................................................................... 438
      ComboBox Kontrolü................................................................................ 460
      ImageList Kontrolü.................................................................................. 465
      ListView Kontrolü ................................................................................... 466
      TreeView Kontrolü .................................................................................. 472
      TabControl Kontrolü................................................................................ 482
      DateTimePicker Kontrolü........................................................................ 489
      MonthCalendar Kontrolü......................................................................... 492
      ScrollBar Kontrolü................................................................................... 495
      Splitter Kontrolü ...................................................................................... 498
      UpDown Kontrolü ................................................................................... 500
      TrackBar Kontrolü ................................................................................... 504
      ProgressBar Kontrolü .............................................................................. 507
      ToolBar Kontrolü..................................................................................... 510
                Basılı Kalabilen Button Oluşturmak................................. ....... 514
                Açılabilir Button Oluşturmak ........................................... ....... 514
                Grup Halinde Çalışan Buttonlar Oluşturmak: .................. ....... 516
      StatusBar Kontrolü .................................................................................. 519
      Timer Kontrolü ........................................................................................ 524
      MainMenu Kontrolü ................................................................................ 529
                Alt Menüler Yaratmak ...................................................... ....... 530
                Menü Seçeneklerine Kod Yazmak ................................... ....... 531
                Menü Seçeneklerine CheckBox Eklemek ........................ ....... 531
                Menü Seçeneklerine Resim Eklemek ............................... ....... 532
      PopupMenu Kontrolü .............................................................................. 533
      MaskEdit Kontrolü .................................................................................. 535
      Gauge Kontrolü........................................................................................ 536
      OpenDialog Kontrolü .............................................................................. 539
      SaveDialog Kontrolü ............................................................................... 543


XXII
FontDialog Kontrolü................................................................................ 546
             ColorDialog Kontrolü .............................................................................. 548
             Memo Kontrolü........................................................................................ 549

BÖLÜM 14
DELPHI YORDAMLARI .................................................................................... 551
      Yordamlar ................................................................................................ 553
              OnClick ............................................................................. ....... 553
              OnDblClick Yordamı........................................................ ....... 554
              OnChange Yordamı .......................................................... ....... 554
      Mous Tuşları İle Tetikleyebileceğiniz Yordamlar................................... 558
              OnMousDown Yordamı ................................................... ....... 558
              OnMousUp Yordamı ........................................................ ....... 560
              OnMouseMove Yordamı .................................................. ....... 561
      OnClose Yordamı .................................................................................... 562
      OnCreate Yordamı ................................................................................... 563
      OnEnter Yordamı..................................................................................... 564
      OnExit Yordamı....................................................................................... 565
      OnActivate Yordamı................................................................................ 566
      OnDeactivate Yordamı ............................................................................ 567
      OnDragDrop-OnDragEnd-OnDragOver ................................................. 567
      OnResize Yordamı................................................................................... 567
      Klavye Tuş Vuruşlarıyla Tetiklenen Yordamlar ..................................... 568
              OnKeyDown Yordamı...................................................... ....... 568
              OnKeyUp Yordamı........................................................... ....... 571
              OnKeyPress Yordamı ....................................................... ....... 571
      OnDestroy Yordamı................................................................................. 573
      OnShow Yordamı .................................................................................... 573
      OnHide Yordamı...................................................................................... 573

BÖLÜM 15
DELPHI’DE DRAG & DROP ............................................................................. 575
      Drag & Drop (Sürükle-Bırak).................................................................. 577
              OnDragOver Yordamı ...................................................... ....... 581
              OnDragDrop Yordamı ...................................................... ....... 582

BÖLÜM 16
DELPHI’DE KONTROLLERİ & YORDAMLARI KODLA
OLUŞTURMAK.................................................................................................... 589
      Kontrolleri ve Yordamları Kodla Oluşturmak......................................... 591
      İki Kontrolun Aynı Yordamı Kullanması................................................ 595




                                                                                                        XXIII
BÖLÜM 17
DELPHI’DE VERİTABANI ................................................................................ 601
      VeriTabanı Uygulamaları: ....................................................................... 603
      BDE Kontrolleri....................................................................................... 604
                Table Kontrolü.................................................................. ....... 604
                Query Kontrolü ................................................................. ....... 604
                StoredProc Kontrolü ......................................................... ....... 604
                Database Kontrolü ............................................................ ....... 605
      Paradox Tablolarına Bağlantı .................................................................. 605
      Alias Tanımlamak.................................................................................... 605
      Paradox’ta Tablo Oluşturmak.................................................................. 607
      Tablo Yapısında Değişiklik Yapmak....................................................... 609
      DataBase Destop’ı Kullanarak Tabloya Kayıt Girmek ........................... 609
      Uygulamanızdan Paradox Tablolarına Bağlanmak ................................. 610
      Resimli veya CheckBox İçeren Tablo Sütunlarıyla Bağlantı.................. 611
      Wizard Kullanarak Veri Tabanına Bağlanmak........................................ 611
      DBNavigator Kontrolü ............................................................................ 615
      DBNavigator Kontrolü İçin Tıklanan Düğmeye Kod Yazmak ............... 617
      Kayıtları DataGrid Nesnesinde Göstermek ............................................. 619
      Kayıt İşlemlerini Kodla Yapmak............................................................. 620
      Bağlantı İşlemlerinin Kodla Yapmak ...................................................... 622
      Veri Tabanında Olmayan Sütunlar Yaratmak ......................................... 631
      Yaratılan Sütun Değerlerini Tablonuzda Hesaplatmak ........................... 633
      DataGrid Kontrolüne Ait Özellikler ........................................................ 634
                DataGrid Kontrolüne Ait Sütun Başlıklarını Belirlemek . ....... 635
                DataGrid Sütun Başlıklarının Ortalanması....................... ....... 636
                DataGrid Sütun Genişliklerini Ayarlamak ....................... ....... 637
                DataGrid Sütunlarını ReadOnly Yapmak......................... ....... 637
                DataGrid Sutununu ComboBox Şeklinde Kullanmak...... ....... 637
                DataGrid Kontrolüne Ait Sütun Başlıklarını Renklendirmek .. 638
                DataGrid Sütunlarını Renklendirmek ............................... ....... 638
                DataGrid Font Ayarları..................................................... ....... 638
                DataGrid Kontrolünde İşe Yaramayan Sütunları Gizlemek..... 639
                DataGrid Kontrolünde Sütun Başlıklarını Gizlemek ....... ....... 640
      Kayıt Filtreleme İşlemleri........................................................................ 641
      Filtrelenmiş Kayıtlar Arasında Gezinmek ............................................... 644
                Filtreli Kayıtlarda Bir Sonrakini Git................................. ....... 644
                Filtreli Kayıtlarda Bir Öncekine Git ................................. ....... 645
                Filtreli Kayıtlarda İlk Kayda Git ...................................... ....... 645
                Filtreli Kayıtlarda Son Kayda Git..................................... ....... 645
                Tarih Aralığına Göre Filtre Uygulamak ........................... ....... 645
                Secondary Index Tanımlamak .......................................... ....... 645
                Parasal Aralığa Göre Filtre Uygulamak ........................... ....... 648


XXIV
Kayıt Arama İşlemleri ............................................................................. 651
         Locate Methodu ................................................................ ....... 651
         Birden Fazla Sütuna Göre Arama Yaptırmak................... ....... 653
         SetKey-GotoKey Methodları............................................ ....... 654
         SetKey-GotoNearest Methodları ...................................... ....... 655
         Lookup Methodu............................................................... ....... 656
Transaction İşlemi.................................................................................... 658
Database Kontrolü ................................................................................... 658
         Database1.StartTransaction .............................................. ....... 659
         Database1.Commit............................................................ ....... 659
         Database1.Rollback .......................................................... ....... 660
Query Kontrolü ........................................................................................ 664
         Query Kontrolüne Ait Yordamlar..................................... ....... 667
         Wizard Kullanarak Query Kontrolüyle Tabloya Bağlanmak... 669
         Query Kontrolüne Parametre Değeri Göndermek ............ ....... 670
         Parametre Olarak Tarih İçerikli Değişken Kullanmak..... ....... 673
         Parametre Olarak Parasal İçerikli Değişken Kullanmak .. ....... 674
         Birden Fazla Parametre Değeri Göndermek..................... ....... 675
         Opsiyonel Parametreli Sorgu Oluşturmak........................ ....... 676
Birden Fazla Tablo İle Çalışmak ............................................................. 678
Master Detail Form Yapısını Mauel Oluşturmak .................................... 682
Master-Detail Tablolarda Kayıt Arama İşlemleri.................................... 683
Lookup İşlemleri...................................................................................... 685
         DBLookupComboBox Kontrolü ...................................... ....... 685
         DBLookupListBox Kontrolü ............................................ ....... 689
Tabloda Lookup Sütunları Yaratmak ...................................................... 691
Rapor Dosyaları Oluşturmak ................................................................... 695
         QuickRep Kontrolü........................................................... ....... 696
         QRSubDetail Kontrolü ..................................................... ....... 696
         QRBand Kontrolü ............................................................. ....... 696
         QRGroup Kontrolü ........................................................... ....... 696
         QRLabel Kontrolü ............................................................ ....... 696
         QRDBText Kontrolü ........................................................ ....... 696
         QRExpr Kontrolü.............................................................. ....... 696
         QRSysData Kontrpolü ...................................................... ....... 696
         QRMemo Kontrolü ........................................................... ....... 696
         QRRichText Kontrolü ...................................................... ....... 697
         QRShape Kontrolü............................................................ ....... 697
         QRImage Kontrolü ........................................................... ....... 697
         QRDBImage Kontrolü...................................................... ....... 697
Gruplandırılmış Rapor Dosyası Oluşturmak ........................................... 702
Rapor Dosyasına Uygulamanızdan Erişmek ........................................... 709



                                                                                             XXV
BÖLÜM 18
REGISTRY İŞLEMLERİ .................................................................................... 711
      Registry .................................................................................................... 713
                Registry’ye Veri Yazdımak .............................................. ....... 714
                Alt Klasöre Veri Eklemek ................................................ ....... 717
                Ana Root’a Alt Klasör Eklemek....................................... ....... 718
                Alt Klasöre Değişken Eklemek ........................................ ....... 719
                Registry’den Kayıt Okutmak............................................ ....... 719
                Ana Root Altındaki Bir Değişkenin Değerini Öğrenmek ....... 720
                Alt Klasörden Değişken Değeri Okutmak........................ ....... 720
                Windows Registry Bilgilerini Okutmak ........................... ....... 721
                Alt Klasör Silmek ............................................................. ....... 722
                Alt Klasör İçerisindeki Değişkeni Silmek ........................ ....... 722
                Ana Root Altındaki Değişkenleri Öğrenmek ................... ....... 723
                AnaRoot Altındaki Alt Klasörleri Öğrenmek................... ....... 723

BÖLÜM 19
KONTROL OLUŞTURMAK .............................................................................. 727
     Delphi’de Kontrol Oluşturmak ................................................................ 729
             Kontrolü Compenent Paletine Yerleştirmek..................... ....... 731
             Active Formu Test Etmek................................................. ....... 733
     ActiveX Control Oluşturmak................................................................... 734
             ActiveX Control’e Function Eklemek .............................. ....... 735
             ActiveX Contrel’e Prosedür Eklemek .............................. ....... 736
             ActiveX Control’ün Derlenmesi....................................... ....... 737
             AvtiveX Control’ün Component Paletine Eklenmesi ...... ....... 737
             Yaratılan ActiveX Control’üm Projelerde Kullanılması.. ....... 738

BÖLÜM 20
EXCEL & .NET TEKNOLOJİSİ........................................................................ 741
      Excel Uygulamaları ................................................................................. 743
              Excel Dosyası Yaratmak................................................... ....... 743
              Excel Dosyasına Yeni Bir Sayfa Eklemek ....................... ....... 743
              Excel’deki Aktif Sayfanın İsmini Öğrenmek ................... ....... 744
              Excel Dosyasındaki Sayfa Sayısını Öğrenmek ................ ....... 744
              Excel Dosyasını Kapatmak............................................... ....... 745
              Excel Hücrelerine Veri Aktarmak .................................... ....... 745
              Excel Hücrelerinden Veri Okumak .................................. ....... 746
              Excel Sayfasında bir Hücreyi Aktif Hale Getirmek ......... ....... 747
              Excel Sayfasında Çoklu Hücre Seçtirmek........................ ....... 748
              Excel Hücresine Formül Aktarmak .................................. ....... 748
              Excel Dosyasından Aktif Sayfayı Silmek ........................ ....... 749
              Var Olan Bir Excel Dosyasını Açmak.............................. ....... 749


XXVI
Excel’de Grafik Çizdirmek............................................... ....... 750
            .Net Teknolojisi........................................................................................ 752

BÖLÜM 21
UZMANLAR İÇİN BEYİN JİMNASTİĞİ ........................................................ 755
     Birazda Beyin Jimnastiği ......................................................................... 757
              Uygulama 1....................................................................... ....... 757
              Uygulama 2....................................................................... ....... 757
              Uygulama 3....................................................................... ....... 758
              Uygulama 4....................................................................... ....... 758
              Uygulama 5....................................................................... ....... 759
              Uygulama 6....................................................................... ....... 759
              Uygulama 7....................................................................... ....... 760
              Uygulama 8....................................................................... ....... 761
              Uygulama 9....................................................................... ....... 762
              Uygulama 10..................................................................... ....... 763
              Uygulama 11..................................................................... ....... 764
              Uygulama 12..................................................................... ....... 765
              Uygulama 13..................................................................... ....... 765
              Uygulama 14..................................................................... ....... 766
              Uygulama 15..................................................................... ....... 767
              Uygulama 16..................................................................... ....... 769
              Uygulama 17..................................................................... ....... 776
              Uygulama 18..................................................................... ....... 777
              Uygulama 19..................................................................... ....... 778
              Uygulama 20..................................................................... ....... 779
              Uygulama 21..................................................................... ....... 781
              Uygulama 22..................................................................... ....... 782
              Uygulama 23..................................................................... ....... 785
              Uygulama 24..................................................................... ....... 785
              Uygulama 25..................................................................... ....... 786
              Uygulama 26..................................................................... ....... 787
              Uygulama 27..................................................................... ....... 790
              Uygulama 28..................................................................... ....... 797
              Uygulama 29..................................................................... ....... 798
              Uygulama 30..................................................................... ....... 799

BÖLÜM 22
SETUP PROJESİ OLUŞTURMAK.................................................................... 801
       Setup Projesi Oluşturmak ........................................................................ 803
       Setup Projesinin Diğer Bilgisayarlara Yüklenmesi ................................. 811




                                                                                                        XXVII
BÖLÜM 1
DELPHI’YE GİRİŞ
2
Delphi 7’ye Giriş:

“Delphi 7’ye hoşgeldiniz.” diyerek, kitabımın ilk kısmına geçmek istiyorum.
Çok gelişmiş bir yazılım diliyle karşı karşıya olduğunuzun sanıyorum siz de
farkındasınız. Gerek veri tabanı uygulamaları, gerekse diğer uygulamalarda
(Internet, Intranet, XML, HTML ve .NET desteği) son derece gelişmiş projeler
oluşturmak, Delphi ile çok kolaylaşmıştır (çok da güvenilirdir). Bu yüzden ticari
yazılımların ülkemizde (diğer bir çok ülkede de) en yaygın olanı sanıyorum
Delphi’dir. Kitapta uygulama ve geliştirme alanında kullanabileceğiniz tüm
konulara değinilecektir. Eğer herhangi bir kısımda uzmanlaşmak isterseniz,
(işiniz gereği vs.) daha fazla teknik bilgiye ihtiyacınız olursa “e-mail”
adresimize başvurabilir veya direkt olarak Prestige Education Center’dan
yazılım desteği alabilirsiniz (Gerek piyasada bulunan projelerimizle, gerekse de
yetiştirdiğimiz binlerce öğrencimizden sonra; bu hususta çok güvenilir bir
kaynak olduğumuzu düşünüyoruz). Kitapta; temel konular ve diğer uzmanlık
alanlarını da içeren bir çok konu detaylı örneklerle önünüze sunulacaktır.
Tecrübemiz; size hikaye anlatmaktan çok, örnek kodlarla beraber detaylı
açıklamalarda bulunmamız gerektiğini göstermiştir. Mümkün olduğu kadar bu
amacın dışına çıkmamaya çalışacağız. Artık Delphi ekranını tanıyarak, basitten
zora doğru kod yazma işlemine geçebiliriz.

“Delphi 7” programını bilgisayarınıza kurduktan sonra, aşağıdaki adımları
izleyerek (Start-> Programs-> Borland Delphi 7-> Delphi 7) kolayca
çalıştırabilirsiniz.




Yukarıdaki adımları izledikten sonra, karşınıza “Delphi 7” açılışına ait
(Bilgisayarınızın hızına bağlı olarak ekranda biraz kalabilir.) pencere gelecek,
arkasından tasarım ekranına ulaşılacaktır. Bu ekran, hepinizin bildiği gibi
Windows Formlarından (veya diğer nesnelerinden) oluşmaktadır. Diğer


                                                                               3
yardımcı nesneleri bu formlara ekleyerek proje geliştirebilmekteyiz (Windows
Formları olmadan da proje geliştirilebilir).

Aşağıda karşınıza açılan penceredeki Windows Formlarına ait nesneler
gösterilmiştir:




Bu ekran bir çok Windows nesnesinden oluşmakta olup, şimdi sizlere bu
pencerelerin ne tür işlemler için kullanılabileceklerinden bahsetmek istiyorum.

Component Palette:

Bu pencere, “Delphi 7” içerisinde uygulama geliştirebilmeniz için
kullanabileceğiniz form dışındaki tüm kontrolleri (Kullanım amaçlarına göre
gruplandırma yapılarak ayrı ayrı yapraklar halinde verilmişlerdir.) içerisinde
barındıran bir nesnedir.




4
Bu yapraklardan birtanesine tıkladığınız zaman, o gruba ait tüm kontrolleri
görebilirsiniz. Hangisini projenizde kullanacaksanız üzerine mousun sol tuşuyla
çift tıklayıp, formunuzun üzerine ekletebilirsiniz.

Örnek olması açısından “Standart” yaprağında bulunan “Button” kontrolünün
üzerine çift tıklayın, formunuzun üzerine eklendiğini göreceksiniz. Boyutlarını
ve koordinatlarını mousunuzla kolayca değiştirebilirsiniz. Şimdi de aynı işlemi
“Edit” kontrolü için yapın, formunuz aşağıdaki hali alacaktır.




Burada asıl göstermek istediğim; eklemiş olduğunuz her kontrolün kullanacağı
kütüphaneyi Delphi’nin otomatik olarak projeye dahil ettiğidir. Peki ama bu
kodu nereye ekledi? Tabii ki aşağıdaki “Unit.pas” penceresinin (Formun üzerine
çift tıklarsanız erişebilirsiniz.) içerisine (“pas” uzantılı dosyalar yazmış
olduğunuz kodları saklarlar.) dosyayı kaydettikten sonra bu kodlar “pas” uzantılı
olarak yeni bir dosya oluşturmaktadır.




Buradaki mantık “Nesneden nesne yaratma (Object Oriented)” şeklinde
işlemektedir. Daha detaylı olarak açıklayacak olursak, “TButton” Delphi
içerisinde bu kontrole ait tüm özelliklerin ve metodların tanımlandığı bir
class’tır. “Button1” de, bu Class’tan türetilen yavru üyenin adıdır. Dolayısıyla


                                                                               5
bu sınıfa ait statik olmayan (Daha sonra açıklanacaktır.) tüm yöntemleri de
bünyesinde barındıracaktır.

Delphi’nin tüm kontrollere ait kütüphaneleri projenize başlangıç anında
eklememesinin sebebi, performansı en üst düzeyde tutmak istemesinden
kaynaklanmaktadır (Kullanılmayan bir class’ın projeye eklenmesi sanırım pek
hoş olmayacaktır). Neyse son derece teknik olan bu hususlara daha sonraki
bölümlerde detaylı olarak değinecek olup, şimdiden kafanızı fazla şişirmek
istemiyorum.

Object Inspector, Exploring Unit.pas:

Bu pencereden projenize eklemiş olduğunuz form ve diğer nesneleri (Button,
Edit vs.) izleyebilirsiniz. Şayet buradaki nesnelerden herhangi birtanesinin
üzerine mous ile çift tıklarsanız, “Unit.pas” penceresinde o nesnenin
tanımlanmış olduğu satıra ulaşabilirsiniz.




Alt kısımda yer alan diğer pencereden de eklemiş olduğunuz kontrole ait
özellikleri “Properties” yaprağından değiştirebilirsiniz. Eğer bu pencere ekranda
gözükmüyorsa, “View->Object Inspector” adımlarını izleyerek gözükmesini
sağlayabilirsiniz.

Events’lara Erişebilmek:

Delphi içerisinde kod yazabileceğiniz yordamlara (Tetikleyiciler) ulaşabilmek
için yukarıdaki pencerenin (Object Inspector) “Events” yaprağına
tıklayabilirsiniz. Bu yaprakta hangi yordama kod yazacaksanız, sağında yer alan
beyaz kutunun içerisine mous ile çift tıklamalısınız.

6
Aşağıda “Events” yaprağına ait görüntü ekranı verilmiştir. Burada Form’a ait
(Seçili eleman form olduğu için) bir çok tetikleyici görüntülenecektir. Bunlar
daha sonra detaylı olarak kitabın ilerleyen kısımlarında anlatılmıştır.




Kod Penceresine Ulaşmak:

Yukarıdaki pencerede herhangi bir yordama (İsimlerinin sağındaki beyaz alana)
mous ile çift tıklarsanız, kodları yazabileceğiniz ekrana kolayca ulaşabilirsiniz.
Aşağıdaki pencereye “OnCreate” yordamı çift tıklanılarak ulaşılmıştır.




Bu yordama ait işleteceğiniz kodları yukarıda işaretlenen yerlere yazmalısınız.

                                                                                  7
Kod (Unit) Penceresinin Özellikleri:

Yukarıda açmış olduğunuz “Unit” penceresi, görsel dillerle beraber
kullanılmaya başlayan bir çok özelliği de beraberinde getirmektedir. Bu ekran
bir Editör programının parçası olup, epeyce kullanışlı özelliği bulunmaktadır.
Aşağıda en önemli özelliklerinden bahsedilmektedir.

    • Ctrl+Space Tuşunun Beraber Kullanılması:

Unit penceresinde kodlarınızı yazarken herhangi bir komutun baş harflerini
hatırlamanız, satırı tamamlamanız için yeterli olacaktır (Kodun doğru
yazılabilmesi için devamlı kullanmanızı tavsiye ederim). Aşağıdaki pencerede
izlenen adımlara dikkat ediniz.




Bu ekranda “Edi” yazıp “Ctrl+Space” tuşlarına beraberce basarsanız, eklenmiş
olan kütüphanelere ait yazabileceğiniz tüm komutları listeleyen yeni bir
pencereyle karşılaşacaksınız. Enter tuşuna basarak bu pencereden istediğiniz
komutu seçebilirsiniz.

    • Kod Penceresinde “.” Karakterinin Kullanılması:

Yukarıda anlatılan şekilde (Ctrl+Space), kullanacağınız komutun ismini tam
olarak yazdırdıktan sonra (Ezbere de yazabilirsiniz tabii ki) klavyeden “.” tuşuna
basarsanız, o kontrole (veya komuta) ait tüm özellik ve metodların içerisinde
bulunduğu yeni bir listeyle karşılaşırsınız. Hangi özelliği (veya metodu)
kullanacaksanız “Enter” tuşuyla seçebilirsiniz (Bu özellik kod yazma kolaylığı
açısından gerçekten devrim sayılabilecek bir olaydır). Burada dikkat edeceğiniz
husus, eğer bir kontrole ait tüm özellikleri listelemek istiyorsanız; o kontrolün
sürüklenip (veya kodla eklenmesi gerekir) formun üzerine bırakılması



8
gerektiğidir. Projeye tanıtılmamış bir kontrolün özelliğini listelemeniz mümkün
olmamaktadır. Aşağıda bu olay örneklendirilmiştir.




Kod yazarken bu pencere sizi devamlı olarak yönlendirecektir. Sonuç olarak her
zaman doğru kod satırları oluşturmuş olacaksınız. Açılan pencerenin sol kısmına
dikkat edecek olursanız komutun bir özellik, procedure veya function olduğu da
belirtilmektedir. Sağ tarafta ise metodun veya özelliğin döndürdüğü tip
gösterilmektedir.

Object TreeView Penceresi:

Bu pencere, eklemiş olduğunuz kontrollere ait bilgileri ağaç yapısı şeklinde
listelemek için kullanılabilmektedir. Herhangi bir kontrolün üzerine mousun sol
tuşuyla tıklarsanız, o kontrolün aktifleşmesini sağlayabilirsiniz. Aynı şekilde
mous ile çift tıklama yaparsanız sizi kod sayfasına ulaştıracaktır.




                                                                  .

Eklemiş olduğunuz tüm kontrolleri bu pencereden takip edebilirsiniz.


                                                                             9
Eğer ekranınızda bu pencere gözükmüyorsa “View->Object TreeView”
adımlarını izleyerek gözükmesini sağlayabilirsiniz.

Yukarıdaki pencereleri dilerseniz üst üste mous ile yerleştirerek tek bir
pencerede gösterilmesini de sağlayabilirsiniz. Uygulama açısından pencerelerin
nerede olduğu Delphi’yi fazla ilgilendirmemektedir, hangisi kolayınıza geliyorsa
o şekilde kullanabilirsiniz.




Pencereye dikkat edecek olursanız üç farklı yaprağın bulunduğunu
görecekseniz. Ekranınızda daha rahat çalışabilmeniz için bu yöntemi
uygulamanızı tavsiye ederim.

Delphi Dosya Uzantıları:

Oluşturduğunuz Delphi projesi aşağıdaki uzantılı dosyaları otomatik olarak
oluşturacaktır.




10
Bu uzantılı dosyaları açıklamaya çalışalım.

Dosya Uzantısı                                İçeriği
Dof               Pencere Ayarları
Dfm               Windows Formlarına ait bilgileri Tutar
Res               Grafiksel kaynak kodlarını tutar (resim vs.)
Pas               Unit lere ait kodları Tutar
Dpr               Projeye ait Bilgiler Tutulur

Projenizi kaydedip bir kere çalıştırdıktan sonra aşağıdaki iki dosyada
klasörünüze eklenecektir.

Dosya Uzantısı                              İçeriği
Exe            Tek başına çalıştırılabilir Dosya
Dcu            Unit kodlarınızın derlendikten sonra tutulduğu dosyadır




Bu iki dosyayı silerek projelerinizi diskete kaydedebilirsiniz. Uygulamanızı her
çalıştırdığınızda, bu dosyalar yeniden Delphi tarafından oluşturulacaktır.

Kod Penceresine Ait Font Ayarları:

Delphi, sizlere Unit penceresine yazacağınız kodları belirlemiş olduğu grup
dahilinde değişik formatlarda yazmanıza imkan tanımaktadır. Mesela aynı
pencere içerisinde kod satırları ile açıklama satırlarının farklı renkte olması
(veya farklı kalınlıkta) bu sayede mümkün olabilmektedir. Dilerseniz tamamen
sizin hoşunuza gidebilecek bir düzende oluşturabilirsiniz. Aşağıda kod
penceresine ait Editör ayarlarını nasıl yapabileceğiniz açıklanmıştır.




                                                                             11
“Tools->Editor Options” adımlarından sonra karşınıza aşağıdaki “Editor
Properties” penceresi açılacaktır. Bu pencerenin “Color” yaprağını aktif hale
getirin.




“Elements” kısmında gruplandırılmış olarak bulunan seçeneklerden bir tanesini
seçip, o elemana ait tüm font ayarlarını belirleyebilirsiniz. Yapacağınız
değişiklikler sadece “Elements” kısmından seçmiş olduğunuz gruba etki
edecektir.    Diğer  grupta    bulunan    elemanlar    bu    değişikliklerden
etkilenmeyecektir.

Uses İfadesi:

Uses deklarasyonu sayesinde, Delphi içerisinde tanımlı olan kütüphaneler (veya
sizin oluşturduğunuz diğer Unit leri çağırmak) projeye dahil edilebilirler. Bu
sayede kütüphanelerin içerisinde tanımlı olan fonksiyon, değişken, procedure ve
özellikleri kolayca kullanabilirsiniz. Uygulamanızın ilk çalışması anında en çok
kullanılan kütüphaneleri Delphi otomatik olarak projenize dahil edecektir. Fakat
bazı durumlarda sizin dahil edilmeyen kütüphaneler içerisinde tanıtılmış olan
metodlara ihtiyacınız olacaktır. İşte bu kütüphaneleri uygulamanıza ancak
“Uses” bildirisiyle çağırabilirsiniz.

“Uses” bildirisinin nasıl yapılacağı aşağıda gösterilmiştir.


12
Pencereye dikkat edecek olursanız tek bir “uses” deklarasyonu sayesinde araya
“,” konularak bir çok kütüphane uygulamanıza dahil edilmiştir (Dahil edilen bu
kütüphaneler sadece Unit1 tarafından kullanılabilir).

Uses bildirimini daha iyi anlamanız için aşağıdaki örneği dikkatlice inceleyiniz.
Örnekte Buttona tıklanılarak kullanıcıya basit bir mesaj iletilmesi istenmiş olup,
bu amaçla aşağıdaki kod satırı eklenmiştir.




Programı çalıştırıp Button2’ye tıklayacak olursanız aşağıdaki pencereyle
belirtmiş olduğunuz uyarı kullanıcıya iletilecektir.




Peki neden bu uyarı gözüktü? Hemen izah edeyim, çünkü “ShowMessage”
fonksiyonu “Dialog” kütüphanesinin içerisinde tanımlanmıştır (Dilerseniz Ctrl
tuşu basılıyken mousun sol tuşu ile “ShowMessage” yazısının üzerine tıklayın) .


                                                                               13
Uses satırında da bu kütüphane projenize dahil edildiği için, Buttona her
tıkladığınızda mesaj ayrı bir pencere olarak karşınıza gelecektir.




Şimdi Uses satırında yer alan kütüphanelerden “Dialogs” olanını silip
uygulamanızı     çalıştırırsanız  (çalıştıramayacaksınız)   “ShowMessage”
fonksiyonunu bulamadığına dair uyarıyı sizlere iletecektir.

Project Manager Penceresi:

Bu pencere sayesinde projeniz için oluşmuş olan dosyaların kayıtlı oldukları
adresleri izleyebilirsiniz. Burada gözüken bir proje grubudur ve bu gruba ait bir
çok Delphi dosyasının bulunduğu sanıyorum dikkatinizi çekmiştir.




Şayet bu pencere ekranda gözükmüyorsa “View->Project Manager” adımlarını
izleyerek ekranda açtırabilirsiniz. “New” komutuyla ekleme, “Remove”
komutuyla da silme işlemini gerçekleştirebilirsiniz.



14
Window List Penceresi:

Ekranda gözüküyor konumda olan tüm nesneleri izleyebileceğiniz bir
penceredir.




Bu pencereden herhangi bir nesneyi seçip “OK” Buttonuna tıklarsanız, seçmiş
olduğunuz pencereniz aktifleşecektir. Şayet bu pencere ekranda gözükmüyorsa
“View->Windows List” adımlarını izleyerek gözükmesini sağlayabilirsiniz.




                                                                        15
16
BÖLÜM 2
DELPHI’NİN TEMELLERİ




                       17
18
Örnekleri Yapabilmeniz İçin Gerekli Olan Pratik Kodlar:

EditBox’ın içerisinde bulunan değeri tamsayı tipli değişkene aktarmak




Koda dikkat edecek olursanız ilk olarak “x” isminde tamsayı değişkeni
tanımlanmakta olup, kontroldeki değeri alabilmesi için “StrToInt” (Stringi
Tamsayıya çevir) tip çeviri fonksiyonuna ihtiyaç duyulmaktadır. Eğer bu tip
dönüştürme işlemini yapmazsanız, Delphi size sonucu hesaplayamayacağına
dair hata mesajı iletecektir.

TamSayı tipli değişkenin değerini yazdırmak




Tamsayı tipli bir değişkeni yazdırabilmek için muhakkak “String”e
çevirmelisiniz. Bu dönüşümü yapabilmeniz için Delphi’de “IntToStr”
fonksiyonu kullanılabilmektedir.

Uyarı:Bu tür tip dönüştürme işlemlerinde kullandığınız atama operatörünün
(“:=”) solundaki ve sağındaki verinin tiplerinin aynı olması gerekmektedir.

                                                                        19
Ayrıca kontroller üzerinde klavye ile girilebilen veri tiplerinin string olduğunu
da unutmayınız.

EditBox’ın içerisinde bulunan değeri Reel Sayı tipli değişkene aktarmak




Uygulanan yöntem şu; atama operatörünün sol ve sağında yer alan veri tiplerinin
aynı olmasını sağlamak için “Edit” kontrolünün içerisinde yer alan değer
“StrToFloat” fonksiyonu sayesinde reel sayı tipine çevrilmekte, ondan sonra
atama işlemi gerçekleştirilebilmektedir.

Reel Sayı Tipli Bir Değişkenin Değerini Yazdırmak:




Aynı mantık uygulanarak reel sayı değişkeni “FloatToStr” tip dönüştürme
fonksiyonu sayesinde stringe çevrilip, arkasından da EditBox’ın içerisinde
yazdırılmaktadır (Herhangi bir tipteki matematiksel değişkenin değerini
yazdırabilmeniz için muhakkak stringe dönüştürmeniz gerekir. Aksi halde
Delphi size hata mesajı iletecektir).


20
EditBox’ın İçerisine String Veri Yazdırmak:

String tipli bir değişkenin değerini (veya direkt string i) EditBox kontrolünde
yazdırabilmeniz için (‘) operatöründen faydalanabilirsiniz. Aşağıda her iki
durum içinde örneklendirme yapılmıştır.




Aşağıda verilen örnekte ise procedure içerisinde string tipli bir değişken
tanımlanarak, bu değişkene aktarılacak olan içerik yazdırılmaktadır.




Burada kullanılan “x” değişkeninin tipi string olarak verildiği için atama (:=)
operatörünün sol ve sağındaki tipler aynı olmaktadır. Bu yüzden tip dönüşüm
işlemi uygulamak zaten mantıksız olurdu.

EditBox’ın içerisinde bulunan değeri Tarihsel tipli değişkene aktarmak

Bir çok uygulamanızda tarihsel veri içeren değerlerle işlem yapmak zorunda
kalacaksınız. Bu elinizdeki tarihsel değişkenin değerini yazdırmak, veya tarihsel


                                                                              21
değer barındıran bir kontrolün içeriğini değişkene aktarmak şeklinde olabilir.
Şimdi sizlere EditBox’ın içerisinde bulunan string (Ama tarihe dönüştürülebilir)
içeriği tarihsel bir değişkene nasıl aktarabileceğinizi göstereceğim.




Kodu inceleyecek olursak, kontrolün içerisindeki string tipli veri “StrToDate”
fonksiyonu sayesinde tarihsel içeriğe dönüştürülüp bir gün eklenmektedir.
Ardından tekrar ters dönüşüm yapılarak (tarihten-stringe), formunuzun
başlığında yazdırılmaktadır.

Tarihsel Değişkenin Değerini Yazdırmak:

Tarihsel içerikli bir değişkenin değerini aşağıdaki şekilde oluşturacağınız bir
kod satırı sayesinde kolaylıkla yazdırabilirsiniz.




Tip dönüştürme işlemlerine lütfen dikkat ediniz.



22
Aktif Formu Kapatmak:

Çalışan aktif formu kapatmak (Eğer tek formunuz varsa aynı zamanda
programınız da sonlanacaktır.) için aşağıda gösterilen şekilde basit bir kodlama
kullanabilirsiniz.




Alt Satırdaki Kodların İşlemesini Engellemek:

Bazı durumlarda procedure içerisinde belirlediğiniz bir koşul oluştuğu anda alt
satırlardaki kodların işlemesini istemeyip, kod okumayı sonlandırabilirsiniz.
(C++ daki return, veya Visual Basic deki Exit Sub). Şimdi bu tür kodlamaya
örnek vereceğim.




Şayet “exit” komut satırı olmasaydı formun başlığında “Yüksel İnan” stringi
yazacaktı. Fakat “exit” sayesinde altta yer alan iki satır kod okutulmamakta,
bundan dolayı formun başlığında “Nihat Demirli” içeriği yazdırılmaktadır (Bir
çok durumda çok fazla işinize yarayacak bir komuttur).


                                                                             23
Programı Sonlandırmak:

Aktif formla beraber diğer tüm formları da kapatmak için aşağıdaki şekilde bir
kod satırı kullanabilirsiniz.




Programı İkinci Formdan Başlatmak:
Şayet uygulamanızda birden fazla Windows formu varsa ve siz projenizi ikinci
(veya diğer herhangi bir formda olabilir) formunuzdan başlatmak istiyorsanız,
belirtilen adımları izlemelisiniz.“Project->Options” menü adımlarından sonra
aşağıdaki pencere açılacaktır.




Bu pencerenin “Forms” yaprağını aktifleştirin. Bu yaprakta bulunan “Main


24
Form kısmından programın ilk çalıştırılacağı formu seçebilirsiniz (Bu pencerede
uygulamanıza dahil edilmiş olan tüm pencereler listeli halde bulunacaktır).

Herhangi Bir Exe Uygulamasını Çalıştırmak:

Aşağıdaki gibi projenize ekleyeceğiniz tek satırlık kodla, istediğiniz “exe”
(Dosya yolunu doğru giriniz.) uzantılı dosyayı kolaylıkla çalıştırabilirsiniz.




Burada hatırlatmak isterim. Şayet yetki probleminiz yoksa, aşağıdaki gibi
“UNC” (Network adresi) path belirterek de dilediğiniz bir bilgisayardaki
dosyayı da çalıştırabilirsiniz.

Ağdaki Bir Bilgisayarda Bulunan Exe Uzantılı Dosyayı Çalıştırmak:

Başka bir bilgisayardaki dosyayı çalıştırmak istiyorsanız bu durumda “UNC”
path i kullanmalısınız.




“UNC” pathmakineadıklasörpaylaşımadıdosyaadı şeklinde kullanılmaktadır.
Yukarıdaki kod satırında Efsane isimli bilgisayarda, paylaşıma açılmış olan
WINNT klasörünün içerisindeki, Notepad.exe dosyası çalıştırılmak
istenmektedir.


                                                                            25
Değişkenler:

Paket yazılımların her firma için (veya kişi) farklı sonuçlar oluşturması,
programın içerisinde değişkenlerin kullanılmasından kaynaklanmaktadır. Zaten
böyle olmasaydı yazılımların hiç bir anlamı kalmazdı. Delphi’de değişken
temeline dayalı yazılım dilidir ve bu hususta sanıyorum varılabilecek en üst
noktaya ulaşmış bulunmaktadır. Bu kadar önemli olan bir konuda tabiidir ki
dikkat edilecek birtakım önemli hususlar vardır. Şimdi sizlere bu hususlardan
bahsetmek istiyorum.

Delphi’de değişken kullanılacaksa muhakkak programa bildirilmelidir. Bir
değişkeni programa bildirmek için iki yöntem bulunur. Bunlardan birincisi
procedure’un dilediğiniz yerinde değerini değiştirebilmenizi sağlayan “Var”
bildirisi, diğeri ise tanımlandığında atanacak olan değer dışında başka değer
alamayan (İstisnaları vardır. Daha sonra izah edilecektir.) “Const” bildirisidir.
Ayrıca Delphi’de değişkenlerinizi rastgele yerlerde tanımlayamazsınız, değişken
tanımlayabilmeniz için size procedure’un içerisinde bir blok sunmaktadır.




Delphi size procedure-begin arasında değişken tanımlama imkanı vermektedir.
Başka rastgele bir yerde değişken tanımlamanız mümkün olmamaktadır. Bu
blokta Const’la tanımlanmış değişkenlere ilk değerini atama dışındaki işlemleri
yapamazsınız (Bu tür kodsal işlemler sadece procedure’den sonra gelen begin-
end bloğu içerisinde yapılabilir).

Aşağıdaki kod penceresinde, procedure içerisinde local (Sadece o procedure
tarafından kullanılabilen ve işlem bittikten sonra bellekten atılan değişkenlerdir.)
değişkenlerin nasıl tanımlanabileceği gösterilmiştir. Belirtilen blok içerisinde
tanımlanan tüm değişkenler local değişken olarak adlandırılırlar. Bir değişkenin
local olması diğer procedure’ler tarafından kullanılamaması ve yordam bir kere
işletildikten sonra o değişkenin bellekten atılacağı anlamını taşımaktadır.
Pencereyi dikkatlice inceleyiniz.



26
Delphi’de aynı satırda araya ”,” koyarak aynı tipte birden fazla değişken
tanımlanabilmektedir. Ayrıca tek bir “var” bildirisi kullanarak birden fazla
satırda değişken tanımlamakta mümkündür (Aynı işlem const içinde mümkün
olmaktadır).

Değişken Tanımlarken Dikkat Edilecek Olan Hususlar:

Değişkeninizi tanımlarken aşağıdaki hususlara dikkat etmelisiniz.

   • Değişken isimleri kesinlikle rakamla başlayamaz. Fakat ismin içerisinde
     veya sonunda rakam kullanılabilir.

Var     //Değişken bildirisi için gereklidir.
5nih:integer; //Yanlış tanımlanmış bir değişken
nih55:integer; //Doğru tanımlanmış bir değişken

   • Değişken isimleri içerisinde değişik karakterler kullanamazsınız (Başında
     veya sonunda da olamaz).

Var
Nih#dem:integer; //Yanlış tanımlanmış bir değişken
Nih#3:AnsiString; //Yanlış tanımlanmış bir değişken

   • Değişken isimlerinde araya space tuşuyla boşluk bırakamazsınız. Yani
     değişkeninizin ismi birden fazla kelimeden oluşamaz. Eğer böyle bir
     değişken (Adı ve soyadını ayrık yazmak isteyebilirsiniz) tanımlamak
     zorunda kalırsanız, iki kelime arasına “_” karakterini yerleştirin.


                                                                           27
Var
     N demirli:AnsiString;       //Yanlış bir değişken tanımlandı
     N_demirli:AnsiString;       //Doğru bir değişken tanımlaması

     • Delphi içerisinde kullanılan herhangi bir komut değişken ismi olarak
       kullanılamaz.

Var
Not:integer; //Yanlış bir değişken tanımlandı
Not1:integer; //Doğru bir değişken tanımlaması

     • Var bildirisiyle tanımlanan bir değişkene tanımlandığı anda değer ataması
       yapılamaz.

Var
Sayi:integer=100;             //Yanlış bir atama
Numara:Double=200.25         //Yanlış bir atama

Sayısal bir değişken tanımlandığı anda ilk değer olarak belirtilen tipe göre
rastgele bir değer almaktadır (0 değil).

     • Const ile yapılan bildiri sonucu tanımlanmış olan değişkene ilk değerini
       atamak zorunludur.

Const
Pi:Double;                 //Yanlış bir değişken tanımlaması
Pi:Double=3.14;           //Doğru bir değişken tanımlaması

     • Var bildirisiyle tanımlanmış değişkene procedure içerisinde istenildiği
       anda yeni bir atama yapılabilir.

     • Const ile bildirilmiş sabit değişkenlere procedure içerisinde yeni değer
       aktarılamaz (Bunun istisnası vardır. Özel bildiriler eklenerek değişkene
       yeni değer aktarılabilmektedir, fakat bu konu daha sonra detaylı olarak
       işlenecektir).

     • Local değişkenker procedure işlemeye başladığı               anda   bellekte
       oluşturulup, kod sonlandığı anda da bellekten atılırlar.

     Şimdi Delphi içerisindeki değişken tiplerini inceleyelim.


28
Tam Sayı Değişken Tipleri:

Delphi içerisinde sadece tam sayı değeri atayabileceğiniz değişken tipleri
aşağıda sırasıyla sizlere aktarılmaktadır.

   • Shortint

(-128)-(+128) arasında değer alabilen tam sayı tipli bir değişkendir. Eğer bu
değerlerin dışında bir sayı aktarılmaya çalışılırsa taşma (owerflow) hatası
verecektir. Bu değişken bellekte 1 Byte (8 bit) lik yer işgal eder.

Var
Yas:Shortint; //Sadece -128 ile 128 arasında değer atanabilir.

   • Smallint

(-32768)-(+32768) arasında tam sayı değeri atanabilen değişken tipidir.
Bellekte 2 Byte (16 bit) lık yer işgal edecektir.

Var
Sayi:Smallint; //Sadece -32768 ile 32768 arasında tam sayı değeri atanabilir


   • Longint

(-2147483648)-(+2147483647) arasında tam sayı değerleri alabilen bir değişken
tipidir. Bellekte 4 Byte (32 bit) yer işgal edecektir.

Var
Sayi:Longint; //Sadece -2147483648 ile 2147483648 arasında değer atanabilir.

   • Integer

(-2147483648)-(+2147483647) arasında tam sayı değerleri alabilen bir değişken
tipidir. Bellekte 4 Byte (32 bit) yer işgal edecektir.

Var
Sayi:Integer; //Sadece -2147483648 ile 2147483648 arasında değer atanabilir.




                                                                               29
• Int64

(-2^63)-(2^63-1) arasında tam sayı değeri atanabilen değişken tipidir. Bellekte 8
Byte (64 bit) yer işgal edilecektir.

Var
Sayi:Int64; //Sadece -2^63 ile 2^63 arasında değer atanabilir.

     • Byte

0-255 arasında pozitif tam sayı değeri alabilen değişken tipidir. Bellekte 1 Byte
(8 bit) lık yer işgal edecektir.

Var
Sayi:Byte; //Sadece 0-255 arası pozitif tam sayı değeri alabilir.

     • Word

0-65535 arası pozitif değer alabilen değişken tipidir. Bellekte 2 Byte (8 bit) lık
yer işgal edecektir.

Var
Sayi:Word; //Sadece 0-65535 arası değer atanabilir.

     • Longword

0-4294967295 arası pozitif değer atanabilen değişken tipidir. Bellekte 4 Byte
(32bit) lık yer işgal edilecektir.

Var
Sayi:Longword; //Sadece 0-4294967295 arası değer atanabilen değişken tipidir.

     • Cardinal

0-4294967295 arası pozitif değer atanabilen değişken tipidir. Bellekte 4 Byte
(32bit) lık yer işgal edilecektir.

Var
Sayi:Cardinal; //Sadece 0-4294967295 arası değer atanabilen değişken tipidir.



30
Reel Sayı Değişken Tipleri:

Delphi içerisinde ondalıklı sayı değeri atayabileceğiniz değişken tipleri aşağıda
sırasıyla sizlere aktarılmaktadır.

   • Real48

(+-2.9*10^-39) ve (+-1.7*10^38) arasında değer alabilen reel sayı tipidir.
Ondalıklı kısımdan 11-12 dijite kadar hassas çalışabilir. Bellekte 6 Byte (48 bit)
yer işgal etmektedir.

Var
Sayi:Real48; //Sadece yukarıdaki sınırlar içerisinde değer alabilir.

   • Single

(+-1.5 x 10^-45) ve (+-3.4 x 10^38) arasında değer alabilen reel sayı tipidir.
Ondalıklı kısımdan 7-8 dijit hassasiyetiyle işlem yapabilir, ve bellekte 4 Byte
(32 bit) lık yer işgal eder.

Var
Sayi:Single; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir.

   • Double

(+-5.0 x 10^-324) ve (+-1.7 x 10^308) arasında değer alabilen reel sayı tipidir.
Ondalıklı kısımdan 15-16 dijite kadar hassasiyetle işlem yapabilmektedir.
Ayrıca bellekte bu değişken 8 Byte (64 bit) lık yer işgal edecektir.

Var
Sayi:Double; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir.

   • Real

(5.0 x 10^-324) ile (1.7 x 10^308) arasında değer saklayabilen reel sayı tipidir.
Bellekte 8 Byte (64 bit) lık yer işgal edecektir.

Var
Sayi:Real; //Sadece yukarıdaki sınırlar arasında değer alabilir.




                                                                                31
• Extended

(+-3.6 x 10^-4951) ve (+-1.1 x 10^4932) arasında değer alabilen reel sayı
değişken tipidir. Ondalıklı kısımdan 19-20 dijite kadar hassasiyetle işlem
yapabilir. Ayrıca bellekte 10 Byte (80 bit) lık yer işgal edecektir.

Var
Sayi:Extended; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir

     • Comp

(-2^63+1) ile( 2^63 -1) değer alabilen değişken tipidir. Ondalıklı kısımda 19-20
dijit hassasiyeti ile değer saklayabilir. Ayrıca bellekte 8 Byte (64 bit) lik yer
işgal edecektir.

Var
Sayi:Comp; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir.

     • Currency

Parasal veriler için kullanılabilen bu değişken tipi (-922337203685477.5808)
(922337203685477.5807) arasında değer alabilen 19-20 dijitlik bir değişken
tipidir (Ondalıklı kısımdan 4 basamak hassasiyetiyle çalışır). Ayrıca bellekte 8
Byte (64 bit) lik yer işgal edecektir.

Var
Para:Currency; //Ondalıklı kısımdan sadece 4 basamak tutar.

Değişkenlerinizi en ekonomik tipte tanımlamanız, size daha hızlı sonuca
ulaşabilme özelliği kazandıracaktır. Bu yüzden değişken tanımlarken nasıl olsa
Extended hepsini kapsıyor, bu tip tanımlayıp işlemlerimi yaptırayım
düşüncesinden her zaman uzak durmalısınız. Bir adamın yaşını aktaracağınız
değişkeni Double tanımlamanız sanıyorum size de fazla mantıklı gelmeyecektir.

Bu kısma kadar olan değişkenlerin hepsi sayısal içerikliydi, buradan sonraki
kısımda ise sayısal içeriği olmayan diğer değişkenler incelemeye alınacaktır.
Öncelikle String tipler.




32
String Değişken Tipleri:

Bu bölümde karakter işlemlerinde kullanabileceğiniz değişken tiplerinden
bahsedeceğim. Matematiksel ve Tarihsel içeriği olmayan değerleri tutmak için
kullanılan tiplerdir.

   • ShortString

255 Kraktere kadar veri alabilen string değişken tipidir.




Bu tipteki değişkene (‘’) içerisinde bilgi aktarıldığına dikkat ediniz.

   • AnsiString

Yaklaşık olarak 2^31 karaktere kadar değer atanabilen (en çok kullanacağınız)
ve Ansi karakter desteği olan bir değişken tipidir. Kullanımı ShortString
değişkeniyle aynıdır.

   • WideString

Yaklaşık olarak 2^31 karaktere kadar (Unicode) değer atanabilen değişken
tipidir.

Var
Ad:WideString; //String değişken tanımlandı

String tipte değer alacak olan değişkenlerinizi yukarıdaki üç tipten birtanesiyle
tanımlayabilirsiniz.



                                                                              33
Boolean Tip Değişken Tanımlamak:

Bir değişkeniniz sadece true veya false değerlerini alacaksa bu durumda
değişkeninizi Boolean tip tanımlamalısınız. Bu tip değişkenlerde üçüncü bir
durum söz konusu değildir. Ayrıca değişken tanımlandığı anda varsayılan değeri
false dır.

Var
Sonuc:Boolean; //true veya false değerini alabilir.

Tarihsel İçerikli Değişken Tanımlamak:

Delphi içerisinde tarih bilgisi içeren değerleri tutabilecek olan değişkenler,
TDate    class’ından    türetilerek   kullanılabilir.   Aşağıda   bu    husus
örneklendirilmiştir.




Burada tarihsel değişken olarak kullanılan iki değişken aşağıdaki şekilde
tanımlanmıştır.

Var
İlktarih,sontarih:TDate; //Tarihsel değişkenler tanımlanıyor.

Daha sonra bu iki değişkene tip dönüştürme işlemi uygulanarak EditBox
kontrollerinden değer atanmıştır. Son olarak iki tarih arasındaki fark hesaplanıp
başlıkta yazdırılmıştır.




34
Delphi’de Sabit Değişken Tanımlamak:

Bazı durumlarda değeri hiç değişmeyen sabit bir değişken tanımlamak
isteyebilirsiniz. Mesela matematikteki pi sayısı veya logaritmada kullanılan e
sayısı gibi, işte bu tip değişkenleri özel bir bildirimle yapmalısınız. Aşağıda bu
husus örneklendirilmiştir.




Const’la tanımlamış olduğunuz değişkenin değerini procedure içerisinde
değiştiremezsiniz (Özel birim ile yapabilirsiniz).

Local Static Değişken Tanımlamak:

Procedure içerisinde (Global değişken olabilmesi için özel tanımlama blokları
mevcuttur, daha sonraki kısımlarda incelenecektir.) tanımlanan bir değişken,
kod işletildiği anda bellekte yaratılır, kodun tamamı işletildikten sonra da
bellekten atılır. Procedure’ü ikinci kez tekrar işlettiğiniz zaman aynı işlemler
tekrarlanacaktır. Bu durumda şöyle bir problemle karşı karşıya kalırız.
Procedure’ü ilk işlettiğimiz zaman değişkenimize en son atanan değeri, ikinci
işleteceğimiz zaman kullanmak istersek (Yani değişkenin en son aldığı değeri
bir sonraki çağrılmada hatırlamak istersek) ne yapabiliriz? Cevabı çok basit, o
değişkeni static olarak tanımlarsınız. Local bir değişkenin static olarak
tanımlanması, o procedure’ü ikinci kez (veya daha fazla) işlettiğiniz zaman
önceki tur bulduğu değeri kullanmasını sağlayacaktır. Bu olay bir çok durumda
işinize tahmininizden daha fazla yarayacaktır.

Aşağıda bu husus örneklendirilmiştir.



                                                                               35
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)
Delphi7(kitap)

More Related Content

Similar to Delphi7(kitap)

Tcp ip ve ip adresleme
Tcp ip ve ip adreslemeTcp ip ve ip adresleme
Tcp ip ve ip adreslemeOnur Şaner
 
Internet programcılığı 5
Internet programcılığı 5Internet programcılığı 5
Internet programcılığı 5Erol Dizdar
 
Sistem güvenliği
Sistem güvenliğiSistem güvenliği
Sistem güvenliğiOnur Şaner
 
Nesne tabanlı programlama 5
Nesne tabanlı programlama 5Nesne tabanlı programlama 5
Nesne tabanlı programlama 5Erol Dizdar
 
Internet programcılığı 4
Internet programcılığı 4Internet programcılığı 4
Internet programcılığı 4Erol Dizdar
 
Tcp ip taşima ve uygulama katmani
Tcp ip taşima ve uygulama katmaniTcp ip taşima ve uygulama katmani
Tcp ip taşima ve uygulama katmaniOnur Şaner
 
Uydu alıcısı yazılımları
Uydu alıcısı yazılımlarıUydu alıcısı yazılımları
Uydu alıcısı yazılımlarıdeliceous
 
Tümleşik devreler
Tümleşik devrelerTümleşik devreler
Tümleşik devrelerErol Dizdar
 
Tcp ip kontrol mesajlari
Tcp ip kontrol mesajlariTcp ip kontrol mesajlari
Tcp ip kontrol mesajlariOnur Şaner
 
Cihazlara bağlanma
Cihazlara bağlanmaCihazlara bağlanma
Cihazlara bağlanmaOnur Şaner
 
Bulut Bilişim ve Bilgisayar Ağları
Bulut Bilişim ve Bilgisayar AğlarıBulut Bilişim ve Bilgisayar Ağları
Bulut Bilişim ve Bilgisayar Ağlarıcgoze
 
Internet programcılığı 3
Internet programcılığı 3Internet programcılığı 3
Internet programcılığı 3Erol Dizdar
 
Nesne tabanlı programlamada karar ve döngü yapıları
Nesne tabanlı programlamada karar ve döngü yapılarıNesne tabanlı programlamada karar ve döngü yapıları
Nesne tabanlı programlamada karar ve döngü yapılarıErol Dizdar
 
Nesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişNesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişErol Dizdar
 
Tcp ip iletim katmanı
Tcp ip iletim katmanıTcp ip iletim katmanı
Tcp ip iletim katmanıOnur Şaner
 

Similar to Delphi7(kitap) (20)

Tcp ip ve ip adresleme
Tcp ip ve ip adreslemeTcp ip ve ip adresleme
Tcp ip ve ip adresleme
 
Internet programcılığı 5
Internet programcılığı 5Internet programcılığı 5
Internet programcılığı 5
 
Sistem güvenliği
Sistem güvenliğiSistem güvenliği
Sistem güvenliği
 
Nesne tabanlı programlama 5
Nesne tabanlı programlama 5Nesne tabanlı programlama 5
Nesne tabanlı programlama 5
 
Internet programcılığı 4
Internet programcılığı 4Internet programcılığı 4
Internet programcılığı 4
 
Tcp ip taşima ve uygulama katmani
Tcp ip taşima ve uygulama katmaniTcp ip taşima ve uygulama katmani
Tcp ip taşima ve uygulama katmani
 
Uydu alıcısı yazılımları
Uydu alıcısı yazılımlarıUydu alıcısı yazılımları
Uydu alıcısı yazılımları
 
Tümleşik devreler
Tümleşik devrelerTümleşik devreler
Tümleşik devreler
 
5-Disk Sürücüleri
5-Disk Sürücüleri5-Disk Sürücüleri
5-Disk Sürücüleri
 
Tcp ip kontrol mesajlari
Tcp ip kontrol mesajlariTcp ip kontrol mesajlari
Tcp ip kontrol mesajlari
 
Alt Ağlar
Alt AğlarAlt Ağlar
Alt Ağlar
 
Cihazlara bağlanma
Cihazlara bağlanmaCihazlara bağlanma
Cihazlara bağlanma
 
Bulut Bilişim ve Bilgisayar Ağları
Bulut Bilişim ve Bilgisayar AğlarıBulut Bilişim ve Bilgisayar Ağları
Bulut Bilişim ve Bilgisayar Ağları
 
Internet programcılığı 3
Internet programcılığı 3Internet programcılığı 3
Internet programcılığı 3
 
Ağ yapıları
Ağ yapılarıAğ yapıları
Ağ yapıları
 
Nesne tabanlı programlamada karar ve döngü yapıları
Nesne tabanlı programlamada karar ve döngü yapılarıNesne tabanlı programlamada karar ve döngü yapıları
Nesne tabanlı programlamada karar ve döngü yapıları
 
Ağ temelleri
Ağ temelleriAğ temelleri
Ağ temelleri
 
213 gim191
213 gim191213 gim191
213 gim191
 
Nesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişNesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya giriş
 
Tcp ip iletim katmanı
Tcp ip iletim katmanıTcp ip iletim katmanı
Tcp ip iletim katmanı
 

Delphi7(kitap)

  • 2. II
  • 3. ZİRVEDEKİ BEYİNLER Nihat DEMİRLİ Yüksel İNAN DELPHI 7 Yayınları
  • 4. Kitap Yazarları Nihat DEMİRLİ MCP-MCSE-MCDBA-MCSD-MCAD nihadd@prestigeturk.com M. Yüksel İNAN MCP-MCP+INT-MCSA-MCSE-MCDBA-MCSD-MCT-MCAD yuksel@yukselinan.com Teknik Editör Sibel YANAR MCP-MCSE ISBN: 975-92267-0-7 Prestie Education Center Merkez Halitağa Cd. Kıvanç Sok. No: 1/5 Kadıköy/İSTANBUL Tel: 0216. 330 06 50 (pbx) 0216. 449 54 78 0216. 345 71 75 Fax: 0216. 345 71 75 Şube Gazi Üniversitesi Mühendislik-Mimarlık Fakültesi Maltepe / ANKARA Tel: 0312. 231 74 00 / 1031 (Dahili) mail: prestige@prestigeturk.com web: www.prestigeturk.com Yayına Hazırlayan – Kapak Selman Ali METİN Baskı Ümit Ofset Matbaacılık Büyük Sanayi 1. Cad. 107/32-39-40-54 İskitler / ANKARA Tel: 0312. 384 26 27 – 384 17 07 Ankara, 2003 Kitabın tüm hakları Prestij Bilişim Eğitim-Öğretim Turizm Hiz. Tic. Ltd. Şti.’ne aittir. İzinsiz olarak kısmen veya tamamen kullanılması, kopyalanması ve çoğaltılması yasaktır. IV
  • 5. ÖNSÖZ Zirvedeki Beyinler serisine ait beşinci kitabımızla karşınızdayız. Serimizi tamamlama aşamasında bizlere göstermiş olduğunuz ilgiye, öneri ve isteklerinize teşekkürlerimizi sunuyoruz. Bu sefer Microsoft ürünü olmayan bir yazılım dili üzerine birikimlerimizi sizlerle paylaşmak istedik. Delphi'yi çok sevdiğinizi bu hususta kaynak sıkıntısı çektiğinizi biliyoruz. Amacımız bu kadar fazla sevilen bir dil hususunda mümkün olduğu kadar geniş çaplı bir inceleme yapıp sonuçları sizlerle paylaşmaktan ibarettir. Delphi ile yazılmış birçok uygulamamızın halen aktif olarak büyük ve orta ölçekli firmalarda kullanıldığını,kodlarının Kitabın bazı bölümlerinde ufak modüller halinde sizlere sunulduğunu göreceksiniz. Diğer kitaplarımıza göstermiş olduğunuz ilgiyi aynen bu kitaba da göstermeniz temennisiyle "Delphi 7 İle Veritabanı ve Network Uygulamaları" Kitabımızda görüşmek üzere. Bütün Hayalleriniz Gerçek Olsun......... Sibel YANAR Teknik Editör
  • 6. VI
  • 7. TEŞEKKÜR Üniversitemize bağlı olarak çalışan Prestige firmasının üniversitemiz bünyesinde öğrencilerimize ve akademik personelimize sağladığı eğitim olanakları ve yaptığı çalışmalar için Sayın Nihat DEMİRLİ ve Yüksel İNAN’a teşekkür ederim. Prof. Dr. Hüsnü CAN G.Ü. Müh.-Mim. Fak. DEKANI
  • 8.
  • 9. TEŞEKKÜR Bakım-onarım işlerimizin bilgisayar ortamında dosyalama ve takibi ile ilgili program çalışmasına yaptığı yardım için Sayın Nihat DEMİRLİ ve Yüksel İNAN’a teşekkür ederim. T. KARLIDAĞ Migros Türk T.A.Ş. İnş. Emlak Müd. IX
  • 10.
  • 11. TEŞEKKÜR Bankamız Güvenlik Sistemleri ve Kredi Kartı Uygulama çalışmalarına yönelik yazılım+danışmanlık hizmetlerinden dolayı Nihat DEMİRLİ ve Yüksel İNAN’a teşekkür ederiz. Burak AKTAŞ INTERBANK İnş. Emlak Md.
  • 12. XII
  • 13. İÇİNDEKİLER BÖLÜM 1 DELPHI’YE GİRİŞ .............................................................................................. 1 Delphi 7’ye Giriş ..................................................................................... 3 Component Palette ................................................................................... 4 Object Inspector ....................................................................................... 6 Events’lara Erişebilmek........................................................................... 6 Kod Penceresine Ulaşmak ....................................................................... 7 Kod (Unit) Penceresinin Özellikleri ........................................................ 8 Ctrl+Space Tuşunun Beraber Kullanılması............................................. 8 Kod Penceresinde “.” Karakterinin Kullanılması.................................... 8 Object TreeView Penceresi ..................................................................... 9 Delphi Dosya Uzantıları .......................................................................... 10 Kod Penceresine Ait Font Ayarları.......................................................... 11 Uses İfadesi.............................................................................................. 12 Project Manager Penceresi....................................................................... 14 Window List Penceresi ............................................................................ 15 BÖLÜM 2 DELPHİ’NİN TEMELLERİ................................................................................ 17 Örnekleri Yapabilmeniz İçin Gerekli Olan Pratik Kodlar....................... 19 Aktif Formu Kapatmak............................................................................ 23 Alt Satırdaki Kodların İşlemesini Engellemek ........................................ 23 Programı Sonlandırmak ........................................................................... 24 Programı İkinci Formdan Başlatmak....................................................... 24 Herhangi Bir Exe Uygulamasını Çalıştırmak .......................................... 25 Ağdaki Bir Bilgisayarda Bulunan Exe Uzantılı Dosyayı Çalıştırmak .... 25 Değişkenler .............................................................................................. 26 Değişken Tanımlarken Dikkat Edilecek Olan Hususlar.......................... 27 Tam Sayı Değişken Tipleri............................................... ....... 29 Reel Sayı Değişken Tipleri............................................... ....... 31 String Değişken Tipleri..................................................... ....... 33 Boolean Tip Değişken Tanımlamak ................................. ....... 34 Tarihsel İçerikli Değişken Tanımlamak ........................... ....... 34 Delphi’de Sabit Değişken Tanımlamak............................ ....... 35 Local Static Değişken Tanımlamak.................................. ....... 35 Tüm Alt Yordamlar Tarafından Kullanılabilecek Değişken Tanımlamak ............................................................................................. 37 Tüm Formlar Tarafından Kullanılabilecek Değişken Tanımlamak ........ 39 Tip Tanımlamaları ................................................................................... 41 Enumerated Types ............................................................ ....... 41 Subrange Types................................................................. ....... 46
  • 14. Set Types........................................................................... ....... 47 Record Types .................................................................... ....... 50 With-do bloğu .......................................................................................... 50 Dizi Değişkenler ...................................................................................... 52 Sabit Uzunluklu Dizi Değişken Tanımlamak................... ....... 52 Sabit Uzunluklu İki Boyutlu Dizi Tanımlamak................ ....... 55 Değişken Uzunluklu (Dinamik) Dizi Değişken Tanımlamak .. 58 Çok Boyutlu Dinamik Dizi Tanımlamak.......................... ....... 60 Dinamik Dizileri Yeniden Boyutlandırmak ..................... ....... 62 BÖLÜM 3 DELPHI’DE ATAMA İŞLEMLERİ & OPERATÖRLER .............................. 63 Delphi’de Kullanılan Operatörler ............................................................ 65 Matematiksel Operatörler ................................................. ....... 65 Logical Operatörler........................................................... ....... 66 Delphi’de Diğer Atama İşlemleri ............................................................ 68 BÖLÜM 4 DELPHI’DE DALLANMA & DÖNGÜ KOMUTLARI ................................... 73 IF Yapısının Delphi’de Kullanım Şekilleri ............................................. 75 Tek Satırda Birden Fazla Şartı Kontrol Etmek (And & Or).................... 80 Is Operatörü Kullanarak Karşılaştırma Yapmak ..................................... 85 Case Yapısının Delphi’de Kullanım Şekilleri ......................................... 86 Döngüler .................................................................................................. 89 For Döngüsü ..................................................................... ....... 89 Repeat Until Döngüsü....................................................... ....... 96 While Do Döngüsü ........................................................... ....... 99 Sıralama Algoritmaları ............................................................................ 100 Bubble Sort ....................................................................... ....... 101 Bubble Sort ...................................................................... ....... 103 Shell Sort........................................................................... ....... 104 Selection Sort.................................................................... ....... 105 Quick Sort ......................................................................... ....... 106 Döngü Yönlendirme Komutları ............................................................... 107 Continue............................................................................ ....... 107 Break ................................................................................. ....... 108 Exit.................................................................................... ....... 108 Halt.................................................................................... ....... 109 Application.Terminate ...................................................... ....... 110 Sleep Komutu ................................................................... ....... 112 Application.ProcessMessages........................................... ....... 113 XIV
  • 15. BÖLÜM 5 DELPHI’DE FONKSİYON & PROSEDÜRLER.............................................. 115 Delphi’de Prosedürler .............................................................................. 117 Prosedürleri Diğer Yordamlara Bildirmek ....................... ....... 119 Parametre İçeren Prosedür Tanımlamak........................... ....... 119 Birden Fazla Parametreli Prosedür Tanımlamak.............. ....... 121 Dizi Parametreli Prosedür Tanımlamak ........................... ....... 123 Dinamik Dizi Parametreli Prosedür Tanımlamak ............ ....... 124 Opsiyonel Parametreli Prosedür Tanımlamak.................. ....... 125 Delphi’de Fonksiyonlar ........................................................................... 127 Fonksiyonlarda Aşırı Yükleme......................................... ....... 128 Dizi Parametreli Fonksiyon Tanımlamak......................... ....... 130 Okek Hesaplayan Fonksiyon ............................................ ....... 131 Obeb Hesaplayan Fonksiyon ............................................ ....... 133 Fonksiyonlara Birden Fazla Değer Hesaplatmak ............. ....... 135 Delphi’de Rekürsif Fonksiyonlar ..................................... ....... 139 BÖLÜM 6 BİLGİLENDİRME PENCERELERİ ................................................................. 141 Mesaj Pencereleri..................................................................................... 143 ShowMessage ................................................................... ....... 143 ShowMessagePos.............................................................. ....... 144 ShowMessageFmt............................................................. ....... 145 MessageDlg ...................................................................... ....... 147 Basılan Düğmeye Göre Kod Satırlarını İşletmek .................................... 153 MessageDlgPos................................................................. ....... 155 Application.MessageBox.................................................. ....... 156 InputBox Fonksiyonu .............................................................................. 164 InputQuery Fonksiyonu ........................................................................... 170 Idle Olayı Yaratarak Projeyi Kontrol Etmek ........................................... 173 İki Kontrolün Aynı Eventı Kullanması.................................................... 176 BÖLÜM 7 DELPHİ’DE HATA YAKALAMA ..................................................................... 179 Delphi’de Oluşabilecek İllegal Durumları Çözmek ................................ 181 Lokal Hata Yakalama ....................................................... ....... 181 Try-except-End ...................................................... ....... 181 Try-Finally-End ...................................................... ....... 185 Genel Hata Yakalama ....................................................... ....... 185 XV
  • 16. BÖLÜM 8 DELPHI’DE UNIT KAVRAMI........................................................................... 189 Unit Penceresi: ......................................................................................... 191 Uygulama 1....................................................................... ....... 193 Uygulama 2....................................................................... ....... 194 BÖLÜM 9 DELPHİ’DE CLASS YAPISI .............................................................................. 203 Delphi’de Class Uygulamaları................................................................. 205 Adım Adım Class Oluşturmak.......................................... ....... 205 Class İçerisinde Tanımlanan Değişkene Erişmek ............ ....... 208 Class İçesisinde Tanımlanan Fonksiyona Erişmek .......... ....... 210 Class içerisinde oluşturulmuş Olan Prosedüre Erişmek... ....... 214 Class lara Özellik Eklenmesi ............................................ ....... 218 Form Kullanmayan Windows Uygulamaları Geliştirmek....................... 222 BÖLÜM 10 İŞARETÇİLER & KATARLAR ......................................................................... 225 Delphi’de Pointer Değişkenlerin Yeri ..................................................... 227 İşaretçi Bildirimi ............................................................... ....... 227 İşaretçilere Adres Göstermek ........................................... ....... 228 İşaretçilere Değer Atamak ................................................ ....... 228 İşaretçileri Aritmetik İşlemlerde Kullanmak.................... ....... 231 Kullanıcı Tanımlı Tip Değişkeni Olarak Pointer Kullanmak .. 232 İşaretçilerin Dizi Değişkenlerle Beraber Kullanılması..... ....... 233 İşaretçi İle Dizi Elemanları Arasında Dolaşmak .............. ....... 235 İşaretçi Fonksiyon İlişkisi................................................. ....... 238 İşaretçi Prosedür İlişkilendirilmesi ................................... ....... 240 İşaretçi Class İlişkisi ......................................................... ....... 241 Katarlar .................................................................................................... 242 Katar Bildiriminin Yapılması ........................................... ....... 242 Karakterler Arasında Gezinmek ....................................... ....... 244 Katarları Char Tipli Dizi Değişken Olarak Tanımlamak . ....... 246 BÖLÜM 11 DLL DOSYALARI OLUŞTURMAK ................................................................. 249 DLL Ne İşe Yarar .................................................................................... 251 Dll İçerisinde Prosedür Oluşturmak ........................................................ 253 Dll İçerisindeki Prosedüre Programdan Ulaşmak ................................... 253 Dll İçerisinde Fonksiyon Oluşturmak...................................................... 254 Dll İçerisindeki Fonksiyona Programdan Erişmek.................................. 255 XVI
  • 17. BÖLÜM 12 DELPHİ FONKSİYONLARI .............................................................................. 259 Fonksiyonlara Giriş.................................................................................. 261 Matematiksel Fonksiyonlar .............................................. ....... 261 Abs .......................................................................... ....... 261 Ceil.......................................................................... ....... 262 Floor........................................................................ ....... 262 Trunc....................................................................... ....... 263 Frac ......................................................................... ....... 264 Exp .......................................................................... ....... 264 Int............................................................................ ....... 265 IntPower.................................................................. ....... 265 Ln ............................................................................ ....... 266 Log10...................................................................... ....... 266 Log2........................................................................ ....... 267 LogN ....................................................................... ....... 267 Max ......................................................................... ....... 268 Min.......................................................................... ....... 268 Muldiv..................................................................... ....... 269 Pi ............................................................................. ....... 269 Poly ......................................................................... ....... 270 Power ...................................................................... ....... 271 Round...................................................................... ....... 271 RoundTo ................................................................. ....... 272 Sign ......................................................................... ....... 273 SimpleRoundTo...................................................... ....... 274 Sqr........................................................................... ....... 274 Sqrt.......................................................................... ....... 275 Inc ........................................................................... ....... 275 Dec .......................................................................... ....... 276 Div .......................................................................... ....... 277 Mod......................................................................... ....... 277 Shl ........................................................................... ....... 278 Shr........................................................................... ....... 278 Tarih – İçerikli Fonksiyonlar ............................................ ....... 283 CompareDate .......................................................... ....... 283 CompareDateTime.................................................. ....... 283 CompareTime ......................................................... ....... 284 CurrentYear ............................................................ ....... 284 Date......................................................................... ....... 284 DateOf..................................................................... ....... 285 DateTimeToStr ....................................................... ....... 286 DateToStr................................................................ ....... 286 XVII
  • 18. DayOfWeek ............................................................ ....... 287 DayOf ..................................................................... ....... 288 DayOfTheMonth .................................................... ....... 288 DayOfTheWeek...................................................... ....... 289 DayOfTheYear ....................................................... ....... 289 DaysBetween .......................................................... ....... 289 DaysInMonth .......................................................... ....... 290 DaysInAMonth ....................................................... ....... 290 DaysInAYear .......................................................... ....... 291 DaysInYear ............................................................. ....... 291 DaySpan.................................................................. ....... 292 DecodeDate............................................................. ....... 292 DecodeDateDay...................................................... ....... 293 DecodeDateMonthWeek ........................................ ....... 293 DecodeTime............................................................ ....... 294 EncodeDate............................................................. ....... 295 EncodeDateDay ...................................................... ....... 295 EncodeDateMonthWeek......................................... ....... 296 EncodeDateWeek ................................................... ....... 296 EncodeDayOfWeekInMonth.................................. ....... 297 EncodeTime............................................................ ....... 297 EndOfADay ............................................................ ....... 297 EndOfAMonth ........................................................ ....... 298 EndOfAWeek ......................................................... ....... 298 EndOfAYear ........................................................... ....... 299 FormatDateTime..................................................... ....... 299 IncAMonth.............................................................. ....... 300 IncDay..................................................................... ....... 300 IncMonth................................................................. ....... 301 IncWeek.................................................................. ....... 301 IncYear ................................................................... ....... 302 IsInLeapYear .......................................................... ....... 302 IsLeapYear.............................................................. ....... 303 IsToday ................................................................... ....... 303 IsValidDate ............................................................. ....... 304 MonthOf ................................................................. ....... 304 MonthOfTheYear ................................................... ....... 305 MonthsBetween ...................................................... ....... 305 Now......................................................................... ....... 306 NthDayOfWeek ...................................................... ....... 306 RecodeDate............................................................. ....... 306 RecodeYear............................................................. ....... 307 ReplaceDate............................................................ ....... 308 XVIII
  • 19. StartOfADay ........................................................... ....... 308 StartOfAMonth ....................................................... ....... 309 StartOfAWeek ........................................................ ....... 309 StartOfAYear.......................................................... ....... 310 StartOfTheMonth.................................................... ....... 310 StartOfTheWeek ..................................................... ....... 310 StrToDate................................................................ ....... 311 StrToDateDef.......................................................... ....... 311 StrToDateTime ....................................................... ....... 312 StrToDateTimeDef ................................................. ....... 312 StrToTime............................................................... ....... 313 StrToTimeDef......................................................... ....... 313 Time-GetTime ........................................................ ....... 314 TimeOf.................................................................... ....... 314 TimeToStr............................................................... ....... 315 Today ...................................................................... ....... 315 Tomorrow ............................................................... ....... 316 WeekOf................................................................... ....... 316 WeekOfTheMonth.................................................. ....... 316 WeeksBetween ....................................................... ....... 317 WeeksInAYear ....................................................... ....... 317 YearOf .................................................................... ....... 318 YearsBetween ......................................................... ....... 318 Yesterday ................................................................ ....... 319 String – İçerikli Fonksiyonlar........................................... ....... 320 AnsiCompareStr ..................................................... ....... 320 AnsiCompareText................................................... ....... 320 AnsiDequotedStr .................................................... ....... 321 AnsiLeftStr ............................................................. ....... 322 AnsiLowerCase ...................................................... ....... 322 AnsiMidStr ............................................................. ....... 323 AnsiPos ................................................................... ....... 324 AnsiReplaceStr ....................................................... ....... 325 AnsiReplaceText .................................................... ....... 326 AnsiReverseString ................................................. ....... 326 AnsiRightStr ........................................................... ....... 327 AnsiUpperCase ....................................................... ....... 327 CompareStr ............................................................. ....... 328 CopmpareText ........................................................ ....... 328 Concat ..................................................................... ....... 329 Copy........................................................................ ....... 329 Delete...................................................................... ....... 330 DupeString.............................................................. ....... 330 XIX
  • 20. Insert ....................................................................... ....... 331 LeftBStr .................................................................. ....... 331 Length ..................................................................... ....... 332 LowerCase .............................................................. ....... 332 MidStr ..................................................................... ....... 332 Pos........................................................................... ....... 333 RightStr................................................................... ....... 333 SetLength................................................................ ....... 334 SetString ................................................................. ....... 334 Str............................................................................ ....... 335 StringOfChar .......................................................... ....... 335 StringReplace.......................................................... ....... 336 StuffString............................................................... ....... 337 Trim ........................................................................ ....... 337 TrimLeft.................................................................. ....... 338 TrimRight ............................................................... ....... 338 UpperCase............................................................... ....... 338 WrapText ................................................................ ....... 339 Chr .......................................................................... ....... 339 Ord .......................................................................... ....... 340 Val........................................................................... ....... 341 StrToInt................................................................... ....... 342 StrToIntDef............................................................. ....... 343 StrToFloat ............................................................... ....... 344 StrToFloatDef ......................................................... ....... 344 IntToStr(sayi)-FloatToStr....................................... ....... 345 FloatToStrF............................................................. ....... 345 FormatFloat............................................................. ....... 347 Rasgele Sayı Üretim Fonksiyonları.................................. ....... 348 RandomFrom .......................................................... ....... 349 RandomRange ........................................................ ....... 350 Sayısal Loto Programı ............................................ ....... 350 Dizi Fonksiyonları ............................................................ ....... 352 Mean ....................................................................... ....... 352 Sum ......................................................................... ....... 352 SumInt..................................................................... ....... 353 SumOfSquares ........................................................ ....... 353 SumsAndSquares.................................................... ....... 354 TotalVariance ......................................................... ....... 354 Variance.................................................................. ....... 355 EnsureRange ........................................................... ....... 355 High ........................................................................ ....... 355 Low ......................................................................... ....... 356 XX
  • 21. MaxIntValue ........................................................... ....... 357 MaxValue ............................................................... ....... 357 MinIntValue............................................................ ....... 358 MinValue ................................................................ ....... 358 Klasör ve Dosya Fonksiyonları ........................................ ....... 360 ChDir ...................................................................... ....... 360 CloseFile ................................................................. ....... 360 CreateDir................................................................. ....... 361 DeleteFile................................................................ ....... 361 DirectoryExists ....................................................... ....... 362 DiskFree.................................................................. ....... 362 DiskSize.................................................................. ....... 363 FileAge ................................................................... ....... 363 FileDateToDateTime .............................................. ....... 363 FileExists ................................................................ ....... 364 FileGetAttr.............................................................. ....... 364 FileIsReadOnly ....................................................... ....... 365 FileSearch ............................................................... ....... 366 FileSetAttr............................................................... ....... 366 FindFirst.................................................................. ....... 367 FindNext ................................................................. ....... 367 ForceDirectories ..................................................... ....... 368 GetCurrentDir ......................................................... ....... 369 GetDir ..................................................................... ....... 369 RemoveDir.............................................................. ....... 369 RenameFile ............................................................. ....... 370 SelectDirectory ....................................................... ....... 371 ExtractFileDir ......................................................... ....... 372 ExtractFileDrive ..................................................... ....... 373 ExtractFileExt ......................................................... ....... 373 ExtractFileName ..................................................... ....... 374 ExtractFilePath ....................................................... ....... 374 ExtractShortPathName ........................................... ....... 375 WinExec ................................................................. ....... 375 Fonksiyonları Network Ortamında Kullanmak ................ ....... 377 Klasörün Paylaşıma Açılması................................. ....... 377 UNC Path Nasıl Belirtilir ....................................... ....... 377 Makineler Arası Dosya Transferi ........................... ....... 378 Diğer Makinedeki Dosyayı Silmek ........................ ....... 378 Diğer Makinedeki “exe” Uygulamasını Çalıştırmak...... 379 Log Dosyası Oluşturmak: ................................................. ....... 380 “TextFile” Kullanarak Dosyadan Veri Okumak .... ....... 383 “TextFile” Kullanarak Dosyaya Veri Yazmak...... ....... 384 XXI
  • 22. BÖLÜM 13 DELPHİ KONTROLLERİ .................................................................................. 387 Form Özellikleri....................................................................................... 389 MDI Form Oluşturmak ............................................................................ 403 Label Kontrolü ......................................................................................... 405 Edit Kontrolü ........................................................................................... 408 Button Kontrolü ....................................................................................... 425 BitBtn Kontrolü ....................................................................................... 428 CheckBox Kontrolü ................................................................................. 430 RadioButton Kontrolü.............................................................................. 433 GroupBox Kontrolü ................................................................................. 434 Panel Kontrolü ......................................................................................... 437 ListBox Kontrolü ..................................................................................... 438 ComboBox Kontrolü................................................................................ 460 ImageList Kontrolü.................................................................................. 465 ListView Kontrolü ................................................................................... 466 TreeView Kontrolü .................................................................................. 472 TabControl Kontrolü................................................................................ 482 DateTimePicker Kontrolü........................................................................ 489 MonthCalendar Kontrolü......................................................................... 492 ScrollBar Kontrolü................................................................................... 495 Splitter Kontrolü ...................................................................................... 498 UpDown Kontrolü ................................................................................... 500 TrackBar Kontrolü ................................................................................... 504 ProgressBar Kontrolü .............................................................................. 507 ToolBar Kontrolü..................................................................................... 510 Basılı Kalabilen Button Oluşturmak................................. ....... 514 Açılabilir Button Oluşturmak ........................................... ....... 514 Grup Halinde Çalışan Buttonlar Oluşturmak: .................. ....... 516 StatusBar Kontrolü .................................................................................. 519 Timer Kontrolü ........................................................................................ 524 MainMenu Kontrolü ................................................................................ 529 Alt Menüler Yaratmak ...................................................... ....... 530 Menü Seçeneklerine Kod Yazmak ................................... ....... 531 Menü Seçeneklerine CheckBox Eklemek ........................ ....... 531 Menü Seçeneklerine Resim Eklemek ............................... ....... 532 PopupMenu Kontrolü .............................................................................. 533 MaskEdit Kontrolü .................................................................................. 535 Gauge Kontrolü........................................................................................ 536 OpenDialog Kontrolü .............................................................................. 539 SaveDialog Kontrolü ............................................................................... 543 XXII
  • 23. FontDialog Kontrolü................................................................................ 546 ColorDialog Kontrolü .............................................................................. 548 Memo Kontrolü........................................................................................ 549 BÖLÜM 14 DELPHI YORDAMLARI .................................................................................... 551 Yordamlar ................................................................................................ 553 OnClick ............................................................................. ....... 553 OnDblClick Yordamı........................................................ ....... 554 OnChange Yordamı .......................................................... ....... 554 Mous Tuşları İle Tetikleyebileceğiniz Yordamlar................................... 558 OnMousDown Yordamı ................................................... ....... 558 OnMousUp Yordamı ........................................................ ....... 560 OnMouseMove Yordamı .................................................. ....... 561 OnClose Yordamı .................................................................................... 562 OnCreate Yordamı ................................................................................... 563 OnEnter Yordamı..................................................................................... 564 OnExit Yordamı....................................................................................... 565 OnActivate Yordamı................................................................................ 566 OnDeactivate Yordamı ............................................................................ 567 OnDragDrop-OnDragEnd-OnDragOver ................................................. 567 OnResize Yordamı................................................................................... 567 Klavye Tuş Vuruşlarıyla Tetiklenen Yordamlar ..................................... 568 OnKeyDown Yordamı...................................................... ....... 568 OnKeyUp Yordamı........................................................... ....... 571 OnKeyPress Yordamı ....................................................... ....... 571 OnDestroy Yordamı................................................................................. 573 OnShow Yordamı .................................................................................... 573 OnHide Yordamı...................................................................................... 573 BÖLÜM 15 DELPHI’DE DRAG & DROP ............................................................................. 575 Drag & Drop (Sürükle-Bırak).................................................................. 577 OnDragOver Yordamı ...................................................... ....... 581 OnDragDrop Yordamı ...................................................... ....... 582 BÖLÜM 16 DELPHI’DE KONTROLLERİ & YORDAMLARI KODLA OLUŞTURMAK.................................................................................................... 589 Kontrolleri ve Yordamları Kodla Oluşturmak......................................... 591 İki Kontrolun Aynı Yordamı Kullanması................................................ 595 XXIII
  • 24. BÖLÜM 17 DELPHI’DE VERİTABANI ................................................................................ 601 VeriTabanı Uygulamaları: ....................................................................... 603 BDE Kontrolleri....................................................................................... 604 Table Kontrolü.................................................................. ....... 604 Query Kontrolü ................................................................. ....... 604 StoredProc Kontrolü ......................................................... ....... 604 Database Kontrolü ............................................................ ....... 605 Paradox Tablolarına Bağlantı .................................................................. 605 Alias Tanımlamak.................................................................................... 605 Paradox’ta Tablo Oluşturmak.................................................................. 607 Tablo Yapısında Değişiklik Yapmak....................................................... 609 DataBase Destop’ı Kullanarak Tabloya Kayıt Girmek ........................... 609 Uygulamanızdan Paradox Tablolarına Bağlanmak ................................. 610 Resimli veya CheckBox İçeren Tablo Sütunlarıyla Bağlantı.................. 611 Wizard Kullanarak Veri Tabanına Bağlanmak........................................ 611 DBNavigator Kontrolü ............................................................................ 615 DBNavigator Kontrolü İçin Tıklanan Düğmeye Kod Yazmak ............... 617 Kayıtları DataGrid Nesnesinde Göstermek ............................................. 619 Kayıt İşlemlerini Kodla Yapmak............................................................. 620 Bağlantı İşlemlerinin Kodla Yapmak ...................................................... 622 Veri Tabanında Olmayan Sütunlar Yaratmak ......................................... 631 Yaratılan Sütun Değerlerini Tablonuzda Hesaplatmak ........................... 633 DataGrid Kontrolüne Ait Özellikler ........................................................ 634 DataGrid Kontrolüne Ait Sütun Başlıklarını Belirlemek . ....... 635 DataGrid Sütun Başlıklarının Ortalanması....................... ....... 636 DataGrid Sütun Genişliklerini Ayarlamak ....................... ....... 637 DataGrid Sütunlarını ReadOnly Yapmak......................... ....... 637 DataGrid Sutununu ComboBox Şeklinde Kullanmak...... ....... 637 DataGrid Kontrolüne Ait Sütun Başlıklarını Renklendirmek .. 638 DataGrid Sütunlarını Renklendirmek ............................... ....... 638 DataGrid Font Ayarları..................................................... ....... 638 DataGrid Kontrolünde İşe Yaramayan Sütunları Gizlemek..... 639 DataGrid Kontrolünde Sütun Başlıklarını Gizlemek ....... ....... 640 Kayıt Filtreleme İşlemleri........................................................................ 641 Filtrelenmiş Kayıtlar Arasında Gezinmek ............................................... 644 Filtreli Kayıtlarda Bir Sonrakini Git................................. ....... 644 Filtreli Kayıtlarda Bir Öncekine Git ................................. ....... 645 Filtreli Kayıtlarda İlk Kayda Git ...................................... ....... 645 Filtreli Kayıtlarda Son Kayda Git..................................... ....... 645 Tarih Aralığına Göre Filtre Uygulamak ........................... ....... 645 Secondary Index Tanımlamak .......................................... ....... 645 Parasal Aralığa Göre Filtre Uygulamak ........................... ....... 648 XXIV
  • 25. Kayıt Arama İşlemleri ............................................................................. 651 Locate Methodu ................................................................ ....... 651 Birden Fazla Sütuna Göre Arama Yaptırmak................... ....... 653 SetKey-GotoKey Methodları............................................ ....... 654 SetKey-GotoNearest Methodları ...................................... ....... 655 Lookup Methodu............................................................... ....... 656 Transaction İşlemi.................................................................................... 658 Database Kontrolü ................................................................................... 658 Database1.StartTransaction .............................................. ....... 659 Database1.Commit............................................................ ....... 659 Database1.Rollback .......................................................... ....... 660 Query Kontrolü ........................................................................................ 664 Query Kontrolüne Ait Yordamlar..................................... ....... 667 Wizard Kullanarak Query Kontrolüyle Tabloya Bağlanmak... 669 Query Kontrolüne Parametre Değeri Göndermek ............ ....... 670 Parametre Olarak Tarih İçerikli Değişken Kullanmak..... ....... 673 Parametre Olarak Parasal İçerikli Değişken Kullanmak .. ....... 674 Birden Fazla Parametre Değeri Göndermek..................... ....... 675 Opsiyonel Parametreli Sorgu Oluşturmak........................ ....... 676 Birden Fazla Tablo İle Çalışmak ............................................................. 678 Master Detail Form Yapısını Mauel Oluşturmak .................................... 682 Master-Detail Tablolarda Kayıt Arama İşlemleri.................................... 683 Lookup İşlemleri...................................................................................... 685 DBLookupComboBox Kontrolü ...................................... ....... 685 DBLookupListBox Kontrolü ............................................ ....... 689 Tabloda Lookup Sütunları Yaratmak ...................................................... 691 Rapor Dosyaları Oluşturmak ................................................................... 695 QuickRep Kontrolü........................................................... ....... 696 QRSubDetail Kontrolü ..................................................... ....... 696 QRBand Kontrolü ............................................................. ....... 696 QRGroup Kontrolü ........................................................... ....... 696 QRLabel Kontrolü ............................................................ ....... 696 QRDBText Kontrolü ........................................................ ....... 696 QRExpr Kontrolü.............................................................. ....... 696 QRSysData Kontrpolü ...................................................... ....... 696 QRMemo Kontrolü ........................................................... ....... 696 QRRichText Kontrolü ...................................................... ....... 697 QRShape Kontrolü............................................................ ....... 697 QRImage Kontrolü ........................................................... ....... 697 QRDBImage Kontrolü...................................................... ....... 697 Gruplandırılmış Rapor Dosyası Oluşturmak ........................................... 702 Rapor Dosyasına Uygulamanızdan Erişmek ........................................... 709 XXV
  • 26. BÖLÜM 18 REGISTRY İŞLEMLERİ .................................................................................... 711 Registry .................................................................................................... 713 Registry’ye Veri Yazdımak .............................................. ....... 714 Alt Klasöre Veri Eklemek ................................................ ....... 717 Ana Root’a Alt Klasör Eklemek....................................... ....... 718 Alt Klasöre Değişken Eklemek ........................................ ....... 719 Registry’den Kayıt Okutmak............................................ ....... 719 Ana Root Altındaki Bir Değişkenin Değerini Öğrenmek ....... 720 Alt Klasörden Değişken Değeri Okutmak........................ ....... 720 Windows Registry Bilgilerini Okutmak ........................... ....... 721 Alt Klasör Silmek ............................................................. ....... 722 Alt Klasör İçerisindeki Değişkeni Silmek ........................ ....... 722 Ana Root Altındaki Değişkenleri Öğrenmek ................... ....... 723 AnaRoot Altındaki Alt Klasörleri Öğrenmek................... ....... 723 BÖLÜM 19 KONTROL OLUŞTURMAK .............................................................................. 727 Delphi’de Kontrol Oluşturmak ................................................................ 729 Kontrolü Compenent Paletine Yerleştirmek..................... ....... 731 Active Formu Test Etmek................................................. ....... 733 ActiveX Control Oluşturmak................................................................... 734 ActiveX Control’e Function Eklemek .............................. ....... 735 ActiveX Contrel’e Prosedür Eklemek .............................. ....... 736 ActiveX Control’ün Derlenmesi....................................... ....... 737 AvtiveX Control’ün Component Paletine Eklenmesi ...... ....... 737 Yaratılan ActiveX Control’üm Projelerde Kullanılması.. ....... 738 BÖLÜM 20 EXCEL & .NET TEKNOLOJİSİ........................................................................ 741 Excel Uygulamaları ................................................................................. 743 Excel Dosyası Yaratmak................................................... ....... 743 Excel Dosyasına Yeni Bir Sayfa Eklemek ....................... ....... 743 Excel’deki Aktif Sayfanın İsmini Öğrenmek ................... ....... 744 Excel Dosyasındaki Sayfa Sayısını Öğrenmek ................ ....... 744 Excel Dosyasını Kapatmak............................................... ....... 745 Excel Hücrelerine Veri Aktarmak .................................... ....... 745 Excel Hücrelerinden Veri Okumak .................................. ....... 746 Excel Sayfasında bir Hücreyi Aktif Hale Getirmek ......... ....... 747 Excel Sayfasında Çoklu Hücre Seçtirmek........................ ....... 748 Excel Hücresine Formül Aktarmak .................................. ....... 748 Excel Dosyasından Aktif Sayfayı Silmek ........................ ....... 749 Var Olan Bir Excel Dosyasını Açmak.............................. ....... 749 XXVI
  • 27. Excel’de Grafik Çizdirmek............................................... ....... 750 .Net Teknolojisi........................................................................................ 752 BÖLÜM 21 UZMANLAR İÇİN BEYİN JİMNASTİĞİ ........................................................ 755 Birazda Beyin Jimnastiği ......................................................................... 757 Uygulama 1....................................................................... ....... 757 Uygulama 2....................................................................... ....... 757 Uygulama 3....................................................................... ....... 758 Uygulama 4....................................................................... ....... 758 Uygulama 5....................................................................... ....... 759 Uygulama 6....................................................................... ....... 759 Uygulama 7....................................................................... ....... 760 Uygulama 8....................................................................... ....... 761 Uygulama 9....................................................................... ....... 762 Uygulama 10..................................................................... ....... 763 Uygulama 11..................................................................... ....... 764 Uygulama 12..................................................................... ....... 765 Uygulama 13..................................................................... ....... 765 Uygulama 14..................................................................... ....... 766 Uygulama 15..................................................................... ....... 767 Uygulama 16..................................................................... ....... 769 Uygulama 17..................................................................... ....... 776 Uygulama 18..................................................................... ....... 777 Uygulama 19..................................................................... ....... 778 Uygulama 20..................................................................... ....... 779 Uygulama 21..................................................................... ....... 781 Uygulama 22..................................................................... ....... 782 Uygulama 23..................................................................... ....... 785 Uygulama 24..................................................................... ....... 785 Uygulama 25..................................................................... ....... 786 Uygulama 26..................................................................... ....... 787 Uygulama 27..................................................................... ....... 790 Uygulama 28..................................................................... ....... 797 Uygulama 29..................................................................... ....... 798 Uygulama 30..................................................................... ....... 799 BÖLÜM 22 SETUP PROJESİ OLUŞTURMAK.................................................................... 801 Setup Projesi Oluşturmak ........................................................................ 803 Setup Projesinin Diğer Bilgisayarlara Yüklenmesi ................................. 811 XXVII
  • 29. 2
  • 30. Delphi 7’ye Giriş: “Delphi 7’ye hoşgeldiniz.” diyerek, kitabımın ilk kısmına geçmek istiyorum. Çok gelişmiş bir yazılım diliyle karşı karşıya olduğunuzun sanıyorum siz de farkındasınız. Gerek veri tabanı uygulamaları, gerekse diğer uygulamalarda (Internet, Intranet, XML, HTML ve .NET desteği) son derece gelişmiş projeler oluşturmak, Delphi ile çok kolaylaşmıştır (çok da güvenilirdir). Bu yüzden ticari yazılımların ülkemizde (diğer bir çok ülkede de) en yaygın olanı sanıyorum Delphi’dir. Kitapta uygulama ve geliştirme alanında kullanabileceğiniz tüm konulara değinilecektir. Eğer herhangi bir kısımda uzmanlaşmak isterseniz, (işiniz gereği vs.) daha fazla teknik bilgiye ihtiyacınız olursa “e-mail” adresimize başvurabilir veya direkt olarak Prestige Education Center’dan yazılım desteği alabilirsiniz (Gerek piyasada bulunan projelerimizle, gerekse de yetiştirdiğimiz binlerce öğrencimizden sonra; bu hususta çok güvenilir bir kaynak olduğumuzu düşünüyoruz). Kitapta; temel konular ve diğer uzmanlık alanlarını da içeren bir çok konu detaylı örneklerle önünüze sunulacaktır. Tecrübemiz; size hikaye anlatmaktan çok, örnek kodlarla beraber detaylı açıklamalarda bulunmamız gerektiğini göstermiştir. Mümkün olduğu kadar bu amacın dışına çıkmamaya çalışacağız. Artık Delphi ekranını tanıyarak, basitten zora doğru kod yazma işlemine geçebiliriz. “Delphi 7” programını bilgisayarınıza kurduktan sonra, aşağıdaki adımları izleyerek (Start-> Programs-> Borland Delphi 7-> Delphi 7) kolayca çalıştırabilirsiniz. Yukarıdaki adımları izledikten sonra, karşınıza “Delphi 7” açılışına ait (Bilgisayarınızın hızına bağlı olarak ekranda biraz kalabilir.) pencere gelecek, arkasından tasarım ekranına ulaşılacaktır. Bu ekran, hepinizin bildiği gibi Windows Formlarından (veya diğer nesnelerinden) oluşmaktadır. Diğer 3
  • 31. yardımcı nesneleri bu formlara ekleyerek proje geliştirebilmekteyiz (Windows Formları olmadan da proje geliştirilebilir). Aşağıda karşınıza açılan penceredeki Windows Formlarına ait nesneler gösterilmiştir: Bu ekran bir çok Windows nesnesinden oluşmakta olup, şimdi sizlere bu pencerelerin ne tür işlemler için kullanılabileceklerinden bahsetmek istiyorum. Component Palette: Bu pencere, “Delphi 7” içerisinde uygulama geliştirebilmeniz için kullanabileceğiniz form dışındaki tüm kontrolleri (Kullanım amaçlarına göre gruplandırma yapılarak ayrı ayrı yapraklar halinde verilmişlerdir.) içerisinde barındıran bir nesnedir. 4
  • 32. Bu yapraklardan birtanesine tıkladığınız zaman, o gruba ait tüm kontrolleri görebilirsiniz. Hangisini projenizde kullanacaksanız üzerine mousun sol tuşuyla çift tıklayıp, formunuzun üzerine ekletebilirsiniz. Örnek olması açısından “Standart” yaprağında bulunan “Button” kontrolünün üzerine çift tıklayın, formunuzun üzerine eklendiğini göreceksiniz. Boyutlarını ve koordinatlarını mousunuzla kolayca değiştirebilirsiniz. Şimdi de aynı işlemi “Edit” kontrolü için yapın, formunuz aşağıdaki hali alacaktır. Burada asıl göstermek istediğim; eklemiş olduğunuz her kontrolün kullanacağı kütüphaneyi Delphi’nin otomatik olarak projeye dahil ettiğidir. Peki ama bu kodu nereye ekledi? Tabii ki aşağıdaki “Unit.pas” penceresinin (Formun üzerine çift tıklarsanız erişebilirsiniz.) içerisine (“pas” uzantılı dosyalar yazmış olduğunuz kodları saklarlar.) dosyayı kaydettikten sonra bu kodlar “pas” uzantılı olarak yeni bir dosya oluşturmaktadır. Buradaki mantık “Nesneden nesne yaratma (Object Oriented)” şeklinde işlemektedir. Daha detaylı olarak açıklayacak olursak, “TButton” Delphi içerisinde bu kontrole ait tüm özelliklerin ve metodların tanımlandığı bir class’tır. “Button1” de, bu Class’tan türetilen yavru üyenin adıdır. Dolayısıyla 5
  • 33. bu sınıfa ait statik olmayan (Daha sonra açıklanacaktır.) tüm yöntemleri de bünyesinde barındıracaktır. Delphi’nin tüm kontrollere ait kütüphaneleri projenize başlangıç anında eklememesinin sebebi, performansı en üst düzeyde tutmak istemesinden kaynaklanmaktadır (Kullanılmayan bir class’ın projeye eklenmesi sanırım pek hoş olmayacaktır). Neyse son derece teknik olan bu hususlara daha sonraki bölümlerde detaylı olarak değinecek olup, şimdiden kafanızı fazla şişirmek istemiyorum. Object Inspector, Exploring Unit.pas: Bu pencereden projenize eklemiş olduğunuz form ve diğer nesneleri (Button, Edit vs.) izleyebilirsiniz. Şayet buradaki nesnelerden herhangi birtanesinin üzerine mous ile çift tıklarsanız, “Unit.pas” penceresinde o nesnenin tanımlanmış olduğu satıra ulaşabilirsiniz. Alt kısımda yer alan diğer pencereden de eklemiş olduğunuz kontrole ait özellikleri “Properties” yaprağından değiştirebilirsiniz. Eğer bu pencere ekranda gözükmüyorsa, “View->Object Inspector” adımlarını izleyerek gözükmesini sağlayabilirsiniz. Events’lara Erişebilmek: Delphi içerisinde kod yazabileceğiniz yordamlara (Tetikleyiciler) ulaşabilmek için yukarıdaki pencerenin (Object Inspector) “Events” yaprağına tıklayabilirsiniz. Bu yaprakta hangi yordama kod yazacaksanız, sağında yer alan beyaz kutunun içerisine mous ile çift tıklamalısınız. 6
  • 34. Aşağıda “Events” yaprağına ait görüntü ekranı verilmiştir. Burada Form’a ait (Seçili eleman form olduğu için) bir çok tetikleyici görüntülenecektir. Bunlar daha sonra detaylı olarak kitabın ilerleyen kısımlarında anlatılmıştır. Kod Penceresine Ulaşmak: Yukarıdaki pencerede herhangi bir yordama (İsimlerinin sağındaki beyaz alana) mous ile çift tıklarsanız, kodları yazabileceğiniz ekrana kolayca ulaşabilirsiniz. Aşağıdaki pencereye “OnCreate” yordamı çift tıklanılarak ulaşılmıştır. Bu yordama ait işleteceğiniz kodları yukarıda işaretlenen yerlere yazmalısınız. 7
  • 35. Kod (Unit) Penceresinin Özellikleri: Yukarıda açmış olduğunuz “Unit” penceresi, görsel dillerle beraber kullanılmaya başlayan bir çok özelliği de beraberinde getirmektedir. Bu ekran bir Editör programının parçası olup, epeyce kullanışlı özelliği bulunmaktadır. Aşağıda en önemli özelliklerinden bahsedilmektedir. • Ctrl+Space Tuşunun Beraber Kullanılması: Unit penceresinde kodlarınızı yazarken herhangi bir komutun baş harflerini hatırlamanız, satırı tamamlamanız için yeterli olacaktır (Kodun doğru yazılabilmesi için devamlı kullanmanızı tavsiye ederim). Aşağıdaki pencerede izlenen adımlara dikkat ediniz. Bu ekranda “Edi” yazıp “Ctrl+Space” tuşlarına beraberce basarsanız, eklenmiş olan kütüphanelere ait yazabileceğiniz tüm komutları listeleyen yeni bir pencereyle karşılaşacaksınız. Enter tuşuna basarak bu pencereden istediğiniz komutu seçebilirsiniz. • Kod Penceresinde “.” Karakterinin Kullanılması: Yukarıda anlatılan şekilde (Ctrl+Space), kullanacağınız komutun ismini tam olarak yazdırdıktan sonra (Ezbere de yazabilirsiniz tabii ki) klavyeden “.” tuşuna basarsanız, o kontrole (veya komuta) ait tüm özellik ve metodların içerisinde bulunduğu yeni bir listeyle karşılaşırsınız. Hangi özelliği (veya metodu) kullanacaksanız “Enter” tuşuyla seçebilirsiniz (Bu özellik kod yazma kolaylığı açısından gerçekten devrim sayılabilecek bir olaydır). Burada dikkat edeceğiniz husus, eğer bir kontrole ait tüm özellikleri listelemek istiyorsanız; o kontrolün sürüklenip (veya kodla eklenmesi gerekir) formun üzerine bırakılması 8
  • 36. gerektiğidir. Projeye tanıtılmamış bir kontrolün özelliğini listelemeniz mümkün olmamaktadır. Aşağıda bu olay örneklendirilmiştir. Kod yazarken bu pencere sizi devamlı olarak yönlendirecektir. Sonuç olarak her zaman doğru kod satırları oluşturmuş olacaksınız. Açılan pencerenin sol kısmına dikkat edecek olursanız komutun bir özellik, procedure veya function olduğu da belirtilmektedir. Sağ tarafta ise metodun veya özelliğin döndürdüğü tip gösterilmektedir. Object TreeView Penceresi: Bu pencere, eklemiş olduğunuz kontrollere ait bilgileri ağaç yapısı şeklinde listelemek için kullanılabilmektedir. Herhangi bir kontrolün üzerine mousun sol tuşuyla tıklarsanız, o kontrolün aktifleşmesini sağlayabilirsiniz. Aynı şekilde mous ile çift tıklama yaparsanız sizi kod sayfasına ulaştıracaktır. . Eklemiş olduğunuz tüm kontrolleri bu pencereden takip edebilirsiniz. 9
  • 37. Eğer ekranınızda bu pencere gözükmüyorsa “View->Object TreeView” adımlarını izleyerek gözükmesini sağlayabilirsiniz. Yukarıdaki pencereleri dilerseniz üst üste mous ile yerleştirerek tek bir pencerede gösterilmesini de sağlayabilirsiniz. Uygulama açısından pencerelerin nerede olduğu Delphi’yi fazla ilgilendirmemektedir, hangisi kolayınıza geliyorsa o şekilde kullanabilirsiniz. Pencereye dikkat edecek olursanız üç farklı yaprağın bulunduğunu görecekseniz. Ekranınızda daha rahat çalışabilmeniz için bu yöntemi uygulamanızı tavsiye ederim. Delphi Dosya Uzantıları: Oluşturduğunuz Delphi projesi aşağıdaki uzantılı dosyaları otomatik olarak oluşturacaktır. 10
  • 38. Bu uzantılı dosyaları açıklamaya çalışalım. Dosya Uzantısı İçeriği Dof Pencere Ayarları Dfm Windows Formlarına ait bilgileri Tutar Res Grafiksel kaynak kodlarını tutar (resim vs.) Pas Unit lere ait kodları Tutar Dpr Projeye ait Bilgiler Tutulur Projenizi kaydedip bir kere çalıştırdıktan sonra aşağıdaki iki dosyada klasörünüze eklenecektir. Dosya Uzantısı İçeriği Exe Tek başına çalıştırılabilir Dosya Dcu Unit kodlarınızın derlendikten sonra tutulduğu dosyadır Bu iki dosyayı silerek projelerinizi diskete kaydedebilirsiniz. Uygulamanızı her çalıştırdığınızda, bu dosyalar yeniden Delphi tarafından oluşturulacaktır. Kod Penceresine Ait Font Ayarları: Delphi, sizlere Unit penceresine yazacağınız kodları belirlemiş olduğu grup dahilinde değişik formatlarda yazmanıza imkan tanımaktadır. Mesela aynı pencere içerisinde kod satırları ile açıklama satırlarının farklı renkte olması (veya farklı kalınlıkta) bu sayede mümkün olabilmektedir. Dilerseniz tamamen sizin hoşunuza gidebilecek bir düzende oluşturabilirsiniz. Aşağıda kod penceresine ait Editör ayarlarını nasıl yapabileceğiniz açıklanmıştır. 11
  • 39. “Tools->Editor Options” adımlarından sonra karşınıza aşağıdaki “Editor Properties” penceresi açılacaktır. Bu pencerenin “Color” yaprağını aktif hale getirin. “Elements” kısmında gruplandırılmış olarak bulunan seçeneklerden bir tanesini seçip, o elemana ait tüm font ayarlarını belirleyebilirsiniz. Yapacağınız değişiklikler sadece “Elements” kısmından seçmiş olduğunuz gruba etki edecektir. Diğer grupta bulunan elemanlar bu değişikliklerden etkilenmeyecektir. Uses İfadesi: Uses deklarasyonu sayesinde, Delphi içerisinde tanımlı olan kütüphaneler (veya sizin oluşturduğunuz diğer Unit leri çağırmak) projeye dahil edilebilirler. Bu sayede kütüphanelerin içerisinde tanımlı olan fonksiyon, değişken, procedure ve özellikleri kolayca kullanabilirsiniz. Uygulamanızın ilk çalışması anında en çok kullanılan kütüphaneleri Delphi otomatik olarak projenize dahil edecektir. Fakat bazı durumlarda sizin dahil edilmeyen kütüphaneler içerisinde tanıtılmış olan metodlara ihtiyacınız olacaktır. İşte bu kütüphaneleri uygulamanıza ancak “Uses” bildirisiyle çağırabilirsiniz. “Uses” bildirisinin nasıl yapılacağı aşağıda gösterilmiştir. 12
  • 40. Pencereye dikkat edecek olursanız tek bir “uses” deklarasyonu sayesinde araya “,” konularak bir çok kütüphane uygulamanıza dahil edilmiştir (Dahil edilen bu kütüphaneler sadece Unit1 tarafından kullanılabilir). Uses bildirimini daha iyi anlamanız için aşağıdaki örneği dikkatlice inceleyiniz. Örnekte Buttona tıklanılarak kullanıcıya basit bir mesaj iletilmesi istenmiş olup, bu amaçla aşağıdaki kod satırı eklenmiştir. Programı çalıştırıp Button2’ye tıklayacak olursanız aşağıdaki pencereyle belirtmiş olduğunuz uyarı kullanıcıya iletilecektir. Peki neden bu uyarı gözüktü? Hemen izah edeyim, çünkü “ShowMessage” fonksiyonu “Dialog” kütüphanesinin içerisinde tanımlanmıştır (Dilerseniz Ctrl tuşu basılıyken mousun sol tuşu ile “ShowMessage” yazısının üzerine tıklayın) . 13
  • 41. Uses satırında da bu kütüphane projenize dahil edildiği için, Buttona her tıkladığınızda mesaj ayrı bir pencere olarak karşınıza gelecektir. Şimdi Uses satırında yer alan kütüphanelerden “Dialogs” olanını silip uygulamanızı çalıştırırsanız (çalıştıramayacaksınız) “ShowMessage” fonksiyonunu bulamadığına dair uyarıyı sizlere iletecektir. Project Manager Penceresi: Bu pencere sayesinde projeniz için oluşmuş olan dosyaların kayıtlı oldukları adresleri izleyebilirsiniz. Burada gözüken bir proje grubudur ve bu gruba ait bir çok Delphi dosyasının bulunduğu sanıyorum dikkatinizi çekmiştir. Şayet bu pencere ekranda gözükmüyorsa “View->Project Manager” adımlarını izleyerek ekranda açtırabilirsiniz. “New” komutuyla ekleme, “Remove” komutuyla da silme işlemini gerçekleştirebilirsiniz. 14
  • 42. Window List Penceresi: Ekranda gözüküyor konumda olan tüm nesneleri izleyebileceğiniz bir penceredir. Bu pencereden herhangi bir nesneyi seçip “OK” Buttonuna tıklarsanız, seçmiş olduğunuz pencereniz aktifleşecektir. Şayet bu pencere ekranda gözükmüyorsa “View->Windows List” adımlarını izleyerek gözükmesini sağlayabilirsiniz. 15
  • 43. 16
  • 45. 18
  • 46. Örnekleri Yapabilmeniz İçin Gerekli Olan Pratik Kodlar: EditBox’ın içerisinde bulunan değeri tamsayı tipli değişkene aktarmak Koda dikkat edecek olursanız ilk olarak “x” isminde tamsayı değişkeni tanımlanmakta olup, kontroldeki değeri alabilmesi için “StrToInt” (Stringi Tamsayıya çevir) tip çeviri fonksiyonuna ihtiyaç duyulmaktadır. Eğer bu tip dönüştürme işlemini yapmazsanız, Delphi size sonucu hesaplayamayacağına dair hata mesajı iletecektir. TamSayı tipli değişkenin değerini yazdırmak Tamsayı tipli bir değişkeni yazdırabilmek için muhakkak “String”e çevirmelisiniz. Bu dönüşümü yapabilmeniz için Delphi’de “IntToStr” fonksiyonu kullanılabilmektedir. Uyarı:Bu tür tip dönüştürme işlemlerinde kullandığınız atama operatörünün (“:=”) solundaki ve sağındaki verinin tiplerinin aynı olması gerekmektedir. 19
  • 47. Ayrıca kontroller üzerinde klavye ile girilebilen veri tiplerinin string olduğunu da unutmayınız. EditBox’ın içerisinde bulunan değeri Reel Sayı tipli değişkene aktarmak Uygulanan yöntem şu; atama operatörünün sol ve sağında yer alan veri tiplerinin aynı olmasını sağlamak için “Edit” kontrolünün içerisinde yer alan değer “StrToFloat” fonksiyonu sayesinde reel sayı tipine çevrilmekte, ondan sonra atama işlemi gerçekleştirilebilmektedir. Reel Sayı Tipli Bir Değişkenin Değerini Yazdırmak: Aynı mantık uygulanarak reel sayı değişkeni “FloatToStr” tip dönüştürme fonksiyonu sayesinde stringe çevrilip, arkasından da EditBox’ın içerisinde yazdırılmaktadır (Herhangi bir tipteki matematiksel değişkenin değerini yazdırabilmeniz için muhakkak stringe dönüştürmeniz gerekir. Aksi halde Delphi size hata mesajı iletecektir). 20
  • 48. EditBox’ın İçerisine String Veri Yazdırmak: String tipli bir değişkenin değerini (veya direkt string i) EditBox kontrolünde yazdırabilmeniz için (‘) operatöründen faydalanabilirsiniz. Aşağıda her iki durum içinde örneklendirme yapılmıştır. Aşağıda verilen örnekte ise procedure içerisinde string tipli bir değişken tanımlanarak, bu değişkene aktarılacak olan içerik yazdırılmaktadır. Burada kullanılan “x” değişkeninin tipi string olarak verildiği için atama (:=) operatörünün sol ve sağındaki tipler aynı olmaktadır. Bu yüzden tip dönüşüm işlemi uygulamak zaten mantıksız olurdu. EditBox’ın içerisinde bulunan değeri Tarihsel tipli değişkene aktarmak Bir çok uygulamanızda tarihsel veri içeren değerlerle işlem yapmak zorunda kalacaksınız. Bu elinizdeki tarihsel değişkenin değerini yazdırmak, veya tarihsel 21
  • 49. değer barındıran bir kontrolün içeriğini değişkene aktarmak şeklinde olabilir. Şimdi sizlere EditBox’ın içerisinde bulunan string (Ama tarihe dönüştürülebilir) içeriği tarihsel bir değişkene nasıl aktarabileceğinizi göstereceğim. Kodu inceleyecek olursak, kontrolün içerisindeki string tipli veri “StrToDate” fonksiyonu sayesinde tarihsel içeriğe dönüştürülüp bir gün eklenmektedir. Ardından tekrar ters dönüşüm yapılarak (tarihten-stringe), formunuzun başlığında yazdırılmaktadır. Tarihsel Değişkenin Değerini Yazdırmak: Tarihsel içerikli bir değişkenin değerini aşağıdaki şekilde oluşturacağınız bir kod satırı sayesinde kolaylıkla yazdırabilirsiniz. Tip dönüştürme işlemlerine lütfen dikkat ediniz. 22
  • 50. Aktif Formu Kapatmak: Çalışan aktif formu kapatmak (Eğer tek formunuz varsa aynı zamanda programınız da sonlanacaktır.) için aşağıda gösterilen şekilde basit bir kodlama kullanabilirsiniz. Alt Satırdaki Kodların İşlemesini Engellemek: Bazı durumlarda procedure içerisinde belirlediğiniz bir koşul oluştuğu anda alt satırlardaki kodların işlemesini istemeyip, kod okumayı sonlandırabilirsiniz. (C++ daki return, veya Visual Basic deki Exit Sub). Şimdi bu tür kodlamaya örnek vereceğim. Şayet “exit” komut satırı olmasaydı formun başlığında “Yüksel İnan” stringi yazacaktı. Fakat “exit” sayesinde altta yer alan iki satır kod okutulmamakta, bundan dolayı formun başlığında “Nihat Demirli” içeriği yazdırılmaktadır (Bir çok durumda çok fazla işinize yarayacak bir komuttur). 23
  • 51. Programı Sonlandırmak: Aktif formla beraber diğer tüm formları da kapatmak için aşağıdaki şekilde bir kod satırı kullanabilirsiniz. Programı İkinci Formdan Başlatmak: Şayet uygulamanızda birden fazla Windows formu varsa ve siz projenizi ikinci (veya diğer herhangi bir formda olabilir) formunuzdan başlatmak istiyorsanız, belirtilen adımları izlemelisiniz.“Project->Options” menü adımlarından sonra aşağıdaki pencere açılacaktır. Bu pencerenin “Forms” yaprağını aktifleştirin. Bu yaprakta bulunan “Main 24
  • 52. Form kısmından programın ilk çalıştırılacağı formu seçebilirsiniz (Bu pencerede uygulamanıza dahil edilmiş olan tüm pencereler listeli halde bulunacaktır). Herhangi Bir Exe Uygulamasını Çalıştırmak: Aşağıdaki gibi projenize ekleyeceğiniz tek satırlık kodla, istediğiniz “exe” (Dosya yolunu doğru giriniz.) uzantılı dosyayı kolaylıkla çalıştırabilirsiniz. Burada hatırlatmak isterim. Şayet yetki probleminiz yoksa, aşağıdaki gibi “UNC” (Network adresi) path belirterek de dilediğiniz bir bilgisayardaki dosyayı da çalıştırabilirsiniz. Ağdaki Bir Bilgisayarda Bulunan Exe Uzantılı Dosyayı Çalıştırmak: Başka bir bilgisayardaki dosyayı çalıştırmak istiyorsanız bu durumda “UNC” path i kullanmalısınız. “UNC” pathmakineadıklasörpaylaşımadıdosyaadı şeklinde kullanılmaktadır. Yukarıdaki kod satırında Efsane isimli bilgisayarda, paylaşıma açılmış olan WINNT klasörünün içerisindeki, Notepad.exe dosyası çalıştırılmak istenmektedir. 25
  • 53. Değişkenler: Paket yazılımların her firma için (veya kişi) farklı sonuçlar oluşturması, programın içerisinde değişkenlerin kullanılmasından kaynaklanmaktadır. Zaten böyle olmasaydı yazılımların hiç bir anlamı kalmazdı. Delphi’de değişken temeline dayalı yazılım dilidir ve bu hususta sanıyorum varılabilecek en üst noktaya ulaşmış bulunmaktadır. Bu kadar önemli olan bir konuda tabiidir ki dikkat edilecek birtakım önemli hususlar vardır. Şimdi sizlere bu hususlardan bahsetmek istiyorum. Delphi’de değişken kullanılacaksa muhakkak programa bildirilmelidir. Bir değişkeni programa bildirmek için iki yöntem bulunur. Bunlardan birincisi procedure’un dilediğiniz yerinde değerini değiştirebilmenizi sağlayan “Var” bildirisi, diğeri ise tanımlandığında atanacak olan değer dışında başka değer alamayan (İstisnaları vardır. Daha sonra izah edilecektir.) “Const” bildirisidir. Ayrıca Delphi’de değişkenlerinizi rastgele yerlerde tanımlayamazsınız, değişken tanımlayabilmeniz için size procedure’un içerisinde bir blok sunmaktadır. Delphi size procedure-begin arasında değişken tanımlama imkanı vermektedir. Başka rastgele bir yerde değişken tanımlamanız mümkün olmamaktadır. Bu blokta Const’la tanımlanmış değişkenlere ilk değerini atama dışındaki işlemleri yapamazsınız (Bu tür kodsal işlemler sadece procedure’den sonra gelen begin- end bloğu içerisinde yapılabilir). Aşağıdaki kod penceresinde, procedure içerisinde local (Sadece o procedure tarafından kullanılabilen ve işlem bittikten sonra bellekten atılan değişkenlerdir.) değişkenlerin nasıl tanımlanabileceği gösterilmiştir. Belirtilen blok içerisinde tanımlanan tüm değişkenler local değişken olarak adlandırılırlar. Bir değişkenin local olması diğer procedure’ler tarafından kullanılamaması ve yordam bir kere işletildikten sonra o değişkenin bellekten atılacağı anlamını taşımaktadır. Pencereyi dikkatlice inceleyiniz. 26
  • 54. Delphi’de aynı satırda araya ”,” koyarak aynı tipte birden fazla değişken tanımlanabilmektedir. Ayrıca tek bir “var” bildirisi kullanarak birden fazla satırda değişken tanımlamakta mümkündür (Aynı işlem const içinde mümkün olmaktadır). Değişken Tanımlarken Dikkat Edilecek Olan Hususlar: Değişkeninizi tanımlarken aşağıdaki hususlara dikkat etmelisiniz. • Değişken isimleri kesinlikle rakamla başlayamaz. Fakat ismin içerisinde veya sonunda rakam kullanılabilir. Var //Değişken bildirisi için gereklidir. 5nih:integer; //Yanlış tanımlanmış bir değişken nih55:integer; //Doğru tanımlanmış bir değişken • Değişken isimleri içerisinde değişik karakterler kullanamazsınız (Başında veya sonunda da olamaz). Var Nih#dem:integer; //Yanlış tanımlanmış bir değişken Nih#3:AnsiString; //Yanlış tanımlanmış bir değişken • Değişken isimlerinde araya space tuşuyla boşluk bırakamazsınız. Yani değişkeninizin ismi birden fazla kelimeden oluşamaz. Eğer böyle bir değişken (Adı ve soyadını ayrık yazmak isteyebilirsiniz) tanımlamak zorunda kalırsanız, iki kelime arasına “_” karakterini yerleştirin. 27
  • 55. Var N demirli:AnsiString; //Yanlış bir değişken tanımlandı N_demirli:AnsiString; //Doğru bir değişken tanımlaması • Delphi içerisinde kullanılan herhangi bir komut değişken ismi olarak kullanılamaz. Var Not:integer; //Yanlış bir değişken tanımlandı Not1:integer; //Doğru bir değişken tanımlaması • Var bildirisiyle tanımlanan bir değişkene tanımlandığı anda değer ataması yapılamaz. Var Sayi:integer=100; //Yanlış bir atama Numara:Double=200.25 //Yanlış bir atama Sayısal bir değişken tanımlandığı anda ilk değer olarak belirtilen tipe göre rastgele bir değer almaktadır (0 değil). • Const ile yapılan bildiri sonucu tanımlanmış olan değişkene ilk değerini atamak zorunludur. Const Pi:Double; //Yanlış bir değişken tanımlaması Pi:Double=3.14; //Doğru bir değişken tanımlaması • Var bildirisiyle tanımlanmış değişkene procedure içerisinde istenildiği anda yeni bir atama yapılabilir. • Const ile bildirilmiş sabit değişkenlere procedure içerisinde yeni değer aktarılamaz (Bunun istisnası vardır. Özel bildiriler eklenerek değişkene yeni değer aktarılabilmektedir, fakat bu konu daha sonra detaylı olarak işlenecektir). • Local değişkenker procedure işlemeye başladığı anda bellekte oluşturulup, kod sonlandığı anda da bellekten atılırlar. Şimdi Delphi içerisindeki değişken tiplerini inceleyelim. 28
  • 56. Tam Sayı Değişken Tipleri: Delphi içerisinde sadece tam sayı değeri atayabileceğiniz değişken tipleri aşağıda sırasıyla sizlere aktarılmaktadır. • Shortint (-128)-(+128) arasında değer alabilen tam sayı tipli bir değişkendir. Eğer bu değerlerin dışında bir sayı aktarılmaya çalışılırsa taşma (owerflow) hatası verecektir. Bu değişken bellekte 1 Byte (8 bit) lik yer işgal eder. Var Yas:Shortint; //Sadece -128 ile 128 arasında değer atanabilir. • Smallint (-32768)-(+32768) arasında tam sayı değeri atanabilen değişken tipidir. Bellekte 2 Byte (16 bit) lık yer işgal edecektir. Var Sayi:Smallint; //Sadece -32768 ile 32768 arasında tam sayı değeri atanabilir • Longint (-2147483648)-(+2147483647) arasında tam sayı değerleri alabilen bir değişken tipidir. Bellekte 4 Byte (32 bit) yer işgal edecektir. Var Sayi:Longint; //Sadece -2147483648 ile 2147483648 arasında değer atanabilir. • Integer (-2147483648)-(+2147483647) arasında tam sayı değerleri alabilen bir değişken tipidir. Bellekte 4 Byte (32 bit) yer işgal edecektir. Var Sayi:Integer; //Sadece -2147483648 ile 2147483648 arasında değer atanabilir. 29
  • 57. • Int64 (-2^63)-(2^63-1) arasında tam sayı değeri atanabilen değişken tipidir. Bellekte 8 Byte (64 bit) yer işgal edilecektir. Var Sayi:Int64; //Sadece -2^63 ile 2^63 arasında değer atanabilir. • Byte 0-255 arasında pozitif tam sayı değeri alabilen değişken tipidir. Bellekte 1 Byte (8 bit) lık yer işgal edecektir. Var Sayi:Byte; //Sadece 0-255 arası pozitif tam sayı değeri alabilir. • Word 0-65535 arası pozitif değer alabilen değişken tipidir. Bellekte 2 Byte (8 bit) lık yer işgal edecektir. Var Sayi:Word; //Sadece 0-65535 arası değer atanabilir. • Longword 0-4294967295 arası pozitif değer atanabilen değişken tipidir. Bellekte 4 Byte (32bit) lık yer işgal edilecektir. Var Sayi:Longword; //Sadece 0-4294967295 arası değer atanabilen değişken tipidir. • Cardinal 0-4294967295 arası pozitif değer atanabilen değişken tipidir. Bellekte 4 Byte (32bit) lık yer işgal edilecektir. Var Sayi:Cardinal; //Sadece 0-4294967295 arası değer atanabilen değişken tipidir. 30
  • 58. Reel Sayı Değişken Tipleri: Delphi içerisinde ondalıklı sayı değeri atayabileceğiniz değişken tipleri aşağıda sırasıyla sizlere aktarılmaktadır. • Real48 (+-2.9*10^-39) ve (+-1.7*10^38) arasında değer alabilen reel sayı tipidir. Ondalıklı kısımdan 11-12 dijite kadar hassas çalışabilir. Bellekte 6 Byte (48 bit) yer işgal etmektedir. Var Sayi:Real48; //Sadece yukarıdaki sınırlar içerisinde değer alabilir. • Single (+-1.5 x 10^-45) ve (+-3.4 x 10^38) arasında değer alabilen reel sayı tipidir. Ondalıklı kısımdan 7-8 dijit hassasiyetiyle işlem yapabilir, ve bellekte 4 Byte (32 bit) lık yer işgal eder. Var Sayi:Single; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir. • Double (+-5.0 x 10^-324) ve (+-1.7 x 10^308) arasında değer alabilen reel sayı tipidir. Ondalıklı kısımdan 15-16 dijite kadar hassasiyetle işlem yapabilmektedir. Ayrıca bellekte bu değişken 8 Byte (64 bit) lık yer işgal edecektir. Var Sayi:Double; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir. • Real (5.0 x 10^-324) ile (1.7 x 10^308) arasında değer saklayabilen reel sayı tipidir. Bellekte 8 Byte (64 bit) lık yer işgal edecektir. Var Sayi:Real; //Sadece yukarıdaki sınırlar arasında değer alabilir. 31
  • 59. • Extended (+-3.6 x 10^-4951) ve (+-1.1 x 10^4932) arasında değer alabilen reel sayı değişken tipidir. Ondalıklı kısımdan 19-20 dijite kadar hassasiyetle işlem yapabilir. Ayrıca bellekte 10 Byte (80 bit) lık yer işgal edecektir. Var Sayi:Extended; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir • Comp (-2^63+1) ile( 2^63 -1) değer alabilen değişken tipidir. Ondalıklı kısımda 19-20 dijit hassasiyeti ile değer saklayabilir. Ayrıca bellekte 8 Byte (64 bit) lik yer işgal edecektir. Var Sayi:Comp; //Sadece yukarıda belirtilen sınırlar içerisinde değer alabilir. • Currency Parasal veriler için kullanılabilen bu değişken tipi (-922337203685477.5808) (922337203685477.5807) arasında değer alabilen 19-20 dijitlik bir değişken tipidir (Ondalıklı kısımdan 4 basamak hassasiyetiyle çalışır). Ayrıca bellekte 8 Byte (64 bit) lik yer işgal edecektir. Var Para:Currency; //Ondalıklı kısımdan sadece 4 basamak tutar. Değişkenlerinizi en ekonomik tipte tanımlamanız, size daha hızlı sonuca ulaşabilme özelliği kazandıracaktır. Bu yüzden değişken tanımlarken nasıl olsa Extended hepsini kapsıyor, bu tip tanımlayıp işlemlerimi yaptırayım düşüncesinden her zaman uzak durmalısınız. Bir adamın yaşını aktaracağınız değişkeni Double tanımlamanız sanıyorum size de fazla mantıklı gelmeyecektir. Bu kısma kadar olan değişkenlerin hepsi sayısal içerikliydi, buradan sonraki kısımda ise sayısal içeriği olmayan diğer değişkenler incelemeye alınacaktır. Öncelikle String tipler. 32
  • 60. String Değişken Tipleri: Bu bölümde karakter işlemlerinde kullanabileceğiniz değişken tiplerinden bahsedeceğim. Matematiksel ve Tarihsel içeriği olmayan değerleri tutmak için kullanılan tiplerdir. • ShortString 255 Kraktere kadar veri alabilen string değişken tipidir. Bu tipteki değişkene (‘’) içerisinde bilgi aktarıldığına dikkat ediniz. • AnsiString Yaklaşık olarak 2^31 karaktere kadar değer atanabilen (en çok kullanacağınız) ve Ansi karakter desteği olan bir değişken tipidir. Kullanımı ShortString değişkeniyle aynıdır. • WideString Yaklaşık olarak 2^31 karaktere kadar (Unicode) değer atanabilen değişken tipidir. Var Ad:WideString; //String değişken tanımlandı String tipte değer alacak olan değişkenlerinizi yukarıdaki üç tipten birtanesiyle tanımlayabilirsiniz. 33
  • 61. Boolean Tip Değişken Tanımlamak: Bir değişkeniniz sadece true veya false değerlerini alacaksa bu durumda değişkeninizi Boolean tip tanımlamalısınız. Bu tip değişkenlerde üçüncü bir durum söz konusu değildir. Ayrıca değişken tanımlandığı anda varsayılan değeri false dır. Var Sonuc:Boolean; //true veya false değerini alabilir. Tarihsel İçerikli Değişken Tanımlamak: Delphi içerisinde tarih bilgisi içeren değerleri tutabilecek olan değişkenler, TDate class’ından türetilerek kullanılabilir. Aşağıda bu husus örneklendirilmiştir. Burada tarihsel değişken olarak kullanılan iki değişken aşağıdaki şekilde tanımlanmıştır. Var İlktarih,sontarih:TDate; //Tarihsel değişkenler tanımlanıyor. Daha sonra bu iki değişkene tip dönüştürme işlemi uygulanarak EditBox kontrollerinden değer atanmıştır. Son olarak iki tarih arasındaki fark hesaplanıp başlıkta yazdırılmıştır. 34
  • 62. Delphi’de Sabit Değişken Tanımlamak: Bazı durumlarda değeri hiç değişmeyen sabit bir değişken tanımlamak isteyebilirsiniz. Mesela matematikteki pi sayısı veya logaritmada kullanılan e sayısı gibi, işte bu tip değişkenleri özel bir bildirimle yapmalısınız. Aşağıda bu husus örneklendirilmiştir. Const’la tanımlamış olduğunuz değişkenin değerini procedure içerisinde değiştiremezsiniz (Özel birim ile yapabilirsiniz). Local Static Değişken Tanımlamak: Procedure içerisinde (Global değişken olabilmesi için özel tanımlama blokları mevcuttur, daha sonraki kısımlarda incelenecektir.) tanımlanan bir değişken, kod işletildiği anda bellekte yaratılır, kodun tamamı işletildikten sonra da bellekten atılır. Procedure’ü ikinci kez tekrar işlettiğiniz zaman aynı işlemler tekrarlanacaktır. Bu durumda şöyle bir problemle karşı karşıya kalırız. Procedure’ü ilk işlettiğimiz zaman değişkenimize en son atanan değeri, ikinci işleteceğimiz zaman kullanmak istersek (Yani değişkenin en son aldığı değeri bir sonraki çağrılmada hatırlamak istersek) ne yapabiliriz? Cevabı çok basit, o değişkeni static olarak tanımlarsınız. Local bir değişkenin static olarak tanımlanması, o procedure’ü ikinci kez (veya daha fazla) işlettiğiniz zaman önceki tur bulduğu değeri kullanmasını sağlayacaktır. Bu olay bir çok durumda işinize tahmininizden daha fazla yarayacaktır. Aşağıda bu husus örneklendirilmiştir. 35