DELPHI DERS NOTLARI Delphi‟yi açtığınızda karşınıza ana form, Component Palet ve Object Inspector (özellikler ve olaylar penceresi

) gelir. FORM Form yazdığımız programlar için kullanıcı arabiriminin oluşturulduğu bir nesnedir diyebiliriz.

COMPONENT PALET

Bu palet üzerinde Delphi‟de kullanacağımız kontroller (nesneler) bulunur. Bunlar programlarımız için arabirim oluşturmakta kullandığımız form üzerine yerleştirilir. OBJECT INSPECTOR Visual dillerde ve dolayısıyla Delphi‟de her kontrolün özellikleri vardır. Bu kontrollerin özelliklerine program tasarlanırken Object Inspector denilen pencereden ulaşılır. Bu pencerede görüldüğü gibi iki sekme bulunmaktadır. Bunlardan birisi properties yani özellikler, diğeri ise events yani olaylardır. Form üzerinde hangi nesne seçiliyse Object Inspector o nesnenin özelliklerini gösterir. Mesela yandaki şekilde Object Inspector Form1 nesnesinin özelliklerini göstermektedir.

DELPHI'DE KULLANILAN DOSYA TĠPLERĠ Her unitin kaynak kodlarını içeren dosyalardır. Delphi'de oluşturulan formlara ait kodlar da PAS uzantılı dosyalarda saklanır. .dfm Form Dosyalarıdır. Delphi'de oluşturulan formlar ve üzerindeki kontrollere ait bilgiler bu uzantıdaki dosyalara kaydedilir. .dsk Projemize ait masa üstü ayarları bu dosyaya kaydedilir. Hangi formun açık olduğu, ekrandaki koordinatları gibi bilgiler bu dosyada tutulur. .dof Project / Options diyalog penceresindeki ayarları içeren dosya. .exe Çalıştırılabilir program dosyası. Application projeleri çalıştırıldığında onlara ait EXE dosya, projeye verilen isimle otomatik olarak oluşturulmaktadır. .dcu Derlenmiş unit dosyaları bu uzantı ile kaydedilir. Bir uygulamayı çalıştırdığımız zaman ilk önce unitler derlenir ve EXE hale getirilir. .dpr Proje Kaynak Dosyası. Delphi'deki projeler bu tür dosyalara kaydedilir. .res Derlenmiş Binary Kaynak ( Resource ) Dosyaları. Windows tarafından standartlaştırılan bu formattaki dosyalarda resim, ikon, kursor gibi bilgiler bulunur. .pas

> STANDARD SAYFASI: Standart sayfası, bir uygulama geliştirirken en sık kullanacağımız etiket, metin kutusu ve menü gibi bileşenleri içerir.

MainMenu: Bir forma ana menü ve menü başlıkları eklemek için PopupMenu: Form ve kontrollerde, kullanıcı sağ fare butonunu tıkladığında çıkacak menüler oluşturmak için. Label: Başlıklar gibi, kullanıcının erişemeyeceği, pencereli olmayan kontroller oluşturmak için. Edit: Kullanıcının tek satırdan oluşan bir metin girerek üzerinde değişiklik yapacağı bir alan sunmak için. Memo: Kullanıcının birden fazla satırdan oluşan bir metin girerek üzerinde değişiklik yapacağı bir alan sunmak için. Button: Kullanıcının seçebileceği veya herhangi bir işlemi gerçekleştireceği bir düğme sunmak için. CheckBox: Evet/Hayır, Doğru/Yanlış ve Var/Yok gibi iki seçeneği temsil etmek için. Onay kutuları birbirinden bağımsız çalışır. RadioButton: Çoktan seçmeli ihtimalleri sunmak için. Seçim düğmeleri genellikle grup kutuları ile birlikte kullanılır. ListBox: Kullanıcının içinden bir ya da daha fazla öğe seçebileceği bir liste göstermek için. ComboBox: Bir metin kutusuyla liste kutusunun işlevlerini birleştirmek için. ScrollBar: Bir liste veya formun görünebilir kısmını değiştirme yöntemi sunmak için. GroupBox: Bir form üzerinde ilgili bileşenleri gruplamak için. RadioGroup: Bir form üzerindeki seçim butonlarını gruplamak için. Panel: SpeedButton gibi diğer bileşenleri bir araç çubuğu üzerinde gruplandırmak için. > ADDITIONAL (EK) SAYFASI: Komut butonları ve şekiller gibi ek bileşenler yer alır. BitBtn: Sadece tıklanabilen ve üzerinde bir bitmap resim yer alabilen bir düğme sunmak için. SpeedButton: Yine resimli ve tıklanabilen, ancak bir düğme grubu olarak da çalışabilen düğmeler oluşturmak için. MaskEdit: Kullanıcının sadece geçerli karakterler girmesi için veri görüntüsünü formatlamak için. StringGrid: Yazıları sütun ve satırlara yerleştirmek için bir alan sunar. DrawGrid: Metinsel olmayan bilgileri sütun ve satırlara göstermek için bir alan teşkil eder. Image: Bir bitmap, ikon veya metafile göstermek için. Shape: Geometrik şekiller vermek çizmek için. Elips, dikdörtgen veya köşeleri yuvarlatılmış dikdörtgen. Bevel: Yükseltilmiş ya da çukur görüntüsü verebilen dikdörtgenler ya da çizgiler sunmak için. ScrollBox: Kaydırılabilen (ve formdan daha küçük) bir görüntü alanı sunmak için. > WIN32 SAYFASI: Windows95'in arabirimi ile uyumlu olan yeni bileşenler ve eski bileşenleri güncelleşmiş sürümleri vardır. TabControl: Bir dizi not defteri ayrımı sunmak için. PageControl: Birden fazla sayfaya sahip diyalog kutuları oluşturan bir dizi ayrı not defteri sayfası sunmak için. TreeView: Hiyerarşik bir öğeler listesi sunmak için. ListView: Bir öğe listesini metin, ikon, ya da bu ikisinin bileşeni olarak gösteren için. HeaderControl: Kullanıcının çalışma esnasında boyutlandırabileceği dizi sütun başlığı sunmak için. RichEdit: Hemen hemen sınırsız uzunlukta değişik metin formatlı bir memo elemanı sunmak için. StatusBar: Bir formun alt tarafında, çok bölümlü ve güncellenebilir bir durum çubuğu sunmak için. TrackBar: Kaydırma çubuğuna benzeyen, ancak görünür işaretler bulunan, kayan bir numerik kontrol sunmak için. ProgressBar: Arka planda gelişen bir sürecin ilerleyişini gösteren bir çubuk göstermek için. UpDown: Kullanıcının bir metin kutusu içindeki değeri hızla artırıp eksiltmesini sağlamak için. Hotkey: Kullanıcının Shift, Alt, Ctrl kombinasyonları gibi bir klavye kısayolu tanımlamasını sağlamak için.

