Ders Notu

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 97

MERSİN ÜNİVERSİTESİ

TEKNİK BİLİMLER MESLEK YÜKSEKOKULU

BİLGİSAYAR PROGRAMCILIĞI

NESNE TABANLI
PROGRAMLAMA I

Öğr.Gör. A.Osman YAĞLIOĞLU


BİLGİSAYAR PROGRAMCILIĞI

NESNE TABANLI
PROGRAMLAMA I

Öğr.Gör. A.Osman YAĞLIOĞLU

MERSİN
2021
Nesne Tabanlı Programlama I

ÖNSÖZ

Değerli Öğrenciler,

Teknik Bilimler Meslek Yüksekokulu Bilgisayar Programcılığı Programı öğrencileri


için hazırlanmış olan bu ders notları uzaktan eğitime de uygun olacak şekilde hazırlanmıştır.
Bu ders notunun yazımında mümkün olduğunca teorik bilgilerden uzak durularak,
uygulamaya yönelik bir şekilde yazım yapılmıştır. Bu ders notunun sizlere faydalı olabilmesi
için ders notlarını okurken aynı zamanda da örnekleri bilgisayarınızda çözerek çalışmanızı
tavsiye ederim. Böylece esas hedefimiz olan programlama mantığını öğrenmenizi sağlarken
bir taraftan da araç olarak kullandığımız delphi programlama dilinin editörü ve diğer
kısımlarına hakim olacaksınız.

Nesne tabanlı programlama dersinde, içerisinde verilerin olduğu ve bu veriler üzerinde


işlemlerin yapıldığı programlama dillerinin genel yapılar ve kullanımlarının öğrenci
tarafından anlaşılması ve kullanılması hedeflenmektedir. Bu ders iki dönemden oluşmakta
olup, ilk bölüm olan bu kısımda delphi temel nesne kullanımı ve kendi içerisindeki paradox
veri tabanının delphi ile birlikte kullanımının öğrenilmesi sağlanacaktır.

Ders notu yazılrken mümkün olduğunca teknik terim kullanılmaktan kaçınılmış ve


akıcı bir dille yazmaya çalışılmıştır. Ayrıca tüm adımlar resimlenerek herhangi bir yerde
atlama ya da anlaşılmayan kısım kalmamasına dikkat edilmeye çalışılmıştır. Üstte de
belirtildiği üzere mümkün olduğunca adım adım izlenerek ve uygulanarak ders notu takip
edildiğinde, öğrenicinin bu işi temel veri tabanı işlemlerini yapabilecek seviyede
öğrenebilmesi hedeflenmiştir.

Okuyanlara faydalı olması dileklerimle…

i
Nesne Tabanlı Programlama I

İÇİNDEKİLER
ÖNSÖZ...................................................................................................................................................i
İÇİNDEKİLER.......................................................................................................................................ii
ŞEKİLLER TABLOSU.........................................................................................................................iii
RESİMLER TABLOSU........................................................................................................................iv
BÖLÜM 1: DELPHİ PROGRAMLAMA DİLİNE GİRİŞ...................................................................................1
1.1.DELPHİ EKRANINI TANIYALIM.......................................................................................................1
1.2.Properties :...................................................................................................................................4
BÖLÜM 2: DELPHİ DE VERİ TİPLERİ.........................................................................................................7
2.1.Basit Tipler:...................................................................................................................................7
2.2.Temel Yapısal tipler :....................................................................................................................8
2.3.DEĞİŞKENLER................................................................................................................................8
2.4.TYPE TANIMLAMA:.......................................................................................................................9
2.5.DEĞİŞKEN TANIMLAMA:...............................................................................................................9
BÖLÜM 3: TEMEL PROGRAMLAMA YAPILARININ DELPHİDE KULLANIMI.........................................10
3.1.DELPHİ DE KARAR VERME DEYİMLERİ........................................................................................10
3.3.DELPHİDE DÖNGÜLER.................................................................................................................13
BÖLÜM 4: DELPHİ TEMEL NESNELERİNİ KULLANMAK..........................................................................18
BÖLÜM 5:NESNELERİN BAZI ÖZELLİKLERİNİN İŞLEVİ VE KULLANIMI:...................................................41
BOLUM 6: LISTBOX ve COMBOBOX KULLANIMI...................................................................................45
6.1.LISTBOX KULLANIMI:..................................................................................................................45
6.2.COMBOBOX KULLANIMI.............................................................................................................48
6.3.MESSAGE KULLANIMI:................................................................................................................52
6.4.SHOWMESSAGE KULLANIMI:......................................................................................................52
6.5.MESSAGEDLG KULLANIMI:.........................................................................................................52
BÖLÜM 7 : DATABASE KULLANIMI.......................................................................................................54
7.1.Adım1: Veri Tabanı Oluşturma:..................................................................................................54
7.2.Adım 2: Table Oluşturma............................................................................................................57
7.3.İşlem adımı 3:Delphide database table nesnesini düzenlemek..................................................61
7.4.İşlem adımı 4: Menü oluşturmak:...............................................................................................62
7.5.Kayıt ekleme procedure yazımı:.................................................................................................63
7.6.İşlem Adımı 6: Arama Menülerini yazalım:.................................................................................65
7.7.İşlem adımı 7: Listeleme procedure yazımı:...............................................................................73
7.7.İşlem adımı 7:Silme Procedure yazılımı:.....................................................................................78
7.8.İşlem adımı 8: Form üzerine resim ekleme:................................................................................83

ii
Nesne Tabanlı Programlama I

iii
Nesne Tabanlı Programlama I

ŞEKİLLER TABLOSU
Şekil 3 : If komutu akış diyagramı.........................................................................................................10
Şekil 4: If komutu akış şeması (If-Then-Else).........................................................................................11

iv
Nesne Tabanlı Programlama I

RESİMLER TABLOSU
Resim 1 :Delphi ekranı genel görünümü.................................................................................................1
Resim 2 : Ana menü................................................................................................................................1
Resim 3 : Component Palette.................................................................................................................2
Resim 4 : Object TreeView.....................................................................................................................2
Resim 5 :Object Inspector (Properties)...................................................................................................3
Resim 6 : Object Inspector (Events)........................................................................................................3
Resim 7 : Form ekranı.............................................................................................................................3
Resim 8 : Kod Penceresi.........................................................................................................................4
Resim 9: Form üzerine temel nesneler yerleştirme..............................................................................18
Resim 10: Edit yazısını labele aktarma..................................................................................................19
Resim 11: Program kayıt ekranı............................................................................................................19
Resim 12: İlk örnek program ekranımız................................................................................................20
Resim 13: Örnek programı çalıştırma 1................................................................................................20
Resim 14: Örnek programı çalıştırma 2................................................................................................21
Resim 15: Skorboard programı çalışma başlangıcı................................................................................22
Resim 16: Skorboard ekranı düzenlemesi.............................................................................................23
Resim 17: Program kayıt ekranı............................................................................................................28
Resim 18: Skorboard programını çalıştıralım 1.....................................................................................29
Resim 19:Skorboard programını çalıştıralım 2......................................................................................30
Resim 20: Hesap makinası programı başlangıç ekranı..........................................................................31
Resim 21: Hesap makinası ekranı düzenleme.......................................................................................32
Resim 22: Hesap makinası programı çalıştırma 1.................................................................................34
Resim 23: Tip uyuşmazlığı hata mesajı.................................................................................................34
Resim 24:Hesap makinası programı çalıştırma 2..................................................................................40
Resim 25: Password giriş görünümü.....................................................................................................41
Resim 26:Object inspectorda Listbox özellikleri...................................................................................45
Resim 27: Listboxa item ekleme...........................................................................................................46
Resim 28: List box kullanımı 1..............................................................................................................46
Resim 29: Listbox kullanımı 2...............................................................................................................47
Resim 30: Listbox kullanımı 3...............................................................................................................48
Resim 31: Form üzerine combobox yerleştirme...................................................................................49
Resim 32: Object inspector da combobox özellikleri............................................................................49
Resim 33: Comboboxa item ekleme.....................................................................................................50
Resim 34: Combobox kullanımı 1.........................................................................................................50
Resim 35: Combobox kullanımı 2.........................................................................................................51
Resim 36: Message box........................................................................................................................52
Resim 37: Case dialog kutusu...............................................................................................................53
Resim 38: Database tipini belirleme.....................................................................................................55
Resim 39. BDE Administrator ekranı.....................................................................................................55
Resim 40: Oluşturulan veri tabanını kaydetmek...................................................................................56
Resim 41: Oluşturulan veri tabanı........................................................................................................56
Resim 42: Database desktop ekranı.....................................................................................................57

v
Nesne Tabanlı Programlama I

Resim 43: Table oluşturulacak veri tabanını seçmek............................................................................57


Resim 44: Tablo tipini belirlemek.........................................................................................................58
Resim 45: Tablo alan adı vermek..........................................................................................................58
Resim 46: Tablo alan tipini belirlemek..................................................................................................59
Resim 47: Tablonun alanlarını oluşturmak...........................................................................................59
Resim 48: Tablo yapısını tamamlayarak kaydetmek.............................................................................60
Resim 49: Tabloyu grid şeklinde görmek..............................................................................................60
Resim 50: tabloya alias tariflemek........................................................................................................61
Resim 51: Tablo nesnesinin özelliklerini düzenlemek...........................................................................62
Resim 52: Main menü nesnesi eklemek...............................................................................................62
Resim 53: Main menü seçeneklerini düzenlemek................................................................................63
Resim 54: Main menünün tamamlanmış hali.......................................................................................63
Resim 55: Veri kaydetme ekranı tasarımı.............................................................................................64
Resim 56: Veri arama ekranı tasarımı...................................................................................................66
Resim 57:Dbgrid ile veri süzme ve listeleme........................................................................................74
Resim 58: Veri silme ekranı tasarımı....................................................................................................78
Resim 59: Program ana ekranı..............................................................................................................82
Resim 60: Veri kayıt ekranı...................................................................................................................82
Resim 61: Veri arama ekranı.................................................................................................................82
Resim 62: Veri listeleme ekranı............................................................................................................83
Resim 63: Veri silme ekranı..................................................................................................................83
Resim 64: resim editör.........................................................................................................................84
Resim 65: Program ana ekran görünümü.............................................................................................84

vi
Nesne Tabanlı Programlama I

BÖLÜM 1: DELPHİ PROGRAMLAMA DİLİNE GİRİŞ


Bu bölümde temel olarak delphi programı çalıştırıldığında açılan pencerelerin tanıtımı
yapılacaktır. Mümkün olduğunca ilk etapta kısa programlar yazabilmek için gerekli tanıtımlar
yapılarak öğrenicinin basit program yazabilecek hale gelmesi sağlanacaktır.

1.1.DELPHİ EKRANINI TANIYALIM


Delphi programını çalıştırdığımızda aşağıdaki pencere gelir.

Resim 1 :Delphi ekranı genel görünümü

Standart bir Windows ekranı mantığıyla hazırlanmış olan bu pencerede şu bölümler


vardır:

1-Ana menü: Ekranın üst satırında aynen ofis ve benzeri programlarda olduğu gibi ana menü
bulunur. Bu kısımda programı kaydetme ve açma ile ilgili file menüsünden başlayarak
editörle ilgili menüler ve program yazımı ve çalıştırılması ile ilgili menüler mevcuttur.

Resim 2 : Ana menü

2-Component Palette: Bu kısım çok yapraklı bir yapıya sahiptir. Burada form üzerinde
kullanacağınız nesneler mevcuttur ve konularına göre yapraklar şeklinde gruplanmışlardır.

1
Nesne Tabanlı Programlama I

Kullanılmak istenilen nesne buradan mouse ile tıklanarak alınır ve form üzerine yapıştırılarak
kullanılır.

Resim 3 : Component Palette

3- Object Tree View :Ekranın sol üst kısmında görülen bu pencerede programda kullanılan
form ve nesnelerin yapısı ve detaylarını gösterildiği bir ağaç yapısı mevcuttur. Bu yapıda
seçilmek istenen nesne tıklanarak direk olarak seçilebilir.

Resim 4 : Object TreeView

4-Object Inspector:Ekranın sol altında görülen bu pencere Properties (özellikler) ve Events


(olaylar) isimli 2 yapraktan oluşur. Properties sayfasında nesnenin özellikleri (isim, aktif pasif,
başlık ve benzeri..) ayarlanır. Nesnenin tipi değiştikçe bu yaprakta o nesneye ilişkin özellikler
görülmüş olur. Events (olaylar) yaprağında ise o nesne ile ilgili olacak olaylarda (mouse ile
tıklandığında, çift tıklandığında,…) ne yapması gerektiği ile ilgili düzenlemelerin yapılması
sağlanır.

2
Nesne Tabanlı Programlama I

Resim 5 :Object Inspector (Properties) Resim 6 : Object Inspector (Events)

5-Form ekranı: Ortada form1 adıyla gelen form yazılan program çalıştırıldığında aktif olan
form olarak ayarlanmıştır. Form üzerine istenilen nesneler üstteki component palette deki
ikonlardan alınarak yerleştirilir. Forma yerleştirilen ikonların boyutları, yerleri de yine mouse
ile tutup çekilerek ayarlanır.

Resim 7 : Form ekranı

3
Nesne Tabanlı Programlama I

6-Kod Penceresi: Ekranda açık olmasına rağmen ilk bakışta görülmeyen bu pencere ise form
penceresine bağlı gibidir. Form penceresindeki herhangi bir nesne yada formun kendisi çift
tıklandığında ilgili nesne için kod yazma kısmı ekrana getirilmiş olur.

Resim 8 : Kod Penceresi

Ayrıca kod penceresi ilk ekrana geldiği haliyle de bir delphi programının yapısı da bu
pencerede görülmektedir. Görülen yapıda uses komutu altına kullanılacak olan library’leri
görmekteyiz. Daha sonra type kısmı bulunmaktadır. Burada kullanılacak nesnelerin sınıf
şeklinde tarifleri bulunmaktadır. Form üzerinde kullandığınız tüm nesneler ile bunlara bağlı
olarak events(olaylar) için yazdığınız procedure ve functionların tarifi bu kısımda
yapılmaktadır. Buradaki tarifler kod olarak yazılabileceği gibi delphi sizin için kullandığınız her
nesnenin function ve procedure tanımlamalarını otomatik olarak yapar. Yine bu grupta
private ve public declerationlar yapılması için ayrılmış kısımlar mevcuttur. Type tarifinden
sonra global değişkenlerin tarif edildiği var kısmı gelmektedir. Implemantation kısmı ise
“end.” ile programın sonlandığı kısma kadar bizim procedure ve functionlarımızı yazmamız
için ayrılmış bir kısımdır.

1.2.Properties :
Başlangıç için çok kullanılan bazı nesnelerin çok kullanılan özelliklerinin neler
olduğunu ve ne işe yaradıklarını inceleyelim. Bölümler ilerledikçe veya bir nesne
kullanıldığında yine kullanılan nesne ile ilgili açıklamalar yapılacaktır.

4
Nesne Tabanlı Programlama I

Nesne Nesnenin işlevi


