Professional Documents
Culture Documents
Ders Notu
Ders Notu
Ders Notu
BİLGİSAYAR PROGRAMCILIĞI
NESNE TABANLI
PROGRAMLAMA I
NESNE TABANLI
PROGRAMLAMA I
MERSİN
2021
Nesne Tabanlı Programlama I
ÖNSÖZ
Değerli Öğrenciler,
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
vi
Nesne Tabanlı Programlama I
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.
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.
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.
2
Nesne Tabanlı Programlama I
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.
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.
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
Ö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
6
Nesne Tabanlı Programlama I
2.1.Basit Tipler:
7
Nesne Tabanlı Programlama I
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
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;
cevap:byte;
kayit:tkayit;
9
Nesne Tabanlı Programlama I
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.
Karar verme denildiğinde genel olarak akla gelen if deyimidir. If deyiminin delphide
kullanılış Formu:
EĞER <..> ifadesi doğru ise O ZAMAN <..> işlemini yap [DEĞİLSE <..> işlemini yap.]
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.
Ö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 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.
Ö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:
var
altsn,ustsn,sayac,tplam :integer;
begin
16
Nesne Tabanlı Programlama I
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:
17
Nesne Tabanlı Programlama I
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 2: Form üzerine 1 edit kutusu, 1buton ve 1 label nesnesini istediğiniz şekilde
yerleştiriniz.
label1.Caption:=edit1.Text;
18
Nesne Tabanlı Programlama I
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.
19
Nesne Tabanlı Programlama I
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.
Adım 6: Denemelerinizi tamamladıktan sonra formun sol üst köşesindeki kapat kutucuğunu
tıklayarak programı sonlandırınız.
Örnek 2: Bir ekran üzerinde basketbol için bir skorbord oluşturmaya çalışalım.
Çözüm:
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)
Çö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.
Çözüm adımı 3:Nesnelerin caption ve text özelliklerini ayarlayarak ekranda hangi nesnenin
hangi işi yapacağını anlaşılır hale getirelim.
-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.
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:
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
begin
skor1:=skor1+1;
label1.caption:=inttostr(skor1);
end;
begin
skor1:=skor1+2;
label1.caption:=inttostr(skor1);
end;
25
Nesne Tabanlı Programlama I
begin
skor1:=skor1+3;
label1.caption:=inttostr(skor1);
end;
begin
label1.caption:=inttostr(skor1);
end;
begin
skor2:=skor2+1;
label2.caption:=inttostr(skor2);
end;
26
Nesne Tabanlı Programlama I
begin
skor2:=skor2+2;
label2.caption:=inttostr(skor2);
end;
begin
skor2:=skor2+3;
label2.caption:=inttostr(skor2);
end;
begin
label2.caption:=inttostr(skor2);
end;
27
Nesne Tabanlı Programlama I
begin
skor1:=0;
skor2:=0;
label1.caption:=inttostr(skor1);
label2.caption:=inttostr(skor2);
end;
28
Nesne Tabanlı Programlama I
Çö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
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
Çö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
begin
s3.Text:=inttostr(strtoint(s1.Text)+strtoint(s2.Text));
end;
32
Nesne Tabanlı Programlama I
begin
s3.Text:=inttostr(strtoint(s1.Text)-strtoint(s2.Text));
end;
begin
s3.Text:=inttostr(strtoint(s1.Text)*strtoint(s2.Text));
end;
begin
s3.Text:=inttostr(trunc((strtoint(s1.Text)/strtoint(s2.Text))));
end;
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
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.
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:
begin
s1.Text:='';
s2.Text:='';
s3.Text:='';
end;
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
begin
end;
35
Nesne Tabanlı Programlama I
begin
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:
var
uzunluk,say,virgul : integer;
begin
virgul:=0;
uzunluk:=length(s1.text);
end;
end;
36
Nesne Tabanlı Programlama I
unit calculator;
interface
uses
//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;
37
Nesne Tabanlı Programlama I
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
begin
s3.Text:=inttostr(strtoint(s1.Text)+strtoint(s2.Text));
end;
begin
s3.Text:=inttostr(strtoint(s1.Text)-strtoint(s2.Text));
end;
begin
s3.Text:=inttostr(strtoint(s1.Text)*strtoint(s2.Text));
end;
38
Nesne Tabanlı Programlama I
begin
s3.Text:=inttostr(trunc((strtoint(s1.Text)/strtoint(s2.Text))));
end;
begin
s1.Text:='';
s2.Text:='';
s3.Text:='';
end;
var
uzunluk,say,virgul : integer;
begin
virgul:=0;
uzunluk:=length(s1.text);
end;
end;
39
Nesne Tabanlı Programlama I
var
uzunluk,say,virgul : integer;
begin
virgul:=0;
uzunluk:=length(s2.text);
end;
end;
end.
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
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:
edit1.CharCase:=ecUpperCase;
edit1.CharCase:=ecLowerCase;
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”
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.
42
Nesne Tabanlı Programlama I
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.
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:
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.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 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.
begin
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;
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
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:
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.
İş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.
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
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.
Listbox içerisinde seçilmiş olan seçeneğin string ifadesini almak için ise;
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:
var
sira :integer;
gun:string[10];
49
Nesne Tabanlı Programlama I
begin
sira :=listbox1.itemindex+1;
gun :=listbox1.items.Strings[listbox1.itemindex];
end;
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
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.
51
Nesne Tabanlı Programlama I
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.
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.
Combobox içerisinde seçilmiş olan seçeneğin sting ifadesini almak için ise;
Combobox1.items.Strings[combobox1.itemindex];
52
Nesne Tabanlı Programlama I
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:
var
sira :integer;
gun:string[10];
begin
sira :=combobox1.itemindex+1;
gun :=combobox1.items.Strings[combobox1.itemindex];
end;
Combobox1.items.SetText('PAZARTESİ'#13'SALI'#13'ÇARŞAMBA'#13'PERŞEMBE'#13'CUMA'#
13'CUMARTESİ'#13'PAZAR');
53
Nesne Tabanlı Programlama I
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:
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:
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.
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
end;
55
Nesne Tabanlı Programlama I
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]
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.
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)
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
58
Nesne Tabanlı Programlama I
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
4-Table alanları ve tiplerini oluşturabilmeniz için create Paraodx 7 table ekranı gelir.
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
61
Nesne Tabanlı Programlama I
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.
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
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.
63
Nesne Tabanlı Programlama I
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.
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.
Ö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;
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.
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}
end;
70
Nesne Tabanlı Programlama I
begin
bul:=0;
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;
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;
73
Nesne Tabanlı Programlama I
end.
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.
75
Nesne Tabanlı Programlama I
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
var
lst_frm: Tlst_frm;
implementation
{$R *.dfm}
Table1.Filtered := false;
end;
end.
77
Nesne Tabanlı Programlama I
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
end;
end.
79
Nesne Tabanlı Programlama I
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);
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}
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
83
Nesne Tabanlı Programlama I
84
Nesne Tabanlı Programlama I
85
Nesne Tabanlı Programlama I
Resminiz artık açılış ekranında gelecektir. Programınız çalıştığında ana ekranınız aşağıdaki gibi
olacaktır.
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}
end;
87
Nesne Tabanlı Programlama I
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