> DATA ACCESS (VERĠ ERĠġĠMLĠ) SAYFASI: Data Access sayfası, veritabanı uygulamaları geliştirirken kullanabileceğiniz verilere erişimimizi sağlayan bileşenleri içerir.

DataSource: Bir sorgu veya tablo ile, uygulamalarınızda veri bilinçli kontroller arasında ilişki kurmak için. Table: Bir veritabanı tablosunu Delphi uygulamasına bağlamak için. Query: Yerel veritabanı ya da uzak SQL hizmet birimine bir sorgu yapılandırmak ve çalıştırmak için. > DATA CONTROLS (VERĠ KONTROLLERĠ) SAYFASI: Veritabanı uygulamaları geliştirirken, Data Access sayfasındaki bileşenlerle uygulamanıza eklediğiniz verileri kullanıcıya sunan, veri bilinçli elemanlar Component Palette'in bu sayfasında yer alırlar.

DBGrid: Uygulamanızın içinde verileri gösterebileceği bir ağ sunmak için. DBNavigator: Kullanıcılara uygulamanız tarafından gösterilen kayıtlar içinde dolaşma ve onları değiştirme imkânı vermek için. DBLabel: Label bileşenlerin veri bilinçli türü. DBEdit: Edit bileşeninin veri bilinçli türü. DBMemo: Memo bileşeninin veri bilinçli türü. DBImage: Image bileşeninin veri bilinçli türü. DBListBox: ListBox bileşeninin veri bilinçli türü. DBComboBox: ComboBox bileşeninin veri bilinçli türü. DBCheckBox: CheckBox bileşeninin veri bilinçli türü. DBRadioGroup: RadioGroup bileşeninin veri bilinçli türü. DBLookupListBox: Değerleri ikinci bir tablodan alınan bir liste kutusu sunmak için. DBLookupComboBox: Değerleri ikinci bir tablodan alınan bir açılır liste kutusu sunmak için. DBRichEdit: RichEdit bileşeninin veri bilinçli türü. DBCtrlGrid: Çoklu kayıt gösterme ağı sunmak için. > DIALOGS (DIYALOGLAR) SAYFASI: Standart Windows ortak diyaloglarını uygulamalarınızda kullanmanızı sağlayan bileşenler bu sayfada yer alır. OpenDialog: Windows Open ortak diyalogunu uygulamada kullanmak için. SaveDialog: Windows Save ortak diyalogunu uygulamada kullanmak için. FontDialog: Windows Font ortak diyalogunu uygulamada kullanmak için. ColorDialog: Windows Color ortak diyalogunu uygulamada kullanmak için. PrintDialog: Windows Print ortak diyalogunu uygulamada kullanmak için. PrinterSetupDialog: Windows Printer Setup ortak diyalogunu uygulamada kullanmak için. FindDialog: Windows Find ortak diyalogunu uygulamada kullanmak için. ReplaceDialog: Windows Replace ortak diyalogunu uygulamada kullanmak için. > SYSTEM (SĠSTEM) SAYFASI: Zamanlayıcılar, dizin ve dosyalar, multimedya cihazları ve OLE-DDE gibi sistem seviyesindeki işlemleri gerçekleştiren bileşenler, System sayfasında toplanmıştır. Timer: Belirli bir enterval sonraki bir işlem yapmak için. PaintBox: Form üzerinde üstüne çizim yapılacak dikdörtgen bir alan sunmak için. FileListBox: İçinde bulunulan dizindeki dosyaları göstermek ve çalışma esnasında izlenmelerini sağlamak için. DirectoryListBox: İçinde bulunulan sürücüdeki dizinleri göstermek ve çalışma esnasında izlenmelerini sağlamak için. DriveComboBox: İçinde bulunulan sürücüyü göstermek ve kullanıcının seçim yapmasını sağlamak için.