Label nesnesi: Ekran üzerinde mesaj yazmak yada sabit bir bilgiyi ekran
üzerinde göstermek için kullanılır.
Edit nesnesi: Program çalışırken ekrandan bilgi girişi için kullanılır. Girilen
bilgiler text şeklindedir.
Buton nesnesi: Program çalışırken ekran üzerine konulacak butonlarla
tıklama yapıldığında bir iş yaptırmak için kullanılır.
Bazı durumlarda bir seçeneğin seçili olması yada seçili olmamasına göre bir
iş yaptırılmak istenildiğinde kullanılır.

Özellik İşlevi
Caption Nesnenin başlığı yada bir diğer deyişle program çalışırken nesnenin
üzerinde görülen yazı
Font Nesnenin yazı özelliklerini ayarlar. Mesela yazı tipi, yazı boyutu, kalın
yada italik oluşu gibi.
Name Nesnenin adı, bu bazı nesneler için caption ile aynı işi görmektedir.
Program çalışması esnasında görünür olmayan nesnelerde ise kod
yazarken kullanılan nesne adıdır.
Visible Nesnenin görünür yada görünmez olmasını sağlar. Bu özellik true iken
nesne görünür, false iken nesne görünmez olur.
Text Edit nesnesinin içerisindeki yazıyı gösterir. Başlangıçta bir değer
atanabileceği gibi klavyeden girilerek yada program içerisindende bir
değer aktarılabilir.
Autoselect True olduğunda program çalışırken TAB tuşu ile seçilmesi sağlanır. Bu
özellik form üzerinde 3-5 nesnede varsa her TAB tuşuna basıldığında
diğer nesne seçilir. False olduğunda o nesne TAB tuşu ile seçilmez.
Cancel Bu özellik true olduğunda form çalışırken ESC tuşuna basılırsa cancel
özelliği true olan nesne tıklanmış gibi işlem yapılır.

Olay İşlevi
OnClick Nesne için program çalışırken nesnenin mouse ile tıklanması anlamını
taşır ve programın bu durumda yapacağı iş bu isimli procedure
içerisine yazılır
OnDblClick Nesne için program çalışırken nesnenin mouse ile çift tıklanması
anlamını taşır ve programın bu durumda yapacağı iş bu isimli
procedure içerisine yazılır
OnMouseUp Mouse butonunun bırakılması olayıdır ve bu durumda bir işlev
yaptırılmak isteniyorsa buradan açılan kod penceresine yazılır.

5
Nesne Tabanlı Programlama I

OnMouseDown Mouse butonuna basılması olayıdır ve bu durumda bir işlev


yaptırılmak isteniyorsa buradan açılan kod penceresine yazılır.
OnMouseMove Mouse’un bu nesne üzerinden geçecek şekilde hareket ettirilmesi
olayıdır ve bu durumda bir işlev yaptırılmak isteniyorsa buradan açılan
kod penceresine yazılır.
OnKeyUp Nesne üzerinde basılı tuşun bırakılması olayıdır ve bu durumda bir
işlev yaptırılmak isteniyorsa buradan açılan kod penceresine yazılır.
OnKeyPress Nesne üzerinde bir tuşa basılması olayıdır ve bu durumda bir işlev
yaptırılmak isteniyorsa buradan açılan kod penceresine yazılır.
OnKeyDown Nesne üzerinde bir tuşa basılma anında oluşan olayıdır ve bu durumda
bir işlev yaptırılmak isteniyorsa buradan açılan kod penceresine yazılır.
OnEnter Nesnenin program çalışırken seçilmiş olması halinde oluşan olaydır ve
bu durumda bir işlev yaptırılmak isteniyorsa buradan açılan kod
penceresine yazılır.
OnExit Nesnenin program çalışırken seçilmiş olması halinin sona ermesi
durumunda oluşan olaydır ve bu durumda bir işlev yaptırılmak
isteniyorsa buradan açılan kod penceresine yazılır.
OnChange Nesnede bir değişiklik yapılması (mesela edit nesnesinin içerisine harf
girilmesi) anında oluşan olaydır ve bu durumda bir işlev yaptırılmak
isteniyorsa buradan açılan kod penceresine yazılır.

6
Nesne Tabanlı Programlama I

BÖLÜM 2: DELPHİ DE VERİ TİPLERİ


Veri tipleri denilince, tüm dillerde kullanılan ve değişken olarak tabir edilen ifadelerin
temsil edeceği bilginin tipi ve sınırları belirlenir. Delphi temelde pascal ile aynı yapıda
değişken tiplerine sahiptir. Bunları kısaca inceleyelim:

2.1.Basit Tipler:

Tam Sayı Tipleri (integer tipler):

Tip Adı Sınırları Kapladığı Alan


Integer -2147483648 … 2147483647 4 byte
Cardinal 0 … 4294967295 4 byte
Shortint -128 … 127 1 byte
Smallint -32768 … 32767 2 byte
longint -2147483648 … 2147483647 4 byte
Int64 -2^63 … 2^63-1 8 byte
Word 0 … 65535 2 byte
LongWord 0 … 4294967295 4 byte

Gerçek Sayı Tipleri (real tipler)

Tip Adı Sınırları Kapladığı Alan


Real48 2.9x10^-39 … 1.7x10^38 6 byte
Single 1.5x10^-45 … 3.4x10^38 4 byte
double 5,0x10^-324 … 1.7x10^308 8 byte
Extended 3.4x10-^4932 … 1.1x10^4932 10 byte
comp -2^63-1 … 2^63-1 8 byte
Currency -922337203685477.5808 .. 8 byte
922337203685477.5807

String, Character ve Boolean Tipler:

Tip Adı Sınırları


String 1…255 karakter
Char 1 byte
boolean 1 byte (True/False)

7
Nesne Tabanlı Programlama I

2.2.Temel Yapısal tipler :

Dizi Tipi:
Array [1…max] of temel_tip;
Tanımda geçen tipten array parantezinde verilen maximum adet sayısı kadar alan
ayırır.
Örnek:
Array[1..4] of char … gibi

Kayıt (Record) Tipi:


tip_adı=record
alan1:string[10];
alan2:string[20];
alan3:string[15];
end;

Bu şekilde tanımlanan yapı yeni bir tip olarak kabul edilir ve değişken kısmında değişken
tanımlanırken:
Var
kayıt:tip_adı;
Şeklinde kullanılır.

Delphide pointer tipi, function ve procedure tipi, set tipi, variant tipi şeklinde diğer tiplerde
mevcuttur. Ancak başlangıç aşamasında bu kadar bilgi ile yetineceğiz.

2.3.DEĞİŞKENLER
Bilgisayarlarda rakam, harf ve yazı gibi değeri değişen giriş, çıkış veya hesaplama verileri
çeşitli değişkenlerle ifade edilir. Yani işleme giren yada işlemden çıkan yazı ya da rakamlar
çeşitli sembollerle ifade edilirler. Bu semboller değişkenin rakam, yazı, tamsayı veya ondalıklı
sayı olduğunu gösterir.

Değişkenler çeşitli programlama dillerine göre değişmekle beraber; dos altında çalışan
diller için genelde 8 harfi geçmeyen anlamlı veya anlamsız kelime, harf, veya bunların
karışımlarından oluşan simgelerdir. Delphi de de bu isimler daha uzun olabilir. Ancak
bunların 63 karakteri dikkate alınır. Ancak program yazarken o kadar uzun isim kullanmak
pek pratik değildir. Mümkün olduğunca kısa ve anlamlı isim kullanmak uygun olmaktadır.

Burada dikkat edilmesi gereken bir konu değişken isimlerinin içerisinde kullanılacak
olan programlama dilinin terimleri yada reserwed Word denilen kelimelerin geçmemesidir.
Ayrıca değişken isimleri içerisinde Türkçe karakter, boşluk ve noktalama işaretleri

8
Nesne Tabanlı Programlama I

olmamalıdır. Bir diğer genel durum ise değişken adı içerisinde rakam kullanılmalı ama ilk
karakter rakam olmamalıdır.
Değişkenler tarif edilirken birde global ve local değişken tiplerinden bahsetmek
gerekir. Programınızın başlangıç kısmındaki var bölümünde tarif ettiğiniz değişkenler global
değişkenler olup tüm procedureler ve functionlar içerisinde geçerlidir. Ancak bazen sadece
bir procedure yada function içerisinde geçerli bir değişken kullanmak isteyebiliriz. Bu iş için
de procedure yada function’un ana gövdesinin başladığı begin satırından önce bir var alanı
açılarak değişken tarifi yapılır. Bu durumda tarif edilen değişkenler sadece tanımlandığı
function yada procedure içerisinde geçerli olur.

2.4.TYPE TANIMLAMA:
Delphi genel program yapısı içerisinde program, procedure yada function yapısı içerisinde
var ile değişken tanımından daha öncesinde type alanı içerisinde aşağıdaki örnekte
görüldüğü şekilde tanımlamalar yapılır.

Type

TKayit =record

Ad:string[30];

Adres:string[50];

Telefon:string[11];

End;

2.5.DEĞİŞKEN TANIMLAMA:
Delphi genel program yapısı içerisinde program, procedure yada function yapısı ana gövdesi
başlamadan hemen önce var alanı içerisinde aşağıdaki örnekte görüldüğü şekilde
tanımlamalar yapılır.

Var

ad,soyad : string[15];

yas:integer;

dogru:boolean;

isimler : array [0 .. 50] of string[15];

cevap:byte;

kayit:tkayit;

9
Nesne Tabanlı Programlama I

BÖLÜM 3: TEMEL PROGRAMLAMA YAPILARININ DELPHİDE KULLANIMI


Bu bölümdeki temel amaç öğrenicinin diğer dillerde de var olan temel yapıları
delphide nasıl kullanacağının görülmesidir. Bu temel yapılar; değişken tanımlaması, değişken
kullanımı, karar verme işlemleri (if-Then), döngü işlemleri (while, repeat..), blok işlemler gibi
temel programlama konularının öğrenilmesidir.

Delphi yazılımı pascal temelli olması sebebiyle bu bölüm pascal anlatımı şeklinde
olacaktır. Sadece fark olarak örnekler nesnelerle ilişkilendirilerek kullanım örneklerinin delphi
ile verilmesi olacaktır.

3.1.DELPHİ DE KARAR VERME DEYİMLERİ


IF - THEN - ELSE:

Karar verme denildiğinde genel olarak akla gelen if deyimidir. If deyiminin delphide
kullanılış Formu:

IF <Mantıksal ifade> THEN <komut yada komutlar>[ELSE <komut yada komutlar>];

Açıklama:Komut değilde komutlar kullanılacaksa begin-end grubu içerisine alınması


gerekmektedir.

Kelime anlamı olarak yaptığı işi şöyle açıklamak mümkündür:

EĞER <..> ifadesi doğru ise O ZAMAN <..> işlemini yap [DEĞİLSE <..> işlemini yap.]

Şekil 1 : If komutu akış diyagramı

10
Nesne Tabanlı Programlama I

Yaptığı işlemi tam anlayabilmek için öncelikle IF-THEN kısmını inceleyelim. Bu deyim
bilgisayarın zekasını yani karşılaştırma yeteneğini sağlar. IF deyiminin ardından gelen deyim;
değişkenleri, yazısal dizileri, sayıları ve mantıksal operatörleri içerebilir. Eğer burada verilen
ifade doğru ise THEN deyiminden sonra gelen ifade yerine getirilir.
Eğer IF deyiminden sonra gelen ifade doğru değilse ve ELSE terimi kullanılmamışsa bu
yönergenin olduğu komut grubu işleme girmeden atlanır ve bir sonraki komut icra edilir.
THEN deyiminin ardından herhangi komut yada komut grubu gelebilir. Eğer THEN
deyiminden sonra birkaç tane işlem yapılacaksa komutlar THEN deyiminin ardından begin-
end bloğu içerisine yazılmalıdır.

Şekil 2: If komutu akış şeması (If-Then-Else)

Bu deyimlerden sadece IF-THEN kısmı kullanılabileceği gibi bunların ardından ELSE


kısmı da eklenebilir. ELSE ifadesini, yine THEN ifadesinde olduğu gibi bir komut yada komut
grubu takip edebilir. Hepsi beraber kullanıldığında ise bilgisayara verdikleri emir
şu şekilde olacaktır: Eğer IF deyiminden sonra gelen ifade doğru ise THEN deyiminden sonra
gelen ifadeyi, yada emri yerine getir; eğer IF deyiminden sonra gelen ifade doğru değil ise
ELSE deyiminden sonra gelen ifadeyi yerine getir.

ÖRNEK:

IF a=5 THEN
Showmessage (‘doğru’)
ELSE
showmessage (‘yanlıs’);

11
Nesne Tabanlı Programlama I

Bu örneğin anlamı Eğer a=5 ise mesaj ekranına doğru yaz, eğer a=5 değilse o zaman mesaj
ekranına yanlış yaz.

ÖRNEK:
IF F>50 THEN
Begin
A:=(B+C9)*40/100
B:=F*60/100
C:=A+B
End;

Bu örnekte de F sayısı 50 den büyük ise A, B, C hesaplamaları yapılır ve işlem END deyiminin
ardından devam eder. Eğer F sayısı 50 den büyük değil ise A, B, C hesaplamaları yapılmadan
işlem END deyiminin ardından devam eder.

CASE DEYİMİ:

Kullanılış formu:

CASE <değişken> of

Değer1: [begin] <değişkenin değeri değer 1’ e eşit ise yapılacak iş yada işler > [end];

Değer2: [begin] <değişkenin değeri değer 2’ye eşit ise yapılacak iş yada işler > [end];

Değern: [begin] <değişkenin değeri değer n’e eşit ise yapılacak iş yada işler > [end];

Else[begin] <değişkenin değeri üsttekilere uymuyor ise yapılacak iş yada işler > [end];

Case deyimi bir değişkenin değerinin çok farklı değer aldığı durumlarda yapılacak
karşılaştırmalarda kullanılan bir karşılaştırma çeşididir. Bir öğrenci notunun edit1 kutusunun
text alanına girildiğinde edit2 metin kutusunun text bölümünde mesaj yayınlamak için şu
şekilde case komutunu kullanabiliriz.

case strtoint(edit1.Text) of

0..49:

12
Nesne Tabanlı Programlama I

edit2.Text:='BAŞARISIZ';

50..59:

edit2.Text:='ŞARTLI';

60..100:

edit2.Text:='BAŞARILI';

ELSE

edit2.Text:='HATALI NOT';

end;

Örnekte görüldüğü gibi eğer edit1.text kısmına girilen öğrenci notu 0 ile 49 arasında ise
‘BAŞARISIZ’ yazılmakta, öğrenci notu 50 ile 59 arasında ise ‘ŞARTLIZ’ yazılmakta, öğrenci notu
60 ile 100 arasında ise ‘BAŞARILI’ yazılmakta, veeğer 0 ile 100 arasında olmayan bir rakam
girilmişse mesaj olarak ‘HATALI NOT’ yazılmaktadır.

3.3.DELPHİDE DÖNGÜLER

FOR - DO DÖNGÜSÜ:

Kullanılış Formu:
FOR<değişken>:=<başlangıç> TO/DOWNTO <bitiş> DO

Bu yönerge değişkenleri sayaç olarak kullanmamızı sağlayan bir pascal yönergesidir. Bu


