You are on page 1of 16

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Ġ

.pas 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.
> 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 File-
New-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;
end; function Max(X,Y:integer):integer;stdcall;external 'MaxMin.dll';

exports procedure TForm1.Button1Click(Sender: TObject);


Min, var
Max; s1, s2, sonuc:integer;
begin
begin s1:=strtointdef(edit1.text,0);
end. s2:=strtointdef(edit2.text,0);
sonuc:=Max(s1, s2);
edit3.text:=inttostr(sonuc);
/********* DLL SONU **********/ end;
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.

You might also like