FORMLAR Formlar, bir Delphi uygulamasının merkezini teşkil eden arabirimlerdir. Görsel olan yada olmayan tüm eleman yada bileşenler, formların üzerine yerleştirildiklerinde kullanılabilirler. Formlar kullanıcı adına bir pencere diyalog kutusu ya da bir bilgi giriş ekranı olarak kullanabilir. Delphi‟yi başlatıldığında standart ayarlara sahip boş bir form otomatik olarak gelir. Yeni uygulama geliştirmek için bu form başlangıç noktası olarak kullanılır yada yeni bir form seçilerek veya oluşturarak da çalışılabilir. Formların Özellikleri Windows uyumlu programlarda olduğu gibi bu formda da başlık çubuğu, sağ üst köşesinde Ekranı Kapla ve Simge Durumuna Küçült düğmeleri bulunmaktadır. Formun sol üst köşesinde ise Denetim Menüsüne ait düğme bulunur. Tek tıklama ile Denetim menüsü açılır. Burada Simge Durumuna Küçült, Ekranı kapla gibi komutlar bulunur. Kapat komutuyla form kapatılır. Tekrar açmak için View menüsünden Project Manager komutu yardımıyla projedeki Form ve Unit‟ler tekrar görüntülenebilir. Form hazırlanırken fare ile boyut ve konum için ayarlar yapabilir. Formlarla ilgili olarak anlatılacak olanlar 3 gruba ayrılabilir. Formun özellikleri belirlemede kullanılan, Properties’dir. Formların hemen hemen bütün özellikleri Object Inspector penceresinden ayarlanabilir. İkinci sırada formlara uygulanabilen olaylardan bahsedilebilir. Son olarak da metodlar vardır. Örneğin; formun üzerine TextOut ( ) metodu ile bir bilginin yazılması. Formların boyutları, aktif olduğu sırada ekrandaki yeri, rengi, kenar çizgileri, başlığı gibi özellikleri söz konusudur. Forma ait olan ve formun hazırlanması ile birlikte otomatik olarak tanımlanan ve form hakkında bilgi içeren bu değişkenlere Delphi dahilinde Properties adı verilmektedir. Bu değişkenlerin çoğunun içeriği tasarım anında Object Inspector penceresinden değiştirilebilir. Bazı özellikleri ise ancak çalışma anında program kodu ile değiştirmek mümkündür. Yeni formların bazı özellikleri vardır ki bunları çalıştırma anında değiştirmek mümkün değildir. Bunlar ancak tasarım anında değiştirilebilir. Çalışma anında formların özelliklerini değiştirmek, bir değişkene değer atamaya benzer. Formların maksimize, minimize gibi özelliklerinde değişiklikler için BorderIcons özelliğinden yararlanılır. Bir dizi şeklinde tanımlanmıştır. Object Inspector‟da bu özelliğin önünde bir (+) işareti bulunur. Buraya fare ile çift tıklama yaparsak bu alt özelliğe 4 özellik daha eklenir. Bu özelliklerden False diğerine aktarıldığında icon‟lar soluk olarak görüntülenir veya hiç görüntülenmezler. Çalışma anında formun boyutunu kullanıcının değiştirmesini önlemek için BorderStyle özelliğinde değişiklik yapılması gerekir. Formlar için seçilebilecek 4 değişik çizgi tipi vardır. Formun sınırları çizgi ile belirlenmek istenmiyorsa bsNone atanması gerekir. Bu durumda hem başlık bilgisi hem de düğmeler kaybolur. BsDialog seçilirse maximize ve minimize özellikleri kaldırılır. BorderStyle özelliği program kodu yazılarak değiştirilemez. Formların başlık bilgisi Caption özelliğinde saklanır. Adı ise name özelliğindedir. Name özelliği formu temsil eden özelliktir ve program kodu yazılarak değiştirilemezler. Formun genişliği Width, yüksekliği ise Height özelliğinde saklanır. Formun ekrandaki konumu ise Left ve Top özelliklerinde saklanır. Top; formun ekranın üst kenarına olan uzaklığı, Left ise ekranın sol kenarından pixel cinsinden uzaklığıdır. Formların denetim menüsünü açarken tıkladığı bir icon vardır. Bu icon Delphi tarafından atanır. Bu iconu tüm projelerde geçerli olacak şekilde Project menüsünden Option komutunu verip gelen Project optionun dialog kutusundaki Application sekmesinden değiştirebilir. Fakat üzerinde çalışılan formda bu değişikliği yapmak için formun icon özelliğinden yararlanılır. Windows uyumlu programlarda fare işareti bulunduğu ortama göre yapılabilecek işlemleri işaret etmek üzere şekil değişikliğine uğramaktadır. Bu etkiyi nesneye ait Cursor özelliği verebilir. Fare işaretini temsil eden 17 adet sabit değer vardır. crDefault normal fare görünümü temsil eder ve varsayılan olarak seçilidir.