yönerge değişken değerini verilen başlangıç değerinden bitiş değerine kadar 1’er aralıklarla
sayar. DO ifadesi değişken değerini artırarak sayar, DOWNTO ifadesi değişkenin değerini
eksilterek sayar. Sayma işleminde sınır değer işleme dahildir. Döngü içerisinde tekrarlanacak
işlem adedi 1’den fazla ise komut grubu begin-end bloğu içerisinde yer alır.

Bu ifadeyi kullanırken bazı hususlara dikkat etmek gerekir. Bunlardan birincisi eğer
başlangıç değeri bitiş değerinden küçük ise artma sayısı pozitif olması gerektiğinden DO ile,
bunun tersi durumda ise artma sayısı negatif olduğundan DOWNTO ile kullanılmalıdır. Aksi
takdirde sonsuz döngü oluşacaktır.

Bir diğer konu; eğer iç içe birden fazla döngü açıldı ise bunların birbirini kesmeyecek
şekilde oluşturulması gerekmektedir. Aksi takdirde yine sonsuz döngü oluşur.

13
Nesne Tabanlı Programlama I

Bir diğer husus döngünün başlangıç ve bitiş sayıları aynı olsa bile her döngü en az bir defa
işleme girer. Yani FOR i:=1 TO 1 DO döngüsü 1 kez işleme girecektir.

ÖRNEK:
Buton2 butonuna basıldığında 1'den 100'e kadar olan sayıların toplamını bulan ve label1
isimli label üzerine yazan programı FOR-DO döngüsü ile yapalım:

procedure TForm1.Button2Click(Sender:TObject);
var
t,x:integer;
begin
x:=0;
for t:=1 to 100 do
x:=x+t;
label1.caption:=inttostr(x);
end;

Aynı işlemi 100 den başlayarak 1’e kadar sayıp toplattırmak istersek aynı procedure şu
şekilde yazılabilir:

procedure TForm1.Button2Click(Sender:TObject);
var
t,x:integer;
begin
x:=0;
for t:=100 downto 1 do
x:=x+t;
label1.caption:=inttostr(x);
end;

REPEAT-UNTIL DÖNGÜSÜ:

Kullanılış Formu:
REPEAT

UNTIL <Karşılaştırma ifadesi>

14
Nesne Tabanlı Programlama I

Bu yönerge istenilen bir sonuç ya da durum elde edilene kadar işlemleri tekrarlamamızı
sağlayan bir delphi yönergesidir. Bu yönerge ile for döngüsünde olduğu gibi bir değişken
değerini verilen başlangıç değerinden bitiş değerine kadar istenilen aralıklarla
saydırabileceğimiz gibi bir değişken ifadesinin istenilen değere ulaşmasını ya da belli bir
olayın olup olmadığını kontrol etmek mümkün olabilmektedir.

Bu ifadeyi kullanırken bazı hususlara dikkat etmek gerekir. Eğer sınır şartı hiçbir zaman
sağlanmıyorsa sonsuz döngü oluşur. Yine for döngüsünde olduğu gibi eğer iç içe birden fazla
döngü açıldı ise bunların birbirini kesmeyecek şekilde oluşturulması gerekmektedir. Aksi
taktirde yine sonsuz döngü oluşur.

Bir diğer husus repeat-until döngüsünde karşılaştırma ifadesinin kontrolü sonda


olduğundan döngü en az 1 kez mutlaka işleme girecektir.

ÖRNEK:
0'dan 1000'e kadar olan çift sayıların toplamını bulan bir program yazınız?

Buton2 butonuna basıldığında 0'dan 100'e kadar olan çift sayıların toplamını bulan ve
label1 isimli label üzerine yazan programı REPEAT-UNTIL döngüsü ile yapalım:

procedure TForm1.Button2Click(Sender:TObject);
var
t,x:integer;
begin
x:=0;
t:=0;
repeat
t:=t+2;
x:=x+t;
until t=100;

label1.caption:=inttostr(x);
end;

15
Nesne Tabanlı Programlama I

WHILE-DO DÖNGÜSÜ:

Kullanılış Formu:
WHILE <Karşılaştırma ifadesi> DO

Bu yönerge istenilen bir sonuç ya da durum ile ilgili şart başlangıçtan yazılarak istenilen
sonuç elde edilene kadar işlemleri tekrarlamamızı sağlayan bir pascal yönergesidir. Bu
yönerge ile aynen repeat-until döngüsünde ve for döngüsünde olduğu gibi bir değişken
değerini verilen başlangıç değerinden bitiş değerine kadar istenilen aralıklarla
saydırabileceğimiz gibi bir değişken ifadesinin istenilen değere ulaşmasını yada belli bir olayın
olup olmadığını kontrol etmek mümkün olabilmektedir. Buradaki fark şart kontrolünün
baştan yapılmasıdır. Döngü içerisinde yapılacak işlem sayısı 1’den fazla ise begin-end bloğu
içerisinde yazılır.

Bu ifadeyi kullanırken bazı hususlara dikkat etmek gerekir. Eğer sınır şartı hiçbir zaman
sağlanmıyorsa sonsuz döngü oluşur. Yine diğer döngü yapılarında olduğu gibi eğer iç içe
birden fazla döngü açıldı ise bunların birbirini kesmeyecek şekilde oluşturulması
gerekmektedir. Aksi taktirde yine sonsuz döngü oluşur.

Bir diğer husus while-do döngüsünde döngü şartı başlangıçtan kontrol edildiği için eğer
şart sağlanmadı ise while-do döngüsü hiç işleme girmeden atlanarak sonraki komuta geçilmiş
olur.

Örnek: Bir form üzerinde bulunan edit1 ve edit2 isimli edit kutularına girilecek olan 2 sayı
arasındaki çift sayıların toplamını,hesapla isimli bir buton tıklandığında bulması ve label1
isimli etiketin caption özelliğinde yazan bir örneği while-do döngüsü ile çözelim:

procedure TForm1.hesaplaClick(Sender: TObject);

var
altsn,ustsn,sayac,tplam :integer;
begin

if (strtoint(edit2.Text)> strtoint(edit1.Text)) then begin


altsn:= strtoint(edit1.Text);
ustsn:= strtoint(edit2.Text);
end else begin
altsn:= strtoint(edit2.Text);
ustsn:= strtoint(edit1.Text);
end;
sayac:=altsn;

16
Nesne Tabanlı Programlama I

if int(sayac/2)<>(sayac/2) then sayac:=sayac+1;

while sayac<=ustsn do begin


tplam:=tplam+sayac;
sayac:=sayac+2;
end;

label1.Caption:=(inttostr(altsn)+' dan'+inttostr(ustsn)+
'a kadar cift sayıların toplamı :'+
inttostr(tplam));

end;

CONTINUE KOMUTU:
Döngü içerisinde bazı işlemleri yapmadan döngü sonuna atlamak gerektiğinde
continue komutu kullanılır. Böylece döngü işlemi devam ederken bazı durumlarda işleme
girmemesi gereken kısımların işleme girmemesi sağlanmış olur. Continue komutu döngüyü
sonlandırmaz, sadece akışı döngünün kontrol satırına atlatır. Döngüyü tamamen
sonlandırmak istenirse break komutu kullanılmalıdır.

BREAK KOMUTU:

Döngünün sınır şartına bakılmaksızın sonlandırılması gerekirse break komutu


kullanılır. Program çalışması esnasında akış sırası bu komuta gelirse işlem sırası döngünün
bitişinden sonraki ilk komuta atlamış olur.

17
Nesne Tabanlı Programlama I

BÖLÜM 4: DELPHİ TEMEL NESNELERİNİ KULLANMAK


Bu bölümde temel nesneleri kullanarak delphide giriş-çıkış işlemlerinin nasıl
yapılabileceğini anlamaya çalışacağız. Burada komutlarla anlatım yerine mümkün olduğunca
öğrenicinin nesnelerin özelliklerini nasıl kullanabileceğini görmesini sağlamaya çalışacağız.
Burada asıl hedef nesne kullanımının öğrenilmesi olacaktır. Ayrıca öğrenicinin kodlara aşina
olmasının sağlanması amacıyla da, kullanılan nesnelerle ilgili kodlar da anlatılacaktır.

Konunun örneklerle işlenerek daha iyi anlaşılması amacıyla bu bölümde bazı örnekler
çözelim:

Örnek 1: Bir edit kutusuna isminizi girerek bir buton tıklaması ile isminizi label üzerine
yazdırınız.

Çözüm:

Adım 1: Delphi programını çalıştırınız.

Adım 2: Form üzerine 1 edit kutusu, 1buton ve 1 label nesnesini istediğiniz şekilde
yerleştiriniz.

Resim 9: Form üzerine temel nesneler yerleştirme

Adım 3: Butonu çift tıklayarak gelen ekrana :

label1.Caption:=edit1.Text;

satırını yazınız. Altta görülen şekilde bir ekran oluşmuştur.

18
Nesne Tabanlı Programlama I

Resim 10: Edit yazısını labele aktarma

Buradan görüleceği gibi forma yerleştirdiğiniz butonun adı Button1 olarak verilmiştir ve
Button1Click procedure’sinin anlamı, buton tıklandığında çalışacak procedure olup yapacağı
iş ise label1 nesnesinin caption özelliğini (etiketin başlığını) edit1 nesnesinin içerisinde yazılı
olan text ifadesi ile değiştirmek olacaktır.

Adım 4:Projenizi kaydediniz. Bunun için file/save seçeneğini seçiniz ve çalışma yapacağınız
klasörü seçerek dosyanıza istediğiniz ismi vererek kayıt işlemini tamamlayınız.

Resim 11: Program kayıt ekranı

19
Nesne Tabanlı Programlama I

Adım 5: Programınızı çalıştırarak deneyiniz.

Program çalıştığında aşağıdaki ekran gelecektir.

Resim 12: İlk örnek program ekranımız

Edit1 kutusuna adınızı girdiğinizde aşağıdaki görüntü oluşacaktır.

Resim 13: Örnek programı çalıştırma 1

20
Nesne Tabanlı Programlama I

Butonu tıkladığınızda ise aşağıda görüleceği gibi edit kutusuna yazdığınız bilgi label
nesnesinde görüntülenecektir.

Resim 14: Örnek programı çalıştırma 2

Adım 6: Denemelerinizi tamamladıktan sonra formun sol üst köşesindeki kapat kutucuğunu
tıklayarak programı sonlandırınız.

Bu örnekte gördüğümüz gibi delphinin yazım kuralları pascal programlama dili


ile aynıdır. Buradaki fark işlemlerin nesneler üzerinden yaptırılmasıdır. Programlama
temellerini bilen ve delphi öğrenmek isteyen kişiler için tek farklılık nesne yapısı, nesne
özellikleri ve olayların öğrenilmesidir. Bunun da yöntemi bol örnek çözerek değişik özellikleri
örneklerde kullanmak olacaktır. Bunun için konumuzu örneklerle sürdürelim.

Örnek 2: Bir ekran üzerinde basketbol için bir skorbord oluşturmaya çalışalım.

Çözüm:

Çözüm adımı 1:Bu iş için neler lazımdır. Öncelikle onu tasarlayalım:

1-Skorları göstermek için 2 adet label

2-Her tıklandığında ileri saymayı sağlayacak şekilde 1, 2 ve 3 sayılık sayıcı butonları, her 2
takım için ayrı ayrı olacağıdan 6 buton olacaktır.

21
Nesne Tabanlı Programlama I

3- Yanlış sayma durumu için geri sayıcı butonlar (Her iki takım için 1 adet)

4-Maç başında skorları sıfırlamak için tek bir buton

Çözüm adımı 2: Şimdi çözümümüze geçelim. File/New /Application ile yeni bir form açalım
ve ekranımızın görünümünü tasarlayalım.

Resim 15: Skorboard programı çalışma başlangıcı

Çözüm adımı 3:Nesnelerin caption ve text özelliklerini ayarlayarak ekranda hangi nesnenin
hangi işi yapacağını anlaşılır hale getirelim.

-Label3.caption özelliğini EVSAHİBİ, label4.caption özelliğini MİSAFİR olarak değiştirelim.


Sonrada bu iki nesnenin font özelliklerinden height (yüksekliğini) 20 yapalım. Style den fsbold
özelliklerini true yapalım. Böylece yazı boyları büyümüş ve koyu yazılmış olacaklar. Yine font
özelliklerinden color özelliği ile de yazıların renklerini istediğimiz şekilde seçelim.

-Label4 ve Label5 nesnelerinin captionlarını 000 yazalım ve color özelliklerinden açık fon renk
seçelim. Boyutun kendiliğinden değişmemesi için autosize özelliğini false olarak değiştirelim.
Sonrada bu iki nesnenin font özelliklerinden height (yüksekliğini) 60 yapalım. Style den fsbold
özelliklerini true yapalım.

22
Nesne Tabanlı Programlama I

-Butonların caption ve name özelliklerini altta resimde görüldüğü şekilde düzenleyin. Ayrıca
fontlarını height 20 ve fsbold true olarak ayarlayın. İşlemlerinizi tamamladıktan sonra buton
ve diğer nesnelerin görünümlerini ve yerlerini istediğiniz şekilde ayarlayın. Burada captionlar
değiştiğinde ekranda görünen ifadesini istediğimiz şekilde ayarlamış olduk. Adını
değiştirerekte yazacağımız fonksiyonların isimlerini anlaşılır hale getirmiş olduk.

Buton (Caption) Buton Buton


(Değişimden (Caption) (Name)
önceki hali) (Değişimden (Değişimden
sonraki hali) sonraki hali)
Button1 say 1 (E) Say1e
Button2 say 2 (E) Say2e
Button3 say 3 (E) Say3e
Button4 say -1 (E) Say_1e
Button5 say 1 (D) Say1d
Button6 say 2 (D) Say2d
Button7 say 3 (D) Say3d
Button8 say -1 (D) Say_1d
Button9 Maç0-0 Mac00
Ekranımızın yeni hali aşağıdaki gibi oldu.

Resim 16: Skorboard ekranı düzenlemesi

23
Nesne Tabanlı Programlama I

Çözüm adımı 4: Global değişken lazımsa tanımlayalım. Bunun içinFormun üzerini çift
tıklayınız ve kod penceresine geçiniz. Gelen ekranda var satırının altında şu anda sadece
form1 tanımlıdır. Şimdi bu satırın altına:

skor1,skor2:integer;

ifadesini yazarak takımların skorlarını saymak için global 2 tane integer (sayı) değişkeni
tasarlayalım. Burada skor1 evsahibi takımın sayısını, skor2 deplasman takımının skorlarını
temsil etsin.

Çözüm adımı 5: Butonların işlevlerinin ne olacağını açık hale getirelim. Buna göre butonların
işlevleri:

Buton Buton İşlevi


(Caption) (Name)
say 1 (E) Say1e Skor1 değişkeninin değerini 1 artıracak ve Label1 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say 2 (E) Say2e Skor1 değişkeninin değerini 2 artıracak ve Label1 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say 3 (E) Say3e Skor1 değişkeninin değerini 3 artıracak ve Label1 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say -1 (E) Say_1e Skor1 değişkeninin değerini 1 azaltacak ve Label1 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say 1 (D) Say1d Skor2 değişkeninin değerini 1 artıracak ve Label2 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say 2 (D) Say2d Skor2 değişkeninin değerini 2 artıracak ve Label2 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say 3 (D) Say3d Skor2 değişkeninin değerini 3 artıracak ve Label2 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
say -1 (D) Say_1d Skor2 değişkeninin değerini 1 azaltacak ve Label2 etiketinin
caption özelliğine aktararak ekranda görülmesini sağlayacak.
Maç0-0 Mac00 Skor1 ve skor2 değişkenlerinin değerini 0 yaparak label1 ve label2
etiketlerinin caption özelliği olarak ekranda gösterecek.