Formları kullanılmaz duruma getirmek için Enable özelliğine False değerinin ataması gerekir. Bu özellik varsayılan olarak True değerini içerir. Tasarım anında formu kullanılmaz duruma getirmek pek anlamlı bir işlem değildir. Fakat çalışma anında bazı durumlarda bu durum istenebilir. Bir diğer özellik Hint özelliğidir. Bunun görevi ipucu görüntülemektir. Fare ile nesne üzerine gelindiğinde bir süre sonra ne iş yaptığına dair bir metin görüntülenir. Hint özelliğinden yararlanmak için iki işlem yapılmaktadır. İlk olarak False değeri içeren ShowHint özelliğine True değerini aktarmak, ikinci olarak Hint adlı özelliğe görüntülenecek metni girmek gerekir. Formlara Uygulanan Olaylar Seçili durumda olan form veya nesne için tanımlı olan olayları görmek için Object Inspector penceresinin Events başlıklı sekmesine tıklamak yeterlidir. Delphi tarafından herhangi bir nesne için önceden tanımlı olan olaylardan biri meydana geldiği zaman, yapılmak istenen işlemleri belirlemek için PAS uzantılı UNIT dosyası içinde bir yordam hazırlanır. Ardından bu yordamın adı Object Inspector‟da ilgili yere yazılır. Bir olayı tanımlamak için Object Inspector penceresinin Events sekmesinde ilgili yere çift tıklama yapılması yeterlidir. Form üzerine tıklama yapıldığı zaman Click, çift tıklama yapıldığı zaman ise DblClick, Close metodu ile form kapatıldığı zaman ise OnClose olayı meydana gelir. Form tıklandığı zaman ise FormClick olayı meydana gelir. OnCreate olayı: Delphi projelerine dahil edilen bütün formlar, proje çalıştırıldığında otomatik olarak hazırlanıp belleğe yüklenmektedir. OnCreate olayı bu anda meydana gelir. FormCreate yordamını kalıbını hazırlamak için tasarım anında form üzerinde çift tıklamanız yeterlidir. Üzerinde çalışılan projede sadece bir form varsa, formun belleğe yüklenmesi ve silinmesi gibi sorunlarla ilgilenilmesine gerek yoktur. Çünkü proje çalıştırıldığında form otomatik olarak hazırlanır ve sonra aktive edilip ekrana getirilir. Projenin çalışması bitince formda otomatik olarak bellekten silinir. Fakat projede birden fazla form söz konusu ise formların aktive edilmesi ve pasif duruma getirilmesi programcının işi olmuş olur. Projeye dahil edilmiş bir formu ekrana getirmek için Show metodundan yararlanılır. Formlar show metodu ile ekrana getirilirken Activate olayı meydana gelir. Bu olay meydana geldiği zaman, söz konusu forma ait unitte FormActivate adında bir yordam varsa işletilir. Aktif durumda olan bir form varken ikinci bir form ekrana getirildiğinde daha önceki form pasif duruma gelir. Bu sırada Deactive olayı meydana gelir. Çalışma sona erdirilen bir form bellekten silinir. Bu durumda ise Destroy olayı meydana gelir. Close Olayı : Formun kapatılması sırasında meydana gelir. OnClose olarak ifade edilir. Kapatılan form Show metoduyla tekrar ekrana getirilebilir. Bu olaya ait yordama Action diye bir parametre gönderilir. Action parametresine caFree sabit parametresi aktarılırsa form kapatılır, caMinimize değeri aktarılıp form simge durumuna getirilebilir. Aynı şekilde caHide parametresiyle form ekranda gizlenebilir. ReSize Olayı : Çalışma anında formun boyutunda yapılan değişikliklerle Resize olayı meydana gelir. Çalışma sırasında formların boyutlarında değişiklik yapılıp yapılamayacağı BorderStyle değişkeninin içeriğine bağlıdır. KeyPress Olayı : Çalışma anında klavyenin yön ve kontrol (Ctrl, Alt, Shift) tuşları dışında herhangi bir tuşa basılması halinde OnKeyPress olayı meydana gelir. KeyPress olayı için Delphi tarafından düzenlenen yordam, basılan tuşun kendisi parametre olarak gönderilir. KeyDown ve KeyUp Olayları : KeyDown ve KeyUp olayları işlevleri bakımından KeyPress olayına benzeseler bile bazı farklılıklar vardır. KeyDown olayı tuşa basıldığı anda, KeyUp ise tuş bırakıldığı anda meydana gelir. Basılan tuşun Ascii kodu Key adlı değişkene aktarılır. Shift adındaki 3. Parametre ise bu olay meydana geldiği zaman Shift, Ctrl ve Alt tuşlarından birinin basılı durumda olup olmadığı konusunda bilgi içerir. KeyDown olayı sırasında Shift tuşu basılı ise ssShift, Ctrl tuşu basılı ise ssCtrl, Alt tuşu basılı ise ssAlt değeri döner. MouseDown Olayı : Bu olay çalışma anında formun üzerinde farenin herhangi tuşuna basılması halinde meydana gelir. Bu olayı temsil eden FormMosueDown yordamı 4 parametreye sahiptir. Button adlı 2. Parametre MouseDown olayının meydana geldiği sırada farenin hangi tuşuna basıldı bilgisini bildirir. Farenin

sol tuşu ile bu olay meydana geldiyse button parametresine mbLeft, sağ tuş ise mbRight, her iki tuşa birlikte basılmışsa mbMiddle değeri aktarılır. MouseUp Olayı : Kullanıcının farenin basılı olan tuşunu bıraktığı sırada gerçekleşir. MouseUp yordamı 3 parametreye sahiptir. Bu olaydan form veya başka bir nesne üzerinde fare ile taşıma veya boyut değişiklik yapılan uygulamalarda yararlanılmaktadır. Formlara Uygulanan Metodlar Her şeyi ile nesne yönelimli bir program geliştirme aracı olan Delphi ile geliştirilen uygulamaların en temel bileşenleri olan formlar ve formlara dahil edilen nesnelerdir. Uygulamalara dahil edilen her nesnenin varsayım olarak bazı özellikleri bulunmaktadır. Bir nesne için anlatılması en önemli plan konulardan biri de üzerinde işlem yapmaya yarayan metodlardır. Show Metodu: Formların görüntülenmesi için kullanılan bir metoddur. Projede bir tek form var ise Show metoduna ihtiyaç duyulmayabilir. Fakat projede birden fazla form var ise proje çalıştığında sadece biri görüntülenir ve formların görüntülenmesini program kodunda show metodunu kullanarak programcının görüntülemesi gerekmektedir. Daha önce ekranda görüntülenmesine rağmen pasif durumda olan veya hide metodu ile gizlenmiş formlar show metodu ile tekrar ekrana getirilebilirler. Close ve Hide Metodları : Close metodu ile daha önce ekrana getirilmiş formlar kapatılabilir. Fakat projede birden fazla form var ise önce formun adı belirtilmelidir. Hide metodu ile formlar masa üstünden kaldırılıp gizlenir. Tekrar görüntülenmesi için show metodu kullanılır. Ekrana tekrar getirilen form orijinal görünümünü korur. EDĠT KONTROLÜ Metin kutusu (Edit) Component Palette araç çubuğunda standart sekmesinde bulunmaktadır. Genel olarak bilgi girişi yapmak için kullanılır. Edit nesnesine girilen veya atanan bilgi Text özelliğinde tutulur ve varsayım olarak “Edit1” bilgisi atanır. Birçok nesnede bulunan Caption özelliği edit nesnesinde yoktur. İlk metin kutusundan diğerine geçmek için Tab tuşuna basabilir veya fare ile üzerine tıklanabilir. AutoSelect : Kullanıcı Tab tuşunu kullanarak öğemizin üzerine geldiğinde, yazının seçili gelmesini sağlar AutoSize : Bileşenin yüksekliğinin yazıya göre ayarlanmasını sağlar. CharCase : Bileşene girilen yazının harflerinin nasıl girileceğini ayarlar. (Küçük, büyük normal) Color : Bileşenin arka plan rengini belirler. Cursor : Bileşenin üzerine geldiğinde farenin alacağı şekli belirler. Enabled : Bileşenin aktif olmasını sağlar. Font : Yazı tipini belirler. Height : Bileşenin yüksekliğini belirler. („AutoSize‟ özelliği „True‟ ise etkisizdir). Hint : İpucu girilmesini sağlar. Left : Bileşenin yatay olarak yerini belirler MaxLength : Girilebilecek metnin maksimum uzunluğunu belirler Name : Bileşenin ismini belirler PasswordChar : Bileşenimizi şifre girişi için kullandığımızda işe yarar. PopupMenu : Yan menüyü belirler. ReadOnly : Bileşenimizi sadece okunabilir yapabiliriz. ShowHint : İpucunun ekranda görüntülenmesini sağlar. Text : Pencere açıldığında bileşende görülecek olan yazıdır. Top : Bileşenin dikey olarak yeri belirtilir. Width : Bileşenin enini belirler.

BORLAND DELPHI'DE VERĠ TABANI Veri Tabanı Dosyası, Delphi ile birlikte gelen Borland Database Desktop ile tasarlanabilir. Bunun dışında Visual Dbase, Dbase for Windows, Paradox, Dbase VI, Access gibi veri tabanı programları da desteklenir. Şimdi Database Desktop programı ile veritabanı hazırlamaya başlayalım. DATABASE DESKTOP ĠLE VERĠTABANI HAZIRLANMASI Delphi ile gelen Database Desktop programını çalıştırın. Daha sonra tablo hazırlayacağız. Bunun için FileNew-Table menüsüne tıklayınız. Açılan pencere'de Paradox 7‟yi seçin ve Ok tuşuna tıklayın. Veri tabanındaki alanları tanımlayabilmeniz için pencere açılacaktır. Açılan bu penceredeki sütunlar aşağıdaki özellikleri belirtir. 1) Field Name: Bu sütuna alanın ismi yazılır. ( Örneğin Adı Soyadı vb. ) 2) Type: Bu alana girilecek olan bilginin tipini giriyoruz. Aşağıda bu tipleri belirteceğim. 2-1) Character: Bu alana girilen bilgi harflerden veya rakamlardan veya her ikisinin karışımından olabilir. 2-2) Number: Bu alana girilen bilgi sadece rakamlardan ibarettir. 2-3) Date: Tarih bilgileri bu tipte tanımlanır. 2-4) Logical: Evet - Hayır, Açık - Kapalı gibi sadece iki durumdan oluşan olaylar bu tipte tanımlanır. 2-5) Memo: Uzun metinler bu tipte tanımlanır. 2-6) Binary: Resim, ses gibi özel alanlar bu tipte tanımlanır. 3) Size: Bu sütuna da karakter sınırı yazılır. ( Örneğin 10 yazıldığında ; 10 karaktere kadar klavyeden giriş yapılır. ) Not: Sütunlara bilgiler girildikten sonra, Save As tuşuna basılarak oluşturduğumuz Tablo kaydedilir. VERĠTABANI BĠLEġENLERĠ Data Access kısmındaki kontroller program çalıştığında ekranda gözükmeyen bileşenlerdir. Bu bileşenler Data Controls kısmındaki kontroller ile görüntülenecek veriler için veritabanları ile köprü vazifesi görürler. TTable: En önemli özellikleri DataBaseName ve TableName'dir. Database Name'e BDE içinde tanımladığımız alias verilebilir. Örneğin: Formumuza Data Access kısmından 1 tane TTable yerleştirelim. Bunun Database kısmına DBDEMOS aliasını seçelim. Daha sonra TableName kısmındaki ComboBox'tan country.db' yi seçelim. DataSource: Verilerin Data Controls kısmındaki bileşenler yardımıyla görüntülenmesi için Table, Query gibi kontrolleri mutlaka Datasource'e bağlanması gerekmektedir. Az önce formumuza Table yerleştirmiştik. Şimdi formumuza Data Access kısmından Data Source kontrolünü yerleştirelim. Object Inspector penceresinden Dataset özelliğini az önce koyduğumuz Table1'e ilişkilendirelim. DbEdit: Görsel kontrollerden biridir. Data Controls' dan seçip formumuza yerleştirelim. DbGrid'in önemli kısımlarından DataSource ve DataField'dir. Şimdi DataSource kısmında DataSource1'i seçelim. DataField kısmından da Area 'yı seçelim. Gerekli diğer kontrolleri de yerleştirdikten sonra; Table1'i seçerek Object Inspector'den Active kısmını True yapalım; sonra programı F9 tuşuna basarak çalıştıralım. Görüleceği gibi country.db'ye ait bütün bilgiler ekranımızda belirdi. DbImage: Veritabanlarına resim içeren alanların işlenmesi için kullanılır. DbGrid: Verilerin gösterilmesi için kullanılır. Gösterilecek alanlar ayarlanabilir, verilerin fontu değiştirilebilir. Az önceki örneğimizdeki formumuza Data Controls kısmından DbGrid yerleştirelim. Daha sonra Object Inspector'de DataSource özelliğini DataSource1 değerini verelim. Böylece programı çalıştırdığımız zaman Grid sütunlarında, alanlar ise satırlarında gösterildiğini göreceğiz. DbNavigator: Veriler üzerinde güncelleme, silme, yeni kayıt ekleme, ileri - geri gitme vb. gibi işlemlerin yapıldığı araç çubuğudur. Örneğimizde formumuza Data Controls kısmından DbNavigator yerleştirelim ve Object Inspector kısmında Data Source özelliğini Data Source1 yapalım. Programı çalıştırdığınız zaman istediğiniz işlemleri DbNavigator çubuğuyla yapabileceğinizi göreceksiniz. Bu çubuktaki özellikleri inceleyelim.