Bu özellikler için kodları yazacağız ancak öncelikle ek bir bilgiye ihtiyacımız olacak. Skor1 ve
skor2 değişkenleri sayısal ifadelerdir, label nesnelerinin caption özelliği ise string nesnesidir.
Buna göre skorlar ekrana aktarılmadan önce stringe dönüştürülmesi gerekmektedir. Bu işle
ilgili function’ları hatırlayalım:

24
Nesne Tabanlı Programlama I

inttostr():integer sayı formatındaki sayıyı string formatına çevirir.

floattostr():real sayı formatındaki sayıyı string formatına çevirir.

strtoint():string formattaki sayıyı integer formatına çevirir.

strtofloat():string formattaki sayıyı real sayı formatına çevirir.

Bu örnekte de sayılar integer formatında tutulacak ancak ekrana yazılırken


string formatında yazılmış olacaktır.

Çözüm adımı 6: Şimdi sırasıyla buton procedurelerinin kodlarını açıklamalarıyla yazalım. Bu


işi yaparken hangi butonun procedure kodları yazılacaksa form üzerindeki o butonu çift
tıklıyoruz. Ekrana zaten procedure başlığı ile begin ve end; komutları yazılı olarak gelecektir.
Biz kendi kodlarımızı bu begin ve end’in arasına yazıyoruz. Açıklamalar{ } içerisine yazılır.
Tabii bu açıklamaların program açısından bir önemi yoktur. Sadece kendimiz için nerede ne
yaptığımızı göstermek amacıyla yazılmıştır. Deneme yaparken istenmiyorsa yazılmayabilir.

procedure TForm1.say1eClick(Sender: TObject);

begin

{skor1 değişkeninin değerini 1 artır}

skor1:=skor1+1;

{skor1 değişkeninin değerini stringe dönüştürerek ekranda göster}

label1.caption:=inttostr(skor1);

end;

procedure TForm1.say2eClick(Sender: TObject);

begin

{skor1 değişkeninin değerini 2 artır}

skor1:=skor1+2;

{skor1 değişkeninin değerini stringe dönüştürerek ekranda göster}

label1.caption:=inttostr(skor1);

end;

25
Nesne Tabanlı Programlama I

procedure TForm1.say3eClick(Sender: TObject);

begin

{skor1 değişkeninin değerini 3 artır}

skor1:=skor1+3;

{skor1 değişkeninin değerini stringe dönüştürerek ekranda göster}

label1.caption:=inttostr(skor1);

end;

procedure TForm1.say_1eClick(Sender: TObject);

begin

{skor1 değişkeninin değerini 1 azalt -eğer zaten 0 ize azaltmamalı-}

if skor1>0 then skor1:=skor1-1;

{skor1 değişkeninin değerini stringe dönüştürerek ekranda göster}

label1.caption:=inttostr(skor1);

end;

procedure TForm1.say1dClick(Sender: TObject);

begin

{skor2 değişkeninin değerini 1 artır}

skor2:=skor2+1;

{skor2 değişkeninin değerini stringe dönüştürerek ekranda göster}

label2.caption:=inttostr(skor2);

end;

26
Nesne Tabanlı Programlama I

procedure TForm1.say2dClick(Sender: TObject);

begin

{skor2 değişkeninin değerini 2 artır}

skor2:=skor2+2;

{skor2 değişkeninin değerini stringe dönüştürerek ekranda göster}

label2.caption:=inttostr(skor2);

end;

procedure TForm1.say3dClick(Sender: TObject);

begin

{skor2 değişkeninin değerini 3 artır}

skor2:=skor2+3;

{skor2 değişkeninin değerini stringe dönüştürerek ekranda göster}

label2.caption:=inttostr(skor2);

end;

procedure TForm1.say_1dClick(Sender: TObject);

begin

{eğer skor2 değeri 0 değilse, skor2 değişkeninin değerini 1 azalt}

if skor2>0 then skor2:=skor2-1;

{skor2 değişkeninin değerini stringe dönüştürerek ekranda göster}

label2.caption:=inttostr(skor2);

end;

27
Nesne Tabanlı Programlama I

procedure TForm1.mac00Click(Sender: TObject);

begin

{skor1 değişkeninin değerini 0 yap}

skor1:=0;

{skor2 değişkeninin değerini 0 yap}

skor2:=0;

{skor1 değişkeninin değerini stringe dönüştürerek ekranda göster}

label1.caption:=inttostr(skor1);

{skor2 değişkeninin değerini stringe dönüştürerek ekranda göster}

label2.caption:=inttostr(skor2);

end;

Çözüm adımı 7: Projemizi istenilen klasöre kaydedelim ve çalıştıralım. Bu iş için file/save


project seçerek gelen ekrandan klasörümüzü seçip proje adı vererek kaydımızı
tamamlayalım.

Resim 17: Program kayıt ekranı

28
Nesne Tabanlı Programlama I

Play butonunu tıklayarak projemizi çalıştıralım.

Resim 18: Skorboard programını çalıştıralım 1

Çözüm adımı 7: Son adım olarak projemizde çalışması esnasında gördüğümüz aksaklık varsa
düzeltiyoruz. Bu anlamda projemizi çalıştırdığımızda sayıların sağa yanaşık yazıldığını
görmekteyiz. Alışkanlık olduğu üzere sola dayalı yazılması daha uygun olacağından label1 ve
label2 nesnesinin taLeftJustify olan Alignment özelliğini taRightJustify olarak değiştiriyoruz.
Böylece skorlar sola dayalı yerine sağa dayalı olarak yazılacaktır. Birde formun caption
özelliğini SKORBOARD olarak değiştirelim. Çalıştırdığınız projenin exe uzantılı uygulaması da
aynı klasörde oluşmuştur. Artık programınız çalışır durumdadır ve delphiden çıktıktan sonra
da projenizle aynı isimli olan uygulamayı çalıştırarak programınızı kullanabilirsiniz.

29
Nesne Tabanlı Programlama I

Resim 19:Skorboard programını çalıştıralım 2

Örnek: 4 işlem yapan basit bir hesap makinası tasarlayınız.

Çözüm Adımı 1: Delphiyi çalıştırınız ve form üzerine gerekli nesneleri yerleştiriniz.

Bu iş için 2 3 adet edit kutusu yerleştiriyoruz. Kutulardan 2 tanesine işleme girecek sayılar
klavyeden girilecek, 3. kutuya ise işlem sonucu yazılacaktır. Sonuç bir label üzerine de
yazılabilir ancak örnek olması açısından edit kutusuna yazdıracağız. Form üzerine 5 adet te
buton yerleştiriyoruz, 4 tanesi işlem için 1 tanesi ise silme için kullanılacaktır.

30
Nesne Tabanlı Programlama I

Resim 20: Hesap makinası programı başlangıç ekranı

Çözüm Adımı 2: Şimdi nesnelerin özelliklerini düzenleyelim. Bu düzenleme için edit1 ve edit2
nesnelerinin içerisini boşaltıp sayı giriniz ifadesinin görünmesini sağlayalım.(text özelliğine
yazalım) Edit3 nesnesinin text özelliğini düzenleyerek sonuç ifadesini yazalım. Yazı boylarını
(özelliklerden font/size özelliğini 20 yapalım)büyütelim. Edit kutularının name (isim)
özelliğinide s1,s2 ve s3 olarak değiştirelim.

Butonlara ise sırasıyla captionlarını aritmetik işaretle değiştirelim ve isimlerini (name) topla,
çıkart, çarp ve böl olarak düzenleyelim. Button5 butonunun ise caption ve name özelliklerini
sil olarak değiştirelim. Yazı boylarını (özelliklerden font/size özelliğini 20 yapalım)büyütelim.
Formumuzun ekran görünümü şu şekilde olacaktır.

31
Nesne Tabanlı Programlama I

Resim 21: Hesap makinası ekranı düzenleme

Çözüm adımı 3: Butonların yapacakları işlem belli olduğundan buton procedurelerini


aşağıdaki şekilde yazalım. Burada önemli ayrıntı edit nesnelerinin içerisindeki sayılar metin
formatında olduğundan, aritmetik işleme girmeden önce sayı formatına (şimdilik integer
olarak tasarlayalım) dönüştürülmeli ve işlemin sonucuda edit kutusunda yazılabilmesi için
tekrar stringe döndürülmelidir. Silme butonu ise ekranı başlangıç şekline döndürmelidir.
Buna göre procedureler aşağıdaki gibi olacaktır.

procedure TForm1.toplaClick(Sender: TObject);

begin

s3.Text:=inttostr(strtoint(s1.Text)+strtoint(s2.Text));

end;

32
Nesne Tabanlı Programlama I

procedure TForm1.cikartClick(Sender: TObject);

begin

s3.Text:=inttostr(strtoint(s1.Text)-strtoint(s2.Text));

end;

procedure TForm1.carpClick(Sender: TObject);

begin

s3.Text:=inttostr(strtoint(s1.Text)*strtoint(s2.Text));

end;

procedure TForm1.bolClick(Sender: TObject);

begin

s3.Text:=inttostr(trunc((strtoint(s1.Text)/strtoint(s2.Text))));

end;

procedure TForm1.silClick(Sender: TObject);

begin

s1.Text:='Sayı Giriniz';

s2.Text:='Sayı Giriniz';

s3.Text:='Sonuc';

end;

Burada real string dönüşümü için henüz erken olduğundan işlemi tamsayılarla tasarladık.
Ancak tamsayılarla da yapılsa diğer birçok dilde olduğu gibi bölme işleminin sonucu ondalıklı
(reel sayı) çıkacağından bu sonuç hata sebebi olacaktır ve programınız bunu derlerken
sorunu gösterecektir. Bunun için bölme sonucunu trunc fonksiyonu ile tam kısmını alıp
integer bir sayı elde ediyoruz ve bu sayıyıda inttostr fonksiyonu yardımıyla string tipine
dönüştürüyoruz.

33
Nesne Tabanlı Programlama I

Çözüm adımı 3: Bu şekliyle programı çalıştırıp denediğimizde bazı sıkıntılarını göreceğiz.


Bunlar:

Edit kutusuna yazmak istediğiniz zaman var olan mesajın kendiliğinden silinmemesi,
Sonucun gösterildiği edit kutusunun da yazmaya izin veriyor olması
Dahada önemlisi edit kutularına sadece rakam girilmesi gerektiği halde yazı girilebiliyor
olması
Edit kutularına yazı girildiğinde ya da yazı zaten varken işlem butonlarından birine
tıklandığında programın hata mesajıyla kesiliyor olması.
Bu durumları aşağıdaki resimlerde görmekteyiz.

Resim 22: Hesap makinası programı çalıştırma 1

Resim 23: Tip uyuşmazlığı hata mesajı

34
Nesne Tabanlı Programlama I

Çözüm adımı 4: Yazıların sorun oluşturmaması için edit kutularının text ifadelerini boş
yapalım. Ayrıca sonuç kutucuğuna yazılamaması için s3 edit kutusunun readonly özelliğini
true yapalım. Böylece s3 kutucuğu yazılmaya karşı korumalı olsun. Buna uygun olması
açısından da silme butonunun içeriğini de şu şekilde düzenleyelim:

procedure TForm1.silClick(Sender: TObject);

begin

s1.Text:='';

s2.Text:='';

s3.Text:='';

end;

Programımızı yeniden kaydedip deneyelim. Çalıştırdığımızda 2 sorunumuzun kaldığını


göreceğiz. Bunlar rakam harici değer girilebilmesi ve edit kutuları boş iken işlem tuşuna
basılırsa hata oluşması. Öncelikle boşken oluşan hatayı engellemek için işlem tuşlarının
komutlarının en başına şu ifadeyi ekleyelim:

if (Trim(s2.Text)='') or (Trim(s1.Text)='') then exit;

Böylece boşluk da iptal edilerek (trim ile), eğer s1 ve s2 edit kutularının text kısmına herhangi
bir bilgi girişi olmamışsa fonksiyondan (exit ile) çıkılır.

Diğer sorunumuz ise edit kutularına sadece rakam girilmesi gerekirken her türlü tuşun
algılanmasıdır ki; bunu engellemek ve sadece rakam tuşları ile enter tuşunun algılanmasını
sağlamak için edit kutularının eventlarından (olay) key press olayını kullanacağız. Bunu
yapmak için s1 edit kutusunu seçiniz ve object inspector penceresinden event yaprağını
seçiniz. Gelen ekrandan key press kısmının yanındaki alanı çift tıklayarak komut penceresine
geçiniz. Komut penceresine geçtiğinizde

procedure TForm1.s1KeyPress(Sender: TObject; var Key: Char);

begin

end;

alanına geleceksiniz. Burada procedure TForm1.s1KeyPress(Sender: TObject; var Key: Char);


isimli procedure yazılıyor demektir. Adından anlaşılacağı gibi edit nesnesi üzerinde iken bir
tuşa basıldığında bu procedure çalışacak demektir. Bu procedure içerisine yazacağımız kod
ile “eğer basılan tuş rakam tuşu ya da enter tuşu değilse basılan tuşu algılama” dememiz
gerekecektir. Bunun için procedure yazıldığında şu şekilde olacaktır.

35
Nesne Tabanlı Programlama I

procedure TForm1.s1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',#8]) then

key:=#0;

end;

Burada ondalıklı sayıların da işleme girmesini istersek, ondalık göstergeci olarak kullanılan
virgül için de bu procedure şu şekilde düzenlenebilir:

procedure TForm1.s1KeyPress(Sender: TObject; var Key: Char);

var

uzunluk,say,virgul : integer;

begin