First: İlk kayda gider. Prior: Bir önceki kayda gider. Next: Bir sonraki kayda gider. Last: En son kayda gider. Insert: Mevcut kayıttan önce araya bir kayıt ekler. Delete: Mevcut kaydı siler bir sonraki kaydı görüntüler. Edit: Mevcut kaydın değiştirilmesini sağlar. Post: Yapılan değişiklikleri veri tabanı dosyasına yazar. Cancel: Girilen değişiklikleri iptal eder. Refresh: Mevcut kaydı yeniden görüntüler. Yani Güncelleme yapar. Not: DbNavigator'ün ShowHint özelliği True yapılarak, bu düğmelerin ne işe yaradığı üzerine gelindiği zaman yazacaktır. DbText: Label ile aynıdır. Bağlı olduğu tablodan belirtilen alan bilgisini görüntüler. Genelde üzerinde değişiklik yapılmayacak alanların gösterilmesinde kullanılır. DbMemo: Birden fazla satırın veya 255 karakterden daha uzun verilerin saklanması ve gösterilmesi için kullanılır. DbListBox: Verilen alan değeri eğer liste içinde bulunuyorsa otomatik olarak seçilir. Bileşen listesini biz doldurmak zorundayız.Verilen alan ile ilgili değerler otomatik olarak gelmez. DbComboBox: TListbox ile aynıdır. Bu kontrol aracılığı ile combobox içinde bulunabilecek değerler belirlenir ve kullanıcının bu değerlerden birisini seçmesi sağlanır. Önce DataSource özelliği ile kullanılacak tablo ve DataField özelliği ile de comboBox'un bağlantı kuracağı alan belirlenir. DbComboBox içinde bulunacak değerler ise bu kontrolün Items özelliği ile açılan pencereden belirlenir. DbRadioGroup: Bir alana girilecek bilgi sayısı sınırlı ise bu kontrol kullanılır. DataSource özelliği ile kullanılacak tablo ve DataField özelliği ile de bağlantı kurulacak alan belirlenir ve Caption ile alanın ismi değiştirilebilir. DbChart: DbChart kontrolü kullanılarak veri tabanımızda bulunan bilgileri grafiksel olarak ifade edebiliriz. Bu kontrol ile birden fazla grafiği bir arada görebiliriz. Farklı veri tabanlarında bulunan bilgileri bile aynı grafik üzerinde gösterebilmekte ve böylece farklı verilerin analizi grafiksel olarak gerçekleştirilebilmektedir. TQuery Kontrolü ile Veri Sorgulama Delphi'de Veri Sorgulama işlemi TQuery kontrolü ile olur. TQuery kontrolüne ait SQL özelliği; hem bir editör olarak ve hem de doğrudan SQL komutları yazılıp çalıştırılmak suretiyle kullanılan bir özelliktir. Şimdi Query1 kontrolüyle sorgulama işlemlerine başlayalım. Örnek: Tüm Kayıtları Listelemek liste.db adlı veri tabanımız olsun. Bunu Query1 kontrolü ile sorgulayıp listelemek istiyoruz. Bunun için yapmamız gerekenler şunlardır. İlk önce formumuza Data Access kısmından Query1 bileşeni ile DataSource1 bileşeni yerleştirelim. DataSource1'in Dataset özelliğini Query1 yapalım. Daha sonra Data Controls kısmından formumuza DbGrid yerleştirelim ve Object Inspector'den DataSource özelliğini DataSource1 yapalım. Daha sonra Query1'in DataBaseName özelliğini alias olarak tanımlanan önceden oluşturduğumuz liste.db'yi seçelim. Sonra Query1'in SQL özelliğine gidip çıkan pencerede aşağıdaki SQL ifadesini yazalım. SELECT * FROM liste.db Sonra Query1'in Object Inspector'den Active özelliğini True yapalım ve programımızı F9'a basarak çalıştıralım. DbGrid'de görüleceği gibi liste.db'deki bütün bilgiler listelenmiştir.

Örnek: Parametreye Bağlı Olarak Veri Sorgulaması procedure TForm1.Button1Click ( Sender : TObject ) ; // Button1 adlı butona kodumuzu yazıyoruz. begin Query1.Close ; Query1.ParamByNAme( ' Adi ' ).AsString := Edit1.Text ; Query1.Open ; end ; Örnek: Sütun Sorgulama Bunu yaparken DataSource1 'in DataSet özelliğini Query1; Query1‟in DataBaseName özelliğini veri tabanınız (bizim örnekte liste.db); DBGrid1 ' in DataSource özelliğini de DataSource1 yapınız. procedure TForm1.Button1Click ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add(' Select adi , soyadi , adresi , maas From liste ' ) ; Query1.Open ; end ; Programımızı çalıştırıp Button1'e tıkladığımız zaman DBGrid'de istediğimiz bilgilerin listelendiğini görürüz. Örnek: Ekleme Sorgusu Formumuza Button1 koyalım. Caption özelliğine Ekle yazalım. Ekle butonuna aşağıdaki kodları yazalım. (formumuza Query1, DataSource1 ve DBGrid1 yerleştirilmiş varsayıyorum.) procedure TForm1.EkleClick ( Sender : TObject ) ; begin Query1.SQL.Add ('INSERT into liste ' ); Query1.SQL.Add ( ' (ADI , SOYADI ) ' ) ; Query1.SQL.Add ( 'values (" Bahadir " , " Sahin " ) ' ) ; Query1.ExecSQL ; end; Not: Programı çalıştırıp Ekle butonuna bastığımız zaman, kodda yazmış olduğumuz Bahadir Sahin' i veri tabanına ekler. Örnek: Veri Güncellemek Tablomuzda bulunan verilerimizi güncellemek için UPDATE'i kullanacağız. Bunun için Formumuza Button1 koyalım. Caption özelliğine Güncelle yazalım. Güncelle butonuna aşağıdaki kodları yazalım. procedure TForm1.GuncelleClick ( Sender : TObject ) ; begin Query1.SQL.Clear ; Query1.SQL.Add ( ' UPDATE liste set maas = 10000 where ADI = ' Bahadir ' ) ; Query1.ExecSQL ; end ;

Örnek: ADO ile Veritabanı Bağlantısı

ADOTable1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\Belgelerim\memur.mdb;Persist Security Info=False ADOTable1.TableName = Personel ADOTable1.Active = True DataSource1.DataSet = ADOTable1 DBGrid1.DataSource = DataSource1

procedure TForm1.Button1Click(Sender: TObject); begin adotable1.Insert; end; procedure TForm1.Button2Click(Sender: TObject); begin adotable1.Post; end; procedure TForm1.Button3Click(Sender: TObject); begin adotable1.CancelUpdates; end; procedure TForm1.Button4Click(Sender: TObject); begin adotable1.Edit; end; procedure TForm1.Button5Click(Sender: TObject);