if not(key in['0'..'9',#8,',']) then key:=#0;

if key=',' then begin

virgul:=0;

uzunluk:=length(s1.text);

for say:=1 to uzunluk do

if MidStr(s1.Text,say,1)=',' then virgul:=virgul+1;

if virgul=1 then key:=#0;

end;

end;

Bu procedure sayı2 edit kutusu için düzenlenmelidir. Bunlarda tamamlandıktan sonra


programınız tamamlanmış olacaktır. Programın tam listesi ve ekran görünüşü şu şekilde
olacaktır:

36
Nesne Tabanlı Programlama I

unit calculator;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, StrUtils;

//Midstr fonksiyonu StrUtils utility içinde olsuğundan üstteki satıra StrUtils eklenmelidir.

type

TForm1 = class(TForm)

s1: TEdit;

s2: TEdit;

s3: TEdit;

topla: TButton;

cikart: TButton;

carp: TButton;

bol: TButton;

sil: TButton;

procedure toplaClick(Sender: TObject);

procedure cikartClick(Sender: TObject);

procedure carpClick(Sender: TObject);

procedure bolClick(Sender: TObject);

procedure silClick(Sender: TObject);

procedure s1KeyPress(Sender: TObject; var Key: Char);

procedure s2KeyPress(Sender: TObject; var Key: Char);

37
Nesne Tabanlı Programlama I

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.toplaClick(Sender: TObject);

begin

if (Trim(s2.Text)='') or (Trim(s1.Text)='') then exit;

s3.Text:=inttostr(strtoint(s1.Text)+strtoint(s2.Text));

end;

procedure TForm1.cikartClick(Sender: TObject);

begin

if (Trim(s2.Text)='') or (Trim(s1.Text)='') then exit;

s3.Text:=inttostr(strtoint(s1.Text)-strtoint(s2.Text));

end;

procedure TForm1.carpClick(Sender: TObject);

begin

if (Trim(s2.Text)='') or (Trim(s1.Text)='') then exit;

s3.Text:=inttostr(strtoint(s1.Text)*strtoint(s2.Text));

end;

38
Nesne Tabanlı Programlama I

procedure TForm1.bolClick(Sender: TObject);

begin

if (Trim(s2.Text)='') or (Trim(s1.Text)='') then exit;

s3.Text:=inttostr(trunc((strtoint(s1.Text)/strtoint(s2.Text))));

end;

procedure TForm1.silClick(Sender: TObject);

begin

s1.Text:='';

s2.Text:='';

s3.Text:='';

end;

procedure TForm1.s1KeyPress(Sender: TObject; var Key: Char);

var

uzunluk,say,virgul : integer;

begin

if not(key in['0'..'9',#8,',']) then key:=#0;

if key=',' then begin

virgul:=0;

uzunluk:=length(s1.text);

for say:=1 to uzunluk do

if MidStr(s1.Text,say,1)=',' then virgul:=virgul+1;

if virgul=1 then key:=#0;

end;

end;

39
Nesne Tabanlı Programlama I

procedure TForm1.s2KeyPress(Sender: TObject; var Key: Char);

var

uzunluk,say,virgul : integer;

begin

if not(key in['0'..'9',#8,',']) then key:=#0;

if key=',' then begin

virgul:=0;

uzunluk:=length(s2.text);

for say:=1 to uzunluk do

if MidStr(s2.Text,say,1)=',' then virgul:=virgul+1;

if virgul=1 then key:=#0;

end;

end;

end.

Resim 24:Hesap makinası programı çalıştırma 2

40
Nesne Tabanlı Programlama I

Örnek Soru: Dışarıdan girilecek kaç tane olduğu belli olmayan pozitif sayıları sıralayıp memo
alanına yazdırınız?

41
Nesne Tabanlı Programlama I

BÖLÜM 5:NESNELERİN BAZI ÖZELLİKLERİNİN İŞLEVİ VE KULLANIMI:


Edit nesnesini kullanırken birçok özelliğinden faydalanmak mümkündür.
Mademki edit nesnesi klavyeden yazı girmek ya da yazıyı göstermek için kullanabildiğimiz bir
nesnedir. Bu durumda bu nesnenin tüm yazı özellikleri ayarlanabilmelidir. Bunlar yazı tipi,
yazı boyutu, yazı rengi .. olabileceği gibi zemin rengi ve edit kutusunun boyutlarının
ayarlanabilmesi de mümkündür. Ayrıca bilginin bazen ekranda farklı şekilde görünmesinin de
sağlanması gerekebilir, örneğin şifre girme işlemlerinde olduğu gibi. Şimdi edit nesnesinin bu
özelliklerini tanıyalım:

Charcase özelliği: Edit nesnesine girilecek yazının girildiği şekliyle kalması yada büyük harf
yada küçük harfe çevrilmesi gerekebilir. Bu durumlarda bu özellik ayarlanır. Ayarlama
komutla yapılabileceği gibi object inspector penceresindeki char case özelliği değiştirilerek te
yapılır. Seçenekleri şu şekildedir:

Edit nesnesine girilen yazının büyük harfe dönüştürülmesi için :

edit1.CharCase:=ecUpperCase;

Edit nesnesine girilen yazının küçük harfe dönüştürülmesi için :

edit1.CharCase:=ecLowerCase;

Edit nesnesine girilen yazının büyük harfe dönüştürülmesi için :

edit1.CharCase:=ecNormal;

Passwordchar özelliği: Şifre türünde bilgi girişleri için ekranda bilgi girilirken yazılan
karakterin görüntülenmesi yerine bizim istediğimiz bir karakterin görünmesini sağlamak için
kullanılır. Standart olarak #0 şeklinde ayarlıdır. Bu durumda şifreleme yok demektir. İstenirse
yine komutla yapılabileceği gibi object inspector penceresindeki passwordchar özelliği
değiştirilerek te yapılır. Örneğin:

Edit1.passwordchar:=”X”

Resim 25: Password giriş görünümü

AutoSize Özelliği: True ve False seçenekleri mevcuttur. True olduğunda yazı boyutu
büyüdükçe edit kutusunun yüksekliği de büyür.. Ayarlama komutla yapılabileceği gibi object
inspector penceresindeki char case özelliği değiştirilerek te yapılır.

edit1.AutoSize :=true; // autosize özelliğini aktif yapar.

42
Nesne Tabanlı Programlama I

edit1.AutoSize :=false; // autosize özelliğini pasif yapar.

ReadOnly Özelliği: True ve False seçenekleri mevcuttur. True olduğunda edit nesnesinin
içerisine yazı yazılmasına izin verilmez. False olduğunda edit nesnesinin içerisine bilgi
girilebilir. True olduğunda sadece bilgiyi göstermek amaçlı kullanılmış olur. Hesap
makinasında çıkışın yazıldığı edit nesnesinde olduğu gibi . Ayarlama komutla yapılabileceği
gibi object inspector penceresindeki char case özelliği değiştirilerek te yapılır.

edit1.ReadOnly :=true; // Sadece okunabilir oldu.

edit1.ReadOnly :=false; // Bilgi girişi yapılabilir duruma getirildi.

MaxLength Özelliği: Edit nesnesine girilecek harf adedini sınırlamak için kullanılır. Örneğin
edit nesnesine en çok 10 harf girilebilmesi isteniyorsa şu şekilde ayarlanabilir:

edit1.MaxLength:=10;

Modified Özelliği: Edit nesnesinde bilgi değişikliği yapılıp yapılmadığını test eder. Bilgi
değişikliği yapılmış ise sonuç true olur. Mesela değişim olduğunu başka bir edit kutusunda
mesaj olarak göstermek için:

if edit1.Modified then edit2.Text:='HOOOOP!';

Visible Özelliği: Bu özellik nesnenin ekranda görünür veya görünmez olmasını sağlamak için
kullanılır. Visible özelliği true olduğunda nesne ekranda görünür, false olduğunda ise nesne
ekranda görülmez. Örneğin nesneyi ekranda görünmez yapmak istiyorsak:

Edit1.visible:=false;

Show ve Hide Özellikleri: Bu özellikler visible özelliği ile aynı çalışır. Hide özelliği verildiğinde
visible özelliği false edilmiş olur yani nesne görünmez olur. Show özelliği ise visible özelliğinin
true edilmesidir yani nesne hale gelir. Komut olarak kullanımı şu şekildedir:

Edit1.Show;

Edit1.Hide;

Enabled özelliği: Yine visible özelliği gibi true ve false seçenekleri mevcuttur. Enabled true
olduğunda nesnenin üzerinde işlem yapılmasına izin verilmiş olur. Enabled özelliği false
olduğunda ise nesne ekranda biraz soluk şekilde gösterilir ve üzerinde işlem yapılmasına izin
verilmez. Mesela bir menü seçeneğinin görülmesi ancak üzerinde işlem yapılamaması gibi
durumda kullanılır. Nesne görünsün ama yazılamasın istiyorsak:

43
Nesne Tabanlı Programlama I

Edit1.enabled:=false;

Hint Özelliği: Mouse ile nesne üzerine gelince bilgi kutucuğunun görünmesini sağlar. Bu
durumun çalışması için nesnenin bulunduğu formun create özelliğinin olduğu procedure
içerisine yazılır. Mesaj hint özelliğine text olarak atanırken, mesajın görünür olmasını
sağlamak için de showhint özelliği true yapılır. Edit1 nesnesinin üzerine mouse ile
gelindiğinde “Öğrenci Numaranızı Giriniz” mesajının görünmesini istiyorsak aşağıdaki iki satırı
form create procedure si içerisine yazmalıyız.

edit1.hint:='Öğrenci Numaranızı giriniz.';

edit1.showhint:=true;

Tabstop Özelliği: Yine birçok nesnede bulunan bu özelliğin True ve False olarak 2 seçeneği
vardır. Bu özellik true ise mouse yerine ya da mouse olmadığı zaman tab tuşu ile nesneler
üzerinde gezinmek istediğimizde tabstop özelliği true olan nesneler üzerinde sırayla
dolaşılması sağlanmış olur. Bu özelliği false olan nesneler tab tuşu ile seçilememiş olur.

Taborder Özelliği: Bu özellik ile nesneler üzerinde tab ile gezinirken ki sırayı belirleyebiliriz ilk
etapta bunların numaraları forma konma sırasına göredir fakat biz bu özelliği ile bunları
değiştirebiliriz. Numaraları 0 dan başlar ve biz değiştirmemişsek forma yerleştirilme sıralarına
göre artar. Kendimiz object inspector penceresinden istediğimiz şekilde ayarlama yapabiliriz.
Komutlada create form ekranından yapılabilir.

Name: Kullanılan nesnenin adını belirtir ve tüm nesneler için geçerli özelliktir. Object
Inspector üzerinden nesnenin name özelliğini değiştirebiliriz. Program yazarken kodlar
içerisinde edit1, edit2 gibi isimlerle çalıştığımızda karışma ihtimali yüksek olacağı için nesne
isimlerini kendimize göre anlamlı olacak şekilde değiştirmek programcılıkta kural olmamasına
rağmen mutlaka yapılsa iyi olur diyebileceğimiz türden işlemlerdir. Mesela edit1 nesnesinin
name özelliğini isim olarak değiştirmişsek burada girilen ismin ali olup olmadığını kontrol
etmek için:

if edit1.text=’ali’ then… gibi bir satır yazmak yerine

if isim.text=’ali’ then… gibi bir satır yazarız. Text kutularının fazla olacağı ekranlar için ne
kadar kullanışlı olabileceğini buradan görmekteyiz. Aynı işlem tüm nesneler için geçerlidir.

44
Nesne Tabanlı Programlama I

Setfocus Özelliği: Bu özellik kullanılarak kontrol aynı nesneye tekrar verilir. Genellikle bir veri
alanına istenmeyen bir veri girildiğinde kullanılır. Mesela bir programa şifre girişi yapıldığında
şifre kelimesi 6 harften oluşması gerekiyor ise şöyle bir kodla kontrol edebiliriz. Tabii ki bu
kontrol yazım işlemi tamamlanınca yapılması gerektiği için edit nesnesinin onExit event
kısmına yazılmalıdır.

procedure TForm1.edit1Exit(Sender: TObject);

begin

if (length(edit1.text)<>6 ) then begin

Showmessage(' Şifre 6 karakter uzunluğunda olmalıdır.');

edit1.setfocus; //kontrol tekrar edit2 ye geçti...

end;

end;

delphinin genel fonksiyonlarından olan length fonksiyonu ile edit1 nesnesine girilen textin
uzunluğu (kaç karakterden oluştuğu) ölçülmekte ve 6 karakterden farklı olursa mesaj
verilerek uyarıldıktan sonra tekrar edit1.setfocus komutu ile şifrenin yeniden girilebilmesi
için kontrol yeniden edit1 nesnesine verilmektedir.

Font özellikleri: Bu özellik grubunun altında yazı boyu, yazı tipi, yazı rengi gibi özellikler ve
bunların altında da çok fazla sayıda seçenekler mevcuttur. Bunlardan bazılarını açıklayalım.
Diğerlerini deneme yaparak yada object inspector penceresindeki seçenekleri görerek
ayarlamak mümkündür.

Color: Yazının rengini ayarlar. Özel renk verileceği gibi Windows standartları da alınabilir.
Örneğin yazını kırmızı olması için:

edit1.Font.Color:=clRed;

Height: Yazının pixel cinsinden yüksekliğinin ayarlanmasını sağlar.

edit1.Font.Height:=20;

Font.Name: Yazı tipinin adını ayarlamanızı sağlar. Örneğin el yazısı yazmasını istiyorsanız:

edit1.Font.Name:='Lucida Handwriting’;

Font.Style: Yazının normal, kalın (bold), italik (italic) altıçizgili (underline) yada üstüçizgili
(strikeout) olması özelliklerini ayarlar. Örneğin yazının eğik yazı (italik) olması için:

edit1.Font.Style:=[fsitalic];
45
Nesne Tabanlı Programlama I

46
Nesne Tabanlı Programlama I

BOLUM 6: LISTBOX ve COMBOBOX KULLANIMI

6.1.LISTBOX KULLANIMI:
Görsel dillerde veri girişlerinin en kullanışlı olduğu metodlardan sayılan listbox ve
comboboxlar belirli bir listeden bilgi girişi ya da seçim gerektiğinde çok kullanışlıdır. Çünkü
klavye girişlerinde hatalı girişler oluşabilir ve bu standart bilgileri klavyeden girmek kullanıcı
için zaman kaybıdır. Program yazılırken bu veriler birkez yazılırsa sonrasında sadece seçilerek
kullanılabilir. Burada listboxda veriler ekranda bir kısmı görünür olarak tutulurken,
comboboxda ise açılan bir seçmek için kullanılır ancak biz öncelikle metod olarak öğreneceğiz
ve daha sonra database kullanımı içerisinde de örneklerle kullanımını yine göreceğiz.
Öncelikle listbox kullanımını öğrenmek için basit bir örnek tasarlayalım.

Örnek: Bir form üzerine bir listbox ve bir editbox yerleştirelim. Edit kutusunu yazılmaz hale
getirelim. Listbox içerisine ise haftanın günlerini seçilecek veriler olarak yazalım. Sonra
program çalıştığında listboxtan herhangi bir gün seçildiğinde edit kutusunda “haftanın .. ıncı
günü … dir.” mesajının verilmesini sağlayalım.

Çözüm: Delphi çalıştırıldıktan sonra form1 üzerinde iken standart sayfasından 1 adet listbox
nesnesi ve 1 adet edit kutusunu form üzerine yerleştirelim. Edit kutusu içerisindeki text
ifadesini silelim ve edit1 kutusunun enable özelliğini false yapalım. Daha sonra listbox
nesnesini seçelim ve object inspector penceresinden items kısmını tıklayalım:

Resim 26:Object inspectorda Listbox özellikleri

47
Nesne Tabanlı Programlama I

Items kısmı tıklandıkdan sonra gelen String List Editör penceresine seçenekleri herbiri bir
satır olacak şekilde girelim. İşlem tamam olduktan sonra OK seçerek işlemi tamamlayalım.

Resim 27: Listboxa item ekleme

İşlemimizi tamamladığımızda yeniden form üzerine döndüğümüzde aşağıdaki gibi bir görüntü
oluşur. Burada seçenekler listesi uzun olursa resimde görüldüğü gibi verileri yukarı-aşağı
kaydırmak için scroll bar oluşur.

Resim 28: List box kullanımı 1

Veriler az olduğunda bunun olmasını istemiyorsak alanı istediğimiz şekilde ayarlarız. Ayrıca
lisbox ve editbox üzerinde iken font seçimini ve yazı boyutunu da ayarlarız.

48
Nesne Tabanlı Programlama I

Resim 29: Listbox kullanımı 2

Bu işlemleri tamamladıktan sonra listbox üzerini çift tıklayarak komut yazma penceresine
geçeriz. Burada listbox1.click procedure alanında iken iki iş yapıyoruz. Birincisi listboxda
seçilen seçeneğin indexini alıyoruz. List box içerisindeki seçeneklerin indexi 0’dan başlar.

listbox1.itemindex özelliği kullanılarak seçili seçeneğin index numarası alınır. Örneğimizde


haftanın ilk günü 0 değilde 1 olması için listbox1.itemindex değeri 1 ile toplanarak bir integer
değişkene aktarılmıştır.

Listbox içerisinde seçilmiş olan seçeneğin string ifadesini almak için ise;

listbox1.items.Strings[seçili_eleman_index_no] özelliği kullanılır. Burada seçili olan ifadeyi


almak için

listbox1.items.Strings[listbox1.itemindex]; ifadesi gun isimli bir string değişkene aktarılmıştır.

Veriler bu şekilde alındıktan sonra edit kutusunda sonucu görüntülemek için:

edit1.Text:= 'Haftanın '+ inttostr(sira)+'. günü : '+gun+' dir.'

Satırı ile yazılmak istenilen ifadelerin hepsi araları + ile birleştirilerek tek bir string haline
dönüştürülmüş ve edit1 nesnesinin text özelliğine aktarılmıştır. Sonuçta yazılan procedure
aşağıdaki gibidir:

procedure TForm1.ListBox1Click(Sender: TObject);

var

sira :integer;

gun:string[10];

49
Nesne Tabanlı Programlama I

begin

sira :=listbox1.itemindex+1;

gun :=listbox1.items.Strings[listbox1.itemindex];

edit1.Text:= 'Haftanın '+ inttostr(sira)+'. günü : '+gun+' dir.'

end;

Programı çalıştırdığımızda aşağıdaki görüntü oluşmuş olur:

Resim 30: Listbox kullanımı 3

Eğer listboxun elemanlarını object inspector penceresinden girerek değil de komutla


oluşturmak istersek formun create proceduresine aşağıdaki gibi bir satır yazmamız gerekir.

Listbox1.items.SetText('PAZARTESİ'#13'SALI'#13'ÇARŞAMBA'#13'PERŞEMBE'#13'CUMA'#13'C
UMARTESİ'#13'PAZAR');

6.2.COMBOBOX KULLANIMI
Şimdi aynı örneği combobox ile tasarlayalım. Böylece listbox ile combobox kullanımının
benzerliklerini de görmüş olacağız.

Örnek: Bir form üzerine bir combobox ve bir editbox yerleştirelim. Edit kutusunu yazılmaz
hale getirelim. combobox içerisine ise haftanın günlerini seçilecek veriler olarak yazalım.
Sonra program çalıştığında comboboxtan herhangi bir gün seçildiğinde edit kutusunda
“haftanın .. ıncı günü … dir.” mesajının verilmesini sağlayalım.

Çözüm: Delphi çalıştırıldıktan sonra form1 üzerinde iken standart sayfasından 1 adet
combobox nesnesi ve 1 adet edit kutusunu form üzerine yerleştirelim. Edit kutusu
içerisindeki text ifadesini silelim ve edit1 kutusunun enable özelliğini false yapalım. Daha

50
Nesne Tabanlı Programlama I

sonra combobox nesnesini seçelim ve object inspector penceresinden items kısmını


tıklayalım:

Resim 31: Form üzerine combobox yerleştirme

Items kısmı tıklandıkdan sonra gelen String List Editör penceresine seçenekleri herbiri bir
satır olacak şekilde girelim. İşlem tamam olduktan sonra OK seçerek işlemi tamamlayalım.
Ayrıca comboboxun object inspectordaki text alanına ‘Gün Seçiniz’ ifadesini yazalım.

Resim 32: Object inspector da combobox özellikleri

51
Nesne Tabanlı Programlama I

Resim 33: Comboboxa item ekleme

Ayrıca combobox ve editbox için font seçimini ve yazı boyutunu da ayarlarız. İşlemimizi
tamamladığımızda yeniden form üzerine döndüğümüzde aşağıdaki gibi bir görüntü oluşur.

Resim 34: Combobox kullanımı 1

Bu işlemleri tamamladıktan sonra combobox üzerini çift tıklayarak komut yazma penceresine
geçeriz. Burada combobox1.click procedure alanında iken iki iş yapıyoruz. Birincisi
comboboxda seçilen seçeneğin indexini alıyoruz. Combobox içerisindeki seçeneklerin indexi
0’dan başlar.

Combobox1.itemindex özelliği kullanılarak seçili seçeneğin index numarası alınır.


Örneğimizde haftanın ilk günü 0 değilde 1 olması için combobox1.itemindex değeri 1 ile
toplanarak bir integer değişkene aktarılmıştır.

Combobox içerisinde seçilmiş olan seçeneğin sting ifadesini almak için ise;

Combobox1.items.Strings[seçili_eleman_index_no] özelliği kullanılır. Burada seçili olan


ifadeyi almak için

Combobox1.items.Strings[combobox1.itemindex];

ifadesi gun isimli bir string değişkene aktarılmıştır.

52
Nesne Tabanlı Programlama I

Veriler bu şekilde alındıktan sonra edit kutusunda sonucu görüntülemek için:

edit1.Text:= 'Haftanın '+ inttostr(sira)+'. günü : '+gun+' dir.'

Satırı ile yazılmak istenilen ifadelerin hepsi araları + ile birleştirilerek tek bir string haline
dönüştürülmüş ve edit1 nesnesinin text özelliğine aktarılmıştır. Sonuçta yazılan procedure
aşağıdaki gibidir:

procedure TForm1.ComboBox1Change(Sender: TObject);

var

sira :integer;

gun:string[10];

begin

sira :=combobox1.itemindex+1;

gun :=combobox1.items.Strings[combobox1.itemindex];

edit1.Text:= 'Haftanın '+ inttostr(sira)+'. günü : '+gun+' dir.'

end;

Programı çalıştırdığımızda aşağıdaki görüntü oluşmuş olur:

Resim 35: Combobox kullanımı 2

Eğer comboboxun elemanlarını object inspector penceresinden girerek değil de komutla


oluşturmak istersek formun create proceduresine aşağıdaki gibi bir satır yazmamız gerekir.

Combobox1.items.SetText('PAZARTESİ'#13'SALI'#13'ÇARŞAMBA'#13'PERŞEMBE'#13'CUMA'#
13'CUMARTESİ'#13'PAZAR');
53
Nesne Tabanlı Programlama I

Her 2 örneği de incelediğimizde listbox ve combobox kullanımının birbirinin aynısı olduğunu


görmekteyiz. Burada geriye sadece görüntünün nasıl olması gerektiğini tercih etmek
kalmaktadır. Database kullanımı kısmında da yine aynı konuya örneklerle bakacağız.

6.3.MESSAGE KULLANIMI:
Program içerisinde kullanıcıya verilecek olan mesajlar nasıl verilir sorusuna
gelince; şu ana kadar label ve edit kutuları ile form üzerinde mesaj yada bilgi verme
ekranlarının kullanımını görmüştük. Bir diğer mesaj olayı ise mesajı gördüğüne dair
kullanıcıdan okey alınarak işleme devam edilmesi halidir ki; burada ya sadece gördüm
şeklinde okey alınır yada seçenekli cevap alınarak okey alınması işlemidir. Öncelikle sadece
gördüm şeklindeki durumlarda showmessage komutu kullanılır.

6.4.SHOWMESSAGE KULLANIMI:
Kullanılış Formu:

ShowMessage (‘Mesaj içeren string ifadesi’);

Bu kullanım şekliyle önünde yazan mesaj kullanıcıya gösterilerek bir okey butonuna basılması
ile programın kaldığı yerden devam etmesi sağlanır.

Örnek:

Programın herhangi bir yerinde aşağıdaki satırı yazalım:

ShowMessage ('İşleminiz Yapılmaktadır...');

Bu satır işleme girdiğindi aşağıdaki görüntü ekrana gelir ve OK butonuna basılınca program
kaldığı yerden işlemeye devam eder.

Resim 36: Message box

6.5.MESSAGEDLG KULLANIMI:
Bazı durumlarda mesaj verilirken kullanıcının evet hayır ya da vazgeç gibi seçeneklerden
birisini seçmesi de istenebilir. Bu durumda MessageDlg isimli mesaj kutusu kullanılır. Bu
kullanımda mesaj ekrana verilir ve altında Yes, No, Cancel seçenekleri kullanıcıya sunulur.
Mesela Kayıtla ilgili bir mesaj için örneği aşağıdaki gibi kullanabiliriz:

54
Nesne Tabanlı Programlama I

Case MessageDlg( 'Değişikliği kaydetmek istiyormusunuz?'+#13+#10,

mtConfirmation,[mbYes, mbNo, mbCancel], 0) of

idYes : showmessage('Evet Seçildi ');

idNo : showmessage('Hayır Seçildi ');

idCancel : showmessage('Vazgeç Seçildi ');

end;

Bu örnek kullanıldığı zaman çalıştırıldığında aşağıdaki görüntü oluşur ve sonrasında seçime


göre istenilen mesaj yazılır.

Resim 37: Case dialog kutusu

55
Nesne Tabanlı Programlama I

BÖLÜM 7 : DATABASE KULLANIMI

Bu bölümde database oluşturma, database içerisinde table oluşturma, table içerisine kayıt
ekleme, istenilen kayda ulaşma ve kayıtları listeleme işlemleri yine örneklerle anlatılacaktır.
Tabii ki her bir örnek içerisinde database ile ilgili işlemleri de bulunduracağından yazılımı
biraz uzun olacaktır. Ancak öğrenicinin herhangi bir soru sorma ihtiyacı hissetmeden
örnekleri anlaması ve uygulayabilmesi açısından tüm detaylar anlatılacak ve gerekli olan tüm
ekranlarda resim olarak eklenecektir.
Öncelikle tek table’dan oluşan bir örnekle başlayalım ve temel database nesnelerinin
görevlerini ve kullanımlarını öğrenmeye çalışalım:

Örnek: Kişisel kullanımınız için kullanımı basit bir Telefon Rehberi programını delphi de
hazırlayınız?
Çözüm: Sorumuz temelde basit bir telefon rehberi hazırlanmasını istemektedir. Telefon
rehberi denildiğinde kişilerin isim adres ve telefon bilgilerinin kaydedildiği, kayıt ekleme
arama listeleme seçeneklerinin olduğu bir program akla gelmektedir. Burada veriler kalıcı
olacağından harddisk üzerine kaydedilecektir. Bunun içinde bir veri tabanı içerisine bir table
oluşturarak işlemlerimizi yapabiliriz. Bu bilgiler ışığında çözümü tasarlayalım:
Menüleri:
Kayıt Ekleme
Kayıt Arama (isim ile, telefon no ile, şehir ile)
Kayıt Silme
Çıkış
Kaydedilecek Bilgiler için değişken adları ve tipleri
Ad: string[15]
Soyad:String[15]
Tel:string[11]
Adres1:string[30]
Adres2:string[30]
Sehir:string[15]

7.1.Adım1: Veri Tabanı Oluşturma:


İşlem Adımları:
1-Database alanı olarak kullanacağınız bir klasörü harddiskiniz üzerinde oluşturunuz. Biz
örnek olarak c:\delphi_deneme olarak bir klasör oluşturduk. Ayrıca table’larınızı ayrı
yüklemek için oluşturduğunuz klasörün içerisine birde DATA adında klasör oluşturunuz.
(Oluşturulmasa da olur, ancak düzenli çalışma için yapılması uygun olur.)
2-Delphi yazılımında bulunan bde administrator programını Windows başlat/programlar
menüsünden çalıştırılır. Windows 7 için yönetici olarak çalıştırmakta gerekebilir.

56
Nesne Tabanlı Programlama I

3-BDE Administrator çalıştığında gelen ekrandan Object menüsünden New seçeneğini seçin.
Gelen ekrandan standart seçimini OK seçerek geçin.

Resim 38: Database tipini belirleme

4-Gelen ekranda databese adı STANDART olarak gelecektir. Bu ismi sizin istediğiniz bir klasör
ismi olarak değiştirin. Daha sonra ekranın sağ tarafında PATH seçeneğini tıklayarak database
olarak belirlediğiniz klasörün yolunu tarif ediniz. (c:\delphi_deneme\data)

Resim 39. BDE Administrator ekranı

6-Object menüsünden Apply seçeneğini (Üstte sağa ok olan mavi icon) seçerek gelen mesaja
OK seçerek işleminizi tamamlayın.

57
Nesne Tabanlı Programlama I

Resim 40: Oluşturulan veri tabanını kaydetmek

İşleminiz tamamlanmıştır. Ekranınızdaki görüntü aşağıdaki gibidir.

Resim 41: Oluşturulan veri tabanı

7-Bde administrator programınızı kapatınız.

58
Nesne Tabanlı Programlama I

7.2.Adım 2: Table Oluşturma


İşlem Adımları:
1-Delphi yazılımında bulunan database desktop programını Windows başlat/programlar
menüsünden çalıştırılır. Windows 7 için yönetici olarak çalıştırmakta gerekebilir.

Resim 42: Database desktop ekranı

2- File menüsünden Working Directory seçeneğini seçiniz ve gelen ekrandan Browse


butonunu tıklayarak database olarak belirlediğiniz klasörü seçiniz. İşleminizi tamamlayınca
OK seçeneğini seçerek çıkınız.

Resim 43: Table oluşturulacak veri tabanını seçmek

3-File menüsünden New seçeneğinden Table seçilir. Gelen ekranda table tipi olarak Paradox
seçilir.

59
Nesne Tabanlı Programlama I

Resim 44: Tablo tipini belirlemek

4-Table alanları ve tiplerini oluşturabilmeniz için create Paraodx 7 table ekranı gelir.

Resim 45: Tablo alan adı vermek

5-Create paradox 7 table ekranında alan isimlerini ve tiplerini tasarladığımız şekilde giriniz.
Burada string olarak belirlediğimiz ifadeler Alpha olarak seçilecektir. Alan adını yazdıktan
sonra alan tipi için type kısmında iken mouse’ın sağ tuşunu tıkladığınızda gelen listeden (liste
aşağıda gösterilmiştir.) seçebilirsiniz. Buradaki tipler zaten ismi ile belli yapıdadırlar. Eğer
seçilen tip boyutu belli değilde biz belirliyorsak (stringde olduğu gibi) size alanına da
boyutunu gireriz. Tablo kullanırken alanlardan herhangi birisi key olarak kullanılacaksa onuda
* ile işaretleyerek key (index yada arama anahtarı şeklinde tarif edebiliriz) olarak
belirleyebiliriz. Bizim dosyamızda key kullanmayacağız.

60
Nesne Tabanlı Programlama I

Resim 46: Tablo alan tipini belirlemek

Alanlar tanımlandıktan sonra aşağıdaki görüntü oluşacaktır.

Resim 47: Tablonun alanlarını oluşturmak

6-Save as seçeneğini seçerek table’ı database klasörümüzdeki data klasörünün içerisine


rehber adıyla kaydedelim.

61
Nesne Tabanlı Programlama I

Resim 48: Tablo yapısını tamamlayarak kaydetmek

7- Table oluşmuştur. Eğer içeriğini görmek istersek File/Open/Table seçerek data içerisinde
rehber.db table seçersek aşağıdaki şekilde içeriğini görmüş oluruz.

Resim 49: Tabloyu grid şeklinde görmek

Tablonuza ulaşmak için database klasörünüz açıldığında alt klasörü seçme zahmetinden
kurtulmak için, database desktoptan yada program içerisinde kullanılacak olan nesnelerde
direk olarak ulaşabilmek için tools menüsünden Alias Manager seçiniz ve gelen ekranda Path
kısmına data klasörünü tarif edecek bilgileri ya klavyeden yazarak yada browse butonunu
tıklayarak giriniz.

62
Nesne Tabanlı Programlama I

Resim 50: tabloya alias tariflemek

Böylece tablomuz oluşmuş ve kullanıma hazır hale geldi. Direk Database Desktop içerisinde
iken veri girmek istediğinizde öncelikle Table/EditData seçiniz.Böylece aktif kayıt içerisine
veri girebilirsiniz. Tablonuzda var olan kayıtlarla ilgili işlemler için yada yeni kayıt ekleme
işlemleri için Database Desktop ile table açıldıktan sonra Record menüsünden kayıt ekleme
(insert), Sonraki kayda gitme (next), önceki kayda gitme (previous), ilk kayda gitme (first), son
kayda gitme (last), araya yada sona kayıt ekleme (insert), aktif kaydı sile (delete) işlemlerini
yapabilirsiniz.

7.3.İşlem adımı 3:Delphide database table nesnesini düzenlemek.


Programımız hazır olduğunda oluşturduğunuz database içerisindeki table kullanılabilmesi için
database bağlantı nesnelerinin gerekli şekilde ayarlanmaları gerekir. Öncelikle bu işlemi
yapıyoruz. Bunu niçin delphiyi çalıştırınız ve gelen form1 ekranı üzerine BDE yaprağında
bulunan table nesnesinden 1 adet yerleştiriniz. Yerleştirdiğiniz table nesnesinin Database
name kısmını tıklayarak oluşturduğunuz database’in adını (örneğimizde tel_rehber) seçiniz.
Sonra da table name kısmını tıklayarak oluturduğunuz table’ın adını (örneğimizde rehber.db)
tıklayarak seçiyoruz.

63
Nesne Tabanlı Programlama I

Resim 51: Tablo nesnesinin özelliklerini düzenlemek

7.4.İşlem adımı 4: Menü oluşturmak:


Şimdi alt yapı hazır olduğuna göre Delphide program ile ilgili işlemleri yapmaya başlayalım:
Öncelikle menü oluşturarak başlıyoruz. Menü ; “Kayıt Ekleme, Kayıt Arama, Kayıt Silme ve
Çıkış” olmak üzere 4 ana kısımdan oluşacaktır. Ayrıca Kayıt Arama menüsünün “İsim İle
Arama, Telefon No ile Arama ve Şehir Adına Göre” şeklinde alt menü seçenekleri olmalıdır.
Şimdi bunları delphide açacağımız bir form üzerine hazırlayalım:

1- Delphiyi Çalıştırınız ve Form üzerine MainMenu nesnesi ekleyiniz

Resim 52: Main menü nesnesi eklemek

64
Nesne Tabanlı Programlama I

2- Yerleştirdiğiniz nesneyi çift tıklayarak gelen ekranda tek bir seçenek varken seçili
nesne üzerinde sağ tuş tıklayarak insert seçerek 4 adet ana menü ekleyiniz. Kayıt
Arama menüsünün altında ise alt menüyü sağ tuşla tıklayarak alt menü seçenek
kutularını oluşturunuz. Sonra oluşan menü seçeneklerinin herbiri için caption
özelliğini menü seçeneklerinin adı olacak şekilde düzenleyiniz.

Resim 53: Main menü seçeneklerini düzenlemek

İşlemi tamamladığınızda Form1.MainMenu1 ekranını sağ üst köşedeki kapatma ikonunu


tıklayarak kapatınız. Form1 ekranınız aşağıdaki gibi olmuştur.

Resim 54: Main menünün tamamlanmış hali

Artık procedure kısımlarını yazarak işlemlerimizi yapmaya başlayalım:

7.5.Kayıt ekleme procedure yazımı:


Bu iş için öncelikle işlemleri yeni bir formda yapalım. Yeni bir formu sisteminize eklemek için
File/New/Form seçeneğini seçerek ekranınıza yeni bir form ekleyin. Sonra Formunuzu save
seçeneği ile kaydedin. Biz burada örnek olarak rehber_unit2 adıyla kaydettik. Sonra form1
ekranınızın kod kısmına geçiniz ve uses satırında var olan bileşenlerin yanına virgül ile
rehber_unit2 adınıda ekleyiniz.Artık form1 de çalışırken form2 ekranına geçmek için gerekli
ayarlamaları yapmış oldunuz.

65
Nesne Tabanlı Programlama I

Şimdi form2 ekranı üzerine dosyaya kaydedilecek verileri ekrandan girmek için yeterli sayıda
edit kutusu ve kaydet yada çıkış işlemleri için butonlar ekleyiniz. Formun adını kay_frm olarak
değiştiriniz. Formun Caption özelliğini de kayıt ekranı olarak değiştiriniz. Form2 üzerine
koyduğunuz 6 adet edit kutusunun yanına 6 adet te label koyarak labeller içine gerekli
açıklamaları yazınız.
Bu ekrandan table’a kayıt için erişeceğiniz için bu ekranın üzerine de 1 adet table nesnesi
koyunuz ve database adı ve table adı özelliklerini uygun şekilde düzenleyiniz.
Ayrıca edit kutularının text özelliğini boşaltınız. Ayrıca butonların adlarını kaydet ve çıkış
olarak düzenleyiniz. Edit1, edit2 ve edit3 kutularının show hint özelliklerini true olarak
düzenleyiniz. Ayrıca hint özelliklerinin içerisine bu kutuların boş bırakılamayacağını gösteren
mesajlarınızı yazınız.
Form2 nin görünümü şekildeki gibi olacaktır.

Resim 55: Veri kaydetme ekranı tasarımı

Öncelikle Çıkış butonu için procedure yazalım. Buraya tek bir komut yazmamız yeterli
olacaktır:
Kay_frm.Close;
Bittiğinde procedure şu şekilde olacaktır:
procedure TKay_frm.Button2Click(Sender: TObject);
begin
kay_frm.Close;
end;

Şimdide kayıt butonu procedure’si içerisine standart bir tabloya kayıt programı yazalım:
Bu işlemin işlem adımları şu şekilde olmalıdır:
i.Table açılır
ii.Gerekli veriler edit kutularından alınır.
iii.Veriler kayıt şartlarını taşıyorsa (örneğimizde isim, soyisim ve telefon no boş bırakılmamalı)
table için append komutu ile en sona boş kayıt eklenir ve edit kutularındaki veriler alınarak
table alanlarına aktarılır. Sonra table.post komutuyla veriler tabloya kaydedilir.

66
Nesne Tabanlı Programlama I

iv.Eğer aynı ekranda yeniden kayıt yapılacaksa edit alanlarında var olan bilginin yeniden
yanlışlıkla kaydedilmesini engellemek için edit alanları boşaltılır. Bu şartlara göre kayıt
procedure aşağıdaki gibi olacaktır.
procedure TKay_frm.Button1Click(Sender: TObject);
begin
if ((edit1.text='') or (edit2.text='') or (edit3.text='')) then
showmessage (' İsim, Soyisim ve Adres Boş Bırakılamaz . ')
else
begin
table1.Open;
table1.Append;
table1['ad']:=edit1.Text;
table1['soyad']:=edit2.Text;
table1['tel']:=edit3.Text;
table1['adres1']:=edit4.Text;
table1['adres2']:=edit5.Text;
table1['sehir']:=edit6.Text;
table1.Post;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
end;
table1.Close;
end;

7.6.İşlem Adımı 6: Arama Menülerini yazalım:


Öncelikle arama işlemlerini yapmak için yeni bir form oluşturalım:
File/New/Form
Oluşan formun adını (name) ara_frm ve başlığını (caption) Arama Ekranı olarak düzenleyelim.
Formu (File/Save) rehber_ara adıyla kaydedelim.
Form1 ana formun unit kısmına ara_frm bilgisini ekleyelim, böylece yeni form ana program
tarafından görülür oldu. Birde ana menüden alt forma veri aktarmak için (seçilen menü
seçeneğini) secim isimli bir global değişken oluşturalım. Bunun için ara_frm nin baş
kısmındaki var alanına
Secim:char; satırını ekleyelim.
Ana menüden arama için seçilen seçimleri alt forma aktarmak için:
Eğer isme göre arama seçildi ise secim=1, eğer telefon no ile arama seçildi ise secim=2, eğer
şehire göre arama seçildi ise secim=3 olsun şeklinde kod yapısını ana formdaki menü

67
Nesne Tabanlı Programlama I

seçeneklerine yazalım. Secim değişkenine gerekli atama yapıldıktan sonrada arama ekranı
formu aktif hale gelmelidir. Bu durumda ana menünün arama seçeneklerinin procedure leri
aşağıdaki gibi olacaktır.

procedure TForm1.smeGreArama1Click(Sender: TObject);


begin
secim:='1';
ara_frm.Show;
end;

procedure TForm1.elefonNoileArama1Click(Sender: TObject);


begin
secim:='2';
ara_frm.Show;
end;

procedure TForm1.ehirAdleArama1Click(Sender: TObject);


begin
secim:='3';
ara_frm.Show;
end;
Şimdi ara_frm üzerindeki text ve label nesnelerini yerleştirelim:

Resim 56: Veri arama ekranı tasarımı

Arama ekranınıza resimde görüldüğü gibi 8 adet edit kutusu, 3 buton ve gerekli miktarda
label nesnesi yerleştiriniz. Label2’nin başlığını (caption) Soyadı giriniz şeklinde düzenleyiniz
ve label2 ve edit2 nesnesinin visible özelliğini false yapınız. (Bu ikili sadece isimle arama

68
Nesne Tabanlı Programlama I

yapıldığında soyismi girilmesini temin etmek için kullanılacaktır. Bu sebeple isim ile arama
haricinde görünmez durumda kalacaklardır.)
Edit3, edit4, edit5, edit6, edit7, edit8 kutularının readonly özelliğini true yapınız ve text
özelliklerini siliniz. (Bunlara dışarıdan bilgi girilmeyecek sadece bulunan bilgiyi göstermek için
kullanılacaklardır.)
Buton1 butonunun adını (name) yeni, başlığını (caption) Yeni Arama, buton2 butonunun
adını (name) sonraki, başlığını (caption) sonraki,buton3 butonunun adını (name) exit,
başlığını (caption) Çıkış olarak düzenleyiniz.
Form üzerine table nesnesi yerleştiriniz ve Database Name özelliğini tel_rehber, Table Name
özelliğini rehber.db olarak düzenleyiniz.
Artık sistem hazır olduğuna göre procedureleri aşağıdaki şekilde yazabiliriz:

unit rehber_ara;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBTables;

type
Tara_frm = class(TForm)
Label1: TLabel;
Label2: TLabel;
yeni: TButton;
sonraki: TButton;
exit: TButton;
edit1: TEdit;
edit3: TEdit;
edit4: TEdit;
edit5: TEdit;
edit6: TEdit;
edit7: TEdit;
edit8: TEdit;
edit2: TEdit;
Table1: TTable;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;

69
Nesne Tabanlı Programlama I

Label8: TLabel;
procedure FormShow(Sender: TObject);
procedure yeniClick(Sender: TObject);
procedure sonrakiClick(Sender: TObject);
procedure exitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
ara_frm: Tara_frm;
secim:char;
table_index:integer;
implementation

{$R *.dfm}

procedure Tara_frm.FormShow(Sender: TObject);


begin
if secim='1' then begin
label1.Caption:='İsmini Giriniz :';
label2.Visible:=true;
edit2.visible:=true;
end;

if secim='2' then begin


label1.Caption:='Telefon No Giriniz :';
label2.Visible:=false;
edit2.visible:=false;
end;
if secim='3' then begin
label1.Caption:='Şehir Giriniz :';
label2.Visible:=false;
edit2.visible:=false;
end;

end;

70
Nesne Tabanlı Programlama I

procedure Tara_frm.yeniClick(Sender: TObject);


var
bul:integer;

begin
bul:=0;

if secim='1' then begin


table1.Open;
table1.RecNo:=1;
while ((not(table1.eof)) and (bul=0)) do begin
if ((edit1.text=(table1['ad'])) or (edit2.text= table1['soyad'])) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage ('Aranılan Kayıt Bulunamadı...');
table1.Close;
end;

if secim='2' then begin


table1.Open;
table1.RecNo:=1;
while ((not(table1.eof)) and (bul=0)) do begin
if (edit1.text= table1['tel']) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];

71
Nesne Tabanlı Programlama I

edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage ('Aranılan Kayıt Bulunamadı...');
table1.Close;
end;

if secim='3' then begin


table1.Open;
table1.RecNo:=1;
while ((not(table1.eof)) and (bul=0)) do begin
if (edit1.text= table1['sehir']) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage ('Aranılan Kayıt Bulunamadı...');
table1.Close;
end;
end;

procedure Tara_frm.sonrakiClick(Sender: TObject);


var
bul:integer;
begin
bul:=0;

if secim='1' then begin

72
Nesne Tabanlı Programlama I

table1.Open;
table1.RecNo:=table_index+1;
while ((not(table1.eof)) and (bul=0)) do begin
if ((edit1.text=(table1['ad'])) or (edit2.text= table1['soyad'])) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage('Başka Kayıt Bulunamadı');
table1.Close;
end;

if secim='2' then begin


table1.Open;
table1.RecNo:=table_index+1;
while ((not(table1.eof)) and (bul=0)) do begin
if (edit1.text= table1['tel']) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage('Başka Kayıt Bulunamadı');
table1.Close;
end;

73
Nesne Tabanlı Programlama I

if secim='3' then begin


table1.Open;
table1.RecNo:=table_index+1;
while ((not(table1.eof)) and (bul=0)) do begin
if (edit1.text= table1['sehir']) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage('Başka Kayıt Bulunamadı');
table1.Close;
end;
end;

procedure Tara_frm.exitClick(Sender: TObject);


begin
table1.Close;
ara_frm.Close;
end;

end.

Procedureleri anlamak için temel mantıklarından kısaca bahsedelim:


Öncelikle arama formu açıldığında aynı formun tüm aramalarda kullanılması sebebiyle
ekrandaki mesajı ayarlamak için formun show event kısmına bir procedure yazarak eğer isme
göre arama yapılacaksa ekranda label1 ve label2 etiketlerinin captionlarına adı giriniz ve
soyadı giriniz şeklinde mesaj yazdırılır. Eğer telefon numarası yada şehire göre arama
yapılacaksa label1 etiketinin captionunu o şekilde düzenlemek ve label2 ile edit2 yi görünmez
hale getirmek gerekir. Bunları secim değişkeninin 1, 2 veya 3 olması durumuna göre
belirleriz.

Arama proceduresi için işlem adımları ise şöyle olmalıdır:

74
Nesne Tabanlı Programlama I

1-Table açılır.
2-İlk kayda gidilir.
3-İlk kayıttan itibaren aranılan bilgi ile kayıttaki bilgi karşılaştırılır ve eğer bilgi tutmuyorsa bir
sonraki kayda geçilir. Eğer bilgi tutuyorsa ekranda gösterilir ve procedure sona erdirilir. Bu
işlem bir döngü içerisinde yapılarak dosya sonuna kadar arama işlemi devam eder eğer dosya
sonuna kadar aranan kayıt bulunmadı ise aranan kayıt bulunmadı mesajı vermek gerekir. Bu
mesajı kontrollü yazmak açısından bul isimli bir değişken tanımlanmıştır. Bul baştan 0 olarak
ayarlanır ve dosya sonuna geldiği halde bul hala 0 ise o zaman bulunamadı mesajı verilir.
4-Dosya kapatılır.
Burada her seferinde tek kayıt gösterilme mantığına göre tasarım yapıldığı için bulunan ilk
kayıttan sonra da aynı şartı sağlayan kayıtlar varsa sonraki kayıtları aramak için bulunan
kayıttan itibaren aramaya devam edebilmek için sonraki butonundaki arama proceduresi
kullanılır. Sonraki procedurelerinin aramadan tek farkı aramaya kalınan yerden devam
edilmesidir. Bunu niçin de herhangi bir kayıt bulunulduğunda bulunan kaydın numarası
table_index isimli değişkende tutulur ve bir sonraki aramada bu kaydın bir sonrasındaki
kayıttan itibaren aramaya devam edilir.

Çıkış proceduresi ise table kapatmak ve formu kapatmaktan ibarettir.

7.7.İşlem adımı 7: Listeleme procedure yazımı:


Listeleme işlemi birkaç türde yazılabilir. Biz burada örnek olarak DbGrid nesnesi
kullanmayı öğrenmek ve DataSource ve DBNavigator nesnelerinin kullanımını öğrenmek için
grid ekranını kullanarak hem listeleme hemde aynı anda kayıtlar arasında gezme, kayıt
ekleme ve silme işlemlerininde yapılışını öğrenmiş olacağız.
Listeleme proceduresini ayrı bir form üzerinde çalıştırmak için projeye yeni bir form
ekleyelim: File/New/Form seçerek gelen formun başlığını listeleme ekranı ve adını lst_frm
olarak düzenleyelim. Sonra formu rehber_lst adıyla kaydedelim. Ana menünün olduğu
forma giderek uses kısmına rehber_lst bilgisini ekleyelim.
Formun üzerine 1 adet table, 1 adet data source, 1 adet dbgrid, 1 adet edit nesnesi ve
3 adet te buton ekleyelim. Butonların başlıklarını (caption) Süz, tümü ve çıkış olarak
değiştirelim. Ayrıca isimlerini de (name) suz, tumu ve exit olarak değiştirelim. Edit nesnesinin
text kısmını siliniz.
Table nesnesinin Database Name kısmına tel_rehber ve Table Name kısmına
rehber.db seçelim. Table nesnesinin Active özelliğini True yapalım. Data Source nesnesinin
Dataset kısmına Table1 seçelim. Grid nesnesinin data source kısmına DataSource1 seçelim.
DBNavigator nesnesinin DataSource kısmını DataSource1 olarak değiştirelim. Edit1
nesnesinin hint kısmına Süzme için kriter giriniz ifadesi yazalım.

75
Nesne Tabanlı Programlama I

Resim 57:Dbgrid ile veri süzme ve listeleme

Bu hazırlıklardan sonra butonlar için gerekli procedureleri yazalım:


Süz kısmında filter özelliğini kulanalım. Tümü kısmı için sadece filter seçeneğini false hale
getirmek yeterlidir. Çıkış için ise table ve formu kapatmak yeterli olacaktır. Kullandığımız grid
nesnesinin özelliği verileri göstermenin haricinde edit özelliği de vermesi yani düzenleme
imkanı vermesidir. Ayrıca DBNavigator nesnesinin ekle, sil gibi özellikleri ile veri ekleme ve
silme işlemleri de yapılabilir.
Buna göre listeleme ekranının kodları aşağıdaki gibi olacaktır.

unit rehber_lst;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls;

type
Tlst_frm = class(TForm)
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Edit1: TEdit;
tumu: TButton;
suz: TButton;
exit: TButton;
DBNavigator1: TDBNavigator;

76
Nesne Tabanlı Programlama I

procedure suzClick(Sender: TObject);


procedure tumuClick(Sender: TObject);
procedure exitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
lst_frm: Tlst_frm;

implementation

{$R *.dfm}

procedure Tlst_frm.suzClick(Sender: TObject);


begin
Table1.Filter:='Ad='''+Edit1.Text+'''' ;
Table1.Filtered := true;
end;

procedure Tlst_frm.tumuClick(Sender: TObject);


begin

Table1.Filtered := false;
end;

procedure Tlst_frm.exitClick(Sender: TObject);


begin
table1.Close;
lst_frm.Close;
end;

procedure Tlst_frm.FormShow(Sender: TObject);


begin
table1.active:=true;
end;

end.

77
Nesne Tabanlı Programlama I

Ana programımızın (rehber_unit) kodları da aşağıdaki gibidir:


unit rehber_unit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, DBTables, StdCtrls,rehber_unit2,rehber_ara,rehber_lst;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
KAYITEKLEME1: TMenuItem;
KAYITARAMA1: TMenuItem;
KaytListeleme1: TMenuItem;
k1: TMenuItem;
smeGreArama1: TMenuItem;
elefonNoileArama1: TMenuItem;
ehirAdleArama1: TMenuItem;
Table1: TTable;
procedure KAYITEKLEME1Click(Sender: TObject);
procedure KaytListeleme1Click(Sender: TObject);
procedure k1Click(Sender: TObject);
procedure smeGreArama1Click(Sender: TObject);
procedure elefonNoileArama1Click(Sender: TObject);
procedure ehirAdleArama1Click(Sender: TObject);

private
{ Private declarations }
public

{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

78
Nesne Tabanlı Programlama I

procedure TForm1.KAYITEKLEME1Click(Sender: TObject);


begin
kay_frm.show;

end;

procedure TForm1.KaytListeleme1Click(Sender: TObject);


begin
lst_frm.show;
end;

procedure TForm1.k1Click(Sender: TObject);


begin
form1.Close;
end;

procedure TForm1.smeGreArama1Click(Sender: TObject);


begin
secim:='1';
ara_frm.Show;
end;

procedure TForm1.elefonNoileArama1Click(Sender: TObject);


begin
secim:='2';
ara_frm.Show;
end;

procedure TForm1.ehirAdleArama1Click(Sender: TObject);


begin
secim:='3';
ara_frm.Show;
end;

end.

79
Nesne Tabanlı Programlama I

7.7.İşlem adımı 7:Silme Procedure yazılımı:


Programımız tamam gibi görünüyor ancak standart bir menülü programda olması gereken
silme seçeneğinin eksik olduğunu görmekteyiz. Şimdide menümüze silme seçeneği ekleyelim:
Bu işlem için form1 isimli ana formumuzdaki menü nesnesini tıklayarak gelen kısımda çıkış
seçili iken sağ tuş tıklayarak insert ederek yeni bir menü sekmesi ekleyelim ve adını silme
olarak düzenleyelim.

Şimdide silme işlemlerinin yaptıracağımız formu hazırlayalım:


Öncelikle File/New/Form seçeneğinden bir form ekliyoruz. Formun başlığını (caption) SİLME
EKRANI ve adını da sil_frm olarak değiştirip File/Save ile rehber_sil adıyla kaydediyoruz. Ana
formun uses kısmına da rehber_sil ifadesini ekliyoruz.
Formumuzu aynen arama formu gibi hazırlıyoruz ve üzerine fazladan 1 adet sil isimli buton
ile 1 adet te başlığında “Arama sonunda bulunan kaydı silmek isterseniz sil butonunu
tıklayınız” ifadesi olan label ekliyoruz. Formumuzun görüntüsü aşağıdaki gibi olacaktır.

Resim 58: Veri silme ekranı tasarımı

Arama kısımları daha önce anlatıldığı için silme kısmını açıklayalım: Bir kaydı silmek için önce
o kaydı aktif yapıyoruz. Table.RecNo ile aktif ettiğimiz kaydı table.delete ile siliyoruz. Sadece

80
Nesne Tabanlı Programlama I

silme sonunda hata olursa geri alınması olmayacağı için Msgdlg ile emin misiniz şeklinde bir
kontrol ekliyoruz. Bu durumda rehber_sil unitimizin kodları aşağıdaki gibi olacaktır:

unit rehber_sil;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBTables;

type
Tsil_frm = class(TForm)
Label1: TLabel;
Label2: TLabel;
sil: TButton;
ara: TButton;
exit: TButton;
edit1: TEdit;
edit3: TEdit;
edit4: TEdit;
edit5: TEdit;
edit6: TEdit;
edit7: TEdit;
edit8: TEdit;
edit2: TEdit;
Table1: TTable;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
sonraki: TButton;
procedure araClick(Sender: TObject);
procedure exitClick(Sender: TObject);

procedure sonrakiClick(Sender: TObject);


procedure silClick(Sender: TObject);
{ procedure FormCreate(Sender: TObject);}

81
Nesne Tabanlı Programlama I

private
{ Private declarations }
public
{ Public declarations }
end;

var
sil_frm: Tsil_frm;
secim:char;
table_index:integer;
bul:integer;
implementation

{$R *.dfm}

procedure Tsil_frm.araClick(Sender: TObject);

begin
bul:=0;
table1.Open;
table1.RecNo:=1;
while ((not(table1.eof)) and (bul=0)) do begin
if ((edit1.text=(table1['ad'])) or (edit2.text= table1['soyad'])) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage('Başka Kayıt Bulunamadı');
table1.Close;
end;

82
Nesne Tabanlı Programlama I

procedure Tsil_frm.sonrakiClick(Sender: TObject);


begin
bul:=0;
table1.Open;
table1.RecNo:=table_index+1;
while ((not(table1.eof)) and (bul=0)) do begin
if ((edit1.text=(table1['ad'])) or (edit2.text= table1['soyad'])) then begin
edit3.Text:= table1['ad'];
edit4.Text:= table1['soyad'];
edit5.Text:= table1['tel'];
edit6.Text:= table1['adres1'];
edit7.Text:= table1['adres2'];
edit8.Text:= table1['sehir'];
table_index:=table1.RecNo;
bul:=bul+1;
break;
end;
table1.Next;
end;
if bul=0 then showmessage('Başka Kayıt Bulunamadı');
table1.Close;
end;

procedure Tsil_frm.exitClick(Sender: TObject);


begin
table1.Close;
sil_frm.Close;
end;

procedure Tsil_frm.silClick(Sender: TObject);


begin
table1.Open;
table1.RecNo:=table_index;

Case MessageDlg( 'Kaydı silmek istiyormusunuz?'+#13+#10,


mtConfirmation,[mbYes, mbNo, mbCancel], 0) of
idYes : table1.Delete;
idNo : ;
idCancel :;
end; end;
end.

83
Nesne Tabanlı Programlama I

Programımız çalıştığında ekranları aşağıdaki gibi olacaktır:

Resim 59: Program ana ekranı

Resim 60: Veri kayıt ekranı

Resim 61: Veri arama ekranı

84
Nesne Tabanlı Programlama I

Resim 62: Veri listeleme ekranı

Resim 63: Veri silme ekranı

7.8.İşlem adımı 8: Form üzerine resim ekleme:


Son olarak ana formumuz üzerine birde resim ekleyelim. Bu iş için öncelikle additional
yaprağı üzerinden 1 adet image nesnesini form üzerine yerleştiriniz. Sonra image nesnesinin
özelliklerinden olan picture özelliğini tıklayınız ve gelen picture editor penceresinden load
seçeneğini seçiniz. Gelen ekrandan bilgisayarınızda önceden hazırladığınız ve ekrana koymayı
düşündüğünüz resmin dosyasını bularak seçiniz. Resminiz ekrana gelecektir. OK seçerek
işleminizi tamamlayınız.

85
Nesne Tabanlı Programlama I

Resim 64: resim editör

Resminiz artık açılış ekranında gelecektir. Programınız çalıştığında ana ekranınız aşağıdaki gibi
olacaktır.

Resim 65: Program ana ekran görünümü

Ana programımızın (form1) kod sayfası aşağıda verilmiştir:

unit rehber_unit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, DBTables, StdCtrls,rehber_unit2,rehber_ara,rehber_lst,rehber_sil,
jpeg, ExtCtrls;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
KAYITEKLEME1: TMenuItem;
KAYITARAMA1: TMenuItem;
KaytListeleme1: TMenuItem;

86
Nesne Tabanlı Programlama I

k1: TMenuItem;
smeGreArama1: TMenuItem;
elefonNoileArama1: TMenuItem;
ehirAdleArama1: TMenuItem;
Table1: TTable;
Silme1: TMenuItem;
Image1: TImage;
procedure KAYITEKLEME1Click(Sender: TObject);
procedure KaytListeleme1Click(Sender: TObject);
procedure k1Click(Sender: TObject);
procedure smeGreArama1Click(Sender: TObject);
procedure elefonNoileArama1Click(Sender: TObject);
procedure ehirAdleArama1Click(Sender: TObject);
procedure Silme1Click(Sender: TObject);

private
{ Private declarations }
public

{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.KAYITEKLEME1Click(Sender: TObject);


begin
kay_frm.show;

end;

procedure TForm1.KaytListeleme1Click(Sender: TObject);


begin
lst_frm.show;
end;

87
Nesne Tabanlı Programlama I

procedure TForm1.k1Click(Sender: TObject);


begin
form1.Close;
end;

procedure TForm1.smeGreArama1Click(Sender: TObject);


begin
secim:='1';
ara_frm.Show;
end;

procedure TForm1.elefonNoileArama1Click(Sender: TObject);


begin
secim:='2';
ara_frm.Show;
end;

procedure TForm1.ehirAdleArama1Click(Sender: TObject);


begin
secim:='3';
ara_frm.Show;
end;

procedure TForm1.Silme1Click(Sender: TObject);


begin
sil_frm.Show;
end;

end.

88
TEKNİK BİLİMLER MESLEK YÜKSEKOKULU

Öğretim Görevlisi Ali Osman Yağlıoğlu 1964 yılında Amasya’da dogdu. İlk ve ortaokulu
Suluova ilçesinde tamamladıktan sonra Amasya Endüstri Meslek Lisesini bitirdi. 1984
yılında Erciyes Üniversitesi, Mühendislik Fakültesi, Elektronik Mühendisliği bölümünden
mezun olduktan sonra askerlik görevini yedek subay olarak Amasya’da tamamladı. 1988
yılında Mersin Meslek Yüksekokulunda Öğretim görevlisi oldu. 1994 yılında Çukurova
Üniversitesi, Elektrik-Elektronik Mühendisliği bölümünde Bilgisayar Bilimleri konusundaki
Yüksek Lisansını tamamladı.
Halen Mersin Üniversitesi, Teknik Bilimler Meslek Yüksekokulu’nda Öğretim Görevlisi
olarak çalışmakta olan Ali osman Yağlıoğlu, evli ve 2 çocuk babasıdır.

aosman@mersin.edu.tr

Tel: 0 (324) 3610001/71009

You might also like