begin adotable1.Delete; end; procedure TForm1.Button6Click(Sender: TObject); begin adotable1.First; end; procedure TForm1.Button7Click(Sender: TObject); begin adotable1.Prior; end; procedure TForm1.Button8Click(Sender: TObject); begin adotable1.Next; end; procedure TForm1.Button9Click(Sender: TObject); begin adotable1.Last; end; procedure TForm1.DataSource1StateChange(Sender: TObject); var ds: string; begin case ADOTable1.State of dsInactive: ds:='Kapalı'; dsBrowse : ds:='Gezinti'; dsEdit : ds:='Düzenleme'; dsInsert : ds:='Yeni kayıt ekleme'; else ds:='Başka' end; Caption:='ADOTable1 durumu: ' + ds; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin if not adotable1.Locate('Adi',edit1.Text,[loCaseInsensitive,loPartialKey]) then showmessage('Kayıt bulunamadı!'); end; procedure TForm1.Button10Click(Sender: TObject); begin if trim(edit1.Text)<>'' then begin adotable1.Filter := 'Adi=''' + edit1.Text + ''''; showmessage('Adi=''' + edit1.Text+ ''''); adotable1.Filtered := true; end else adotable1.filtered := false; end;

Örnek: Rasgele EriĢimli Dosya Kullanımı Type Personel_Tipi=Record sno: String[6]; ad: String[15]; soyad: String[15]; gorev: String[20]; kderece: String[5]; dtarihi: TDateTime; tel: String[10]; adres: String[50]; hyili: Byte; End; Var Sayac, KayitNo, KayitSayisi: LongInt; Kayit: Personel_Tipi; Dosya: File of Personel_Tipi; procedure TForm1.KayitGoster; begin AssignFile(Dosya, 'c:\Personel.txt'); Reset(Dosya); KayitSayisi := FileSize(Dosya); StringGrid1.RowCount := KayitSayisi + 1; For Sayac := 1 To KayitSayisi do begin Seek(Dosya, Sayac-1); Read(Dosya, Kayit); With Kayit do with Stringgrid1 do begin Cells[0, Sayac] := sno; Cells[1, Sayac] := ad; Cells[2, Sayac] := soyad; Cells[3, Sayac] := gorev; Cells[4, Sayac] := kderece; Cells[5, Sayac] := datetostr(dtarihi); Cells[6, Sayac] := tel; Cells[7, Sayac] := adres; Cells[8, Sayac] := inttostr(hyili); End; end; CloseFile(dosya); end; procedure TForm1.FormCreate(Sender: TObject); begin with StringGrid1 do begin ColCount :=9; RowCount :=2; FixedCols := 0; FixedRows := 1; Cells[0,0] := 'Sicil Nosu'; Cells[1,0] := 'Adı'; Cells[2,0] := 'Soyadı';

Cells[3,0] := 'Görevi'; Cells[4,0] := 'KD'; Cells[5,0] := 'D.Tarihi'; Cells[6,0] := 'Telefon No'; Cells[7,0] := 'Adresi'; Cells[8,0] := 'H.Yili'; end; KayitGoster; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear; Edit6.Clear; Edit7.Clear; Edit8.Clear; Edit9.Clear; end; procedure TForm1.Button2Click(Sender: TObject); begin With Kayit do begin sno := Edit1.Text; ad := Edit2.Text; soyad := Edit3.Text; gorev := Edit4.Text; kderece := Edit5.Text; dtarihi := StrToDate(Edit6.Text); tel := Edit7.Text; adres := Edit8.Text; hyili := strtointdef(Edit9.Text,0); End; AssignFile(Dosya, 'c:\personel.txt'); Reset(Dosya); KayitSayisi := FileSize(Dosya); Seek(Dosya, KayitSayisi); Write(Dosya, Kayit); CloseFile(Dosya); KayitGoster; end; procedure TForm1.Button3Click(Sender: TObject); var aranan: String; cevap: Integer; begin If KayitNo = 0 Then begin aranan := InputBox('Düzeltme İşlemi','Personelin adını giriniz:',''); AssignFile(Dosya, 'c:\personel.txt'); Reset(Dosya); KayitSayisi := Filesize(Dosya); For Sayac := 1 To KayitSayisi do begin Seek(Dosya,Sayac-1); Read(Dosya, Kayit); With Kayit do If Trim(ad) = Trim(aranan) Then begin Edit1.Text := Trim(sno); Edit2.Text := Trim(ad); Edit3.Text := Trim(soyad); Edit4.Text := Trim(gorev); Edit5.Text := Trim(kderece); Edit6.Text := DateToStr(dtarihi); Edit7.Text := Trim(tel); Edit8.Text := Trim(adres); Edit9.Text := IntToStr(hyili);

cevap := MessageDlg('Düzenlenecek kayıt bu mu?', mtConfirmation, [mbYes, mbNo], 0); If cevap = mrYes Then begin Button3.Caption := 'Kaydet'; KayitNo := Sayac; CloseFile(Dosya); Exit; // Prosedürden çık End; End; end; CloseFile(Dosya); ShowMessage('Aranan kayıt bulunamadı!'); end Else begin AssignFile(Dosya, 'c:\personel.txt'); Reset(Dosya); With Kayit do begin sno := Edit1.Text; ad := Edit2.Text; soyad := Edit3.Text; gorev := Edit4.Text; kderece := Edit5.Text; dtarihi := StrToDate(Edit6.Text); tel := Edit7.Text; adres := Edit8.Text; hyili := Strtointdef(Edit9.Text,0); End; Seek(Dosya, KayitNo-1); Write(Dosya, Kayit); CloseFile(Dosya); KayitGoster; KayitNo := 0; Button3.Caption := 'Düzenle'; End; Button1Click(Form1); end; procedure TForm1.Button4Click(Sender: TObject); var aranan: String; cevap: Integer; begin aranan := InputBox('Silme İşlemi','Personelin adını giriniz:',''); AssignFile(Dosya, 'c:\personel.txt'); Reset(Dosya); KayitSayisi := Filesize(Dosya); For Sayac := 1 To KayitSayisi do begin Seek(Dosya,Sayac-1); Read(Dosya, Kayit); With Kayit do If Trim(ad) = Trim(aranan) Then begin Edit1.Text := Trim(sno); Edit2.Text := Trim(ad); Edit3.Text := Trim(soyad); Edit4.Text := Trim(gorev); Edit5.Text := Trim(kderece); Edit6.Text := Datetostr(dtarihi); Edit7.Text := Trim(tel); Edit8.Text := Trim(adres); Edit9.Text := IntToStr(hyili); cevap := MessageDlg('Silinecek kayıt bu mu?', mtConfirmation, [mbYes, mbNo], 0); If cevap = mrYes Then begin Seek(Dosya, KayitSayisi-1); Read(Dosya, Kayit); // Son kaydı oku Seek(Dosya, Sayac-1); Write(Dosya, Kayit); // Aktif yani silinecek kaydın üzerine yaz Seek(Dosya, KayitSayisi-1); Truncate(Dosya); // Son kaydı sil CloseFile(Dosya); KayitGoster;

Exit; End; End; end; CloseFile(Dosya); ShowMessage('Aranan kayıt bulunamadı!'); Button1Click(Form1); end; procedure TForm1.Button5Click(Sender: TObject); begin Close; end;

DĠNAMĠK BAĞLI KÜTÜPHANELER (DYNAMIC-LINK LIBRARIES) Bir dinamik bağlı kütüphane (DLL) uygulama programları ve diğer DLL‟ler tarafından çalıştırılabilecek yordamlar içerir. Unit‟ler gibi, DLL dosyaları da paylaşılan kaynaklar içerir. Fakat bir DLL ayrı olarak derlenir ve çalışma esnasında programa bağlanır. Object Pascal programlarının diğer dillerde yazılmış DLL‟leri çalıştırabileceği gibi diğer dillerde yazılmış Windows uygulamaları da Object Pascal ile yazılmış DLL dosyaları çalıştırabilirler.. DLL Dosya OluĢturma Bir DLL dosyanın yapısı programların yapısına benzer. Aradaki fark DLL dosyalarının program ifadesi yerine library ifadesi ile başlamalarıdır. Aşağıdaki örnek Min ve Max adlı iki paylaşılabilir fonksiyonu olan bir DLL örneğidir. library MinMax; function Min(X, Y: Integer): Integer; stdcall; begin if X < Y then Min := X else Min := Y; end; function Max(X, Y: Integer): Integer; stdcall; begin if X > Y then Max := X else Max := Y; function Max(X,Y:integer):integer;stdcall;external 'MaxMin.dll'; end; exports Min, Max; begin end. procedure TForm1.Button1Click(Sender: TObject); var s1, s2, sonuc:integer; begin s1:=strtointdef(edit1.text,0); s2:=strtointdef(edit2.text,0); sonuc:=Max(s1, s2); edit3.text:=inttostr(sonuc); end;

/********* DLL SONU **********/

Eğer DLL dosyanın diğer programlama dilleri ile yazılmış programlarda da kullanılması isteniyorsa o zaman ilgili fonksiyonların tanımında stdcall yazılmalıdır. Aksi halde diğer diller Object Pascal‟ın varsayılan register tanımını desteklemeyecektir.

Sign up to vote on this title
UsefulNot useful