13 Nisan 2012 Cuma

HESAP MAKİNESİ UYGULAMASI

Hesap Makinesi Uygulaması

Şimdide hesap tabanlı bir örnek üzerinde çalışacağız.Bu örnek dört işlemi kolaylıkla yapabilecektir.

- Yeni Uygulama Başlatın

File - New - Application menü seçenekleri ile yeni bir proje başlatın.

Bu programımızda; hesaplanan sonuçları görmek için Label , kullanıcının sayıları girebilmesi için edit kutusu ve işlemi yapabilmesi için de button kontrollerini kullanacağız.

- Formun Tasarımını Yapın

Sözü edilen araçları Component paletin Standart sayfasından alarak form tasarımını yapın.

Form üzerindeki Label ve Button bileşenlerin Caption özelliklerini aşağıdaki değiştirin.

                                                                                                                                                                                                    

- Bileşenlerin Özelliklerini DeğiştirinSonuç İçin kullanacağımız Label4 elemanının Name özelliğini değiştirerek lblsonuc yapın.

Form üzerindeki düğmeleri sırasıyla btntopla,btncikar,btncarp ve btnbol olarak değiştirin aynı yöntemle.

- Düğmeler İçin Program Kodunu Yazın

Her bir düğmeyi tıklayarak onlara ait prosedürlere kodları yazabilirsiniz.

Toplama İşlemi İçin Aşağıdaki Kod Kullanılacaktır.


procedure TForm1.btntoplaClick(Sender : TObject); begin //iki sayıyı topla lblsonuc.Caption:=intToStr(StrToint(Edit1.text)+StrToint(Edit2.text)); end; end.
Açıklama : Burada Edit1 ve Edit2 kutularının içerisindeki sayısal olmadığı için önce onları StrToInt fonksiyonu ile sayısala çeviriyoruz.Daha sonra hesaplana sonuç sayısal olmayan (string) lblsonuc etiketi içerisine aktarılacağı için dönüştürme yapyıoruz.Bu iş içinde IntToStr fonksiyonunu kullanıyoruz.Çıkarma işlemi için aşağıdaki kodu kullanacağız.


procedure TForm1.btncikarClick(Sender : TObject); begin //iki sayıyı çıkar lblsonuc.Caption:=intToStr(StrToint(Edit1.text)-StrToint(Edit2.text)); end; end.

Çarpma işlemi için aşağıdaki kodu kullanacağız.


procedure TForm1.btncarpClick(Sender : TObject); begin //iki sayıyı çarp lblsonuc.Caption:=intToStr(StrToint(Edit1.text)*StrToint(Edit2.text)); end; end.

Bölme işemi için aşağıdaki kodu kullancağız.


procedure TForm1.btntoplaClick(Sender : TObject); begin //iki sayıyı Böl lblsonuc.Caption:=FloatToStr(StrToint(Edit1.text)/StrToint(Edit2.text)); end; end.
Bölme işleminde farklı bir durum ortaya çıkmaktadır.Çünkü elde edilecek sonuç ondalık olabileceği için bu defa FloatToStr fonksiyonunu kullanıyoruz



LİSTEDEKİ ELEMENLERI SİLME

Listedeki Elemanları Silin
Listeye eklenen elemanları silmek için Button2 (Sil) düğmesi için kod yazacağım.Yazacağım kod listedeki seçili elemanı silecektir.Şİmdi Butona çift tıklayarak kodu yazın.


procedure TForm1.Button2Click(Sender:TObject);
begin
//Listedeki seçili elemanı silListview1.items.delete(Listview1.itemindex);
end;
end.



Programı Kapatacak Kodu Yazın

Şimdi Button3 (Çık) düğmesi için kullanacağımız ve aynı zamanda programdan çıkacak kodu yazıyorum.

procedure TForm1.Button3Click(Sender:TObject);
begin
//Programdan Çıkclose;
end;
end.



Programı Çalıştırın ve Test Edin

Şimdi F9 Tuşuna basın.Program çalışacaktır.ilgili Kutuları bilgi girin yada hazır olarak seçin ve ekle düğmesine basarak listeye eklenmesini sağlayın.

Çalışma Zamanı Hataları İçin Önlem Alın
Çalışma zamanında belirli şartların sağlanmaması durumunda programınız hata vericektir.Örneğin listeden eleman silmek için öncelikle bir elemanı seçme şartı vardır.Çünkü yazılan program satırı sadece seçili bir elemanı silmektedir.Eğer seçili eleman yoksa doğal olarak hata verecektir.

Bu durumun önüne geçmek için eğer kullanıcı eleman seçmemiş ise önce listeden elemanı seçmesini sağlyacağız.

Bunun için Button2(Sil) düğmesi için yazılan kodu aşağıdaki gibi düzenlememiz gerekecektir.


procedure TForm1.Button2Click(Sender: TObject);
begin
if Listview1.itemindex < 0 thenShowMessage('Önce Listeden Eleman Seçin!...')
else
//Listedeki seçili elemanı sil
Listview1.items.delete(Listview1.itemindex);
end;
end.


LİSTEYE ELEMAN EKLEME

Button1 Ekle düğmesi kullanıldığında Edit1,ComboBox1,DataTimePicker1 kutularının içeriğini ListView1 in sırasıyla " Adı Soyadı", "Bölümü" ve "Kayıt Tarihi" sütünları altına ekleyecektir.

Bunun için düğmeyi çift tıklayın ve kod pencersinde açılacak olan Button1Click prosedürüne aşağıdaki kodu yazın.



procedure TForm1.Button1Click(Sender:TObject);

//Statik bir değişken tanımlaconst s:integer=0;
begin

//Eğer listede eleman yoksa sayacı sıfırla
if Listview1.items.count=0 then s:=0;

//Yeni eleman ekleListview1.items.add;

//satır İçerikleri
//Birinci SütunListview1.items.item[s].Caption:=edit1.text;

//İkinci SütunListview1.items.item[s].Subitems.add(ComboBox1.text);

//Üçüncü SütunListview1.items.item[s].Subitems.add(DateToStr(DateTimePicker1.Date);

//sayacı bitirs:=s+1;
end;
end.

ÖĞRENCİ KAYIT UYGULAMASI







Öğrenci Kayıt Uygulaması


Aşağıda vereceğim uygulamada Delphi'nin bir çok özelliğini bizzat kullanarak programlama alanına sağlam bir adımla girmiş olacaksınız.Bu örnekte form tasarımını,bileşenlere ait özelliklerin değiştirilmesini,program kodu kullanılmasını bulacaksınız.

Programda eklenecekler şöyledir:

Component paletin Standard kısmında Label bileşenini bulun ve tıklayarak form üzerine yerini almasını sağlayın bundan 3 Adet ekleyin.
Aynı yerde Edit,ComboBox elemanlarından Birer tane ve üç tane Button ekleyin.
Şimdi Component paletin Win32 sayfasını tıklayın bu gruptaki DateTimePicker ve Listview bileşenlerini tıklayarak form üzerine yer almasını sağlayın.






Elemanların Etiketlerini DeğiştirinForm üzerinde yer alan Label1,Label2,Label3 elemanları açıklama amacıyla kullanılacakları için sırasıyla bu elemanları seçtikten sonra Object Inspector penceresindeki Caption özelliklerini değiştirin.Benzer Şekilde form üzerindeki buttonları seçin ve caption özelliklerini Ekle,Sil,Çık olarak ayarlayın.Formun Caption Özelliğinide "Öğrenci Kayıt Formu" olarak Düzenleyin.






Başlangıç SeçenekleriProgram çalıştıktan sonra daha önce ayarlanmış başlangıç değerleri kullanmak ve programı bunlar vasıtasıyla yönlendirmek oldukça önemli bir adımdır.

Şimdi buarada bölüm isimleri dışarıdan değilde hazır olarak ComboBox1 kutusundan seçileceği için bu değerleri tasarım zamanında iken girmeniz gerekir.Bunun için ComboBox1 kutusunu seçin ve Object Inspector penceresinde kendisine ait olan String List Editor ' e kutuda bulunması istediğiniz seçenekleri girin. Ok Düğmesi ile editör penceresini kapatın.




ComboBox elemanının Items özelliği String List Editor ile değiştiriliyor



Şu ana kadar programımız için bir arabirim tasarladık ve yaptığımız tüm işlemleri tasarım zamanında gerçekleştirdik.Şimdi ise arabirimimiz ile tümleşik olarak çalışılacak fakat etkisi çalışma zamanında görülecek program kodlarını yazacağız.Bu kodlar çalışma zamanında bir olayı cevaplayacaktır.Örneğin bir düğme tıklandığında ona karşılık ButtonClick olayını çalıştıracaktır.Form yüklendiğinde Form1Create olayını çalıştıracaktır.işte tüm bu işlemler cevap verecek olan kodlar olay yakalayıcısı(Event handler) olarak tanımlanır.Bir aksiyona karşı tepki verirler.

- Şimdi Formun herhangi boş bir noktasına tıklayın.Forma ait özellikler ve olaylar Object Inspector penceresinde yer alacaktır.

- Events sekemsini tıklayın.Forma ait olaylar listesi yer alacaktır.

- OnCreate olayına Çift tıklayın.

- Kod penceresinde prosedür yerini alacaktır


Örnek:
procedure TForm1.FormCreate(Sender:TObject);
begin

end;
end.




Bu prosedür içerisine yazılan kodlar program çalıştıktan sonra aktif hale gelecekve giriş değerlerini hazır bulunduracaktır.

Başlangıç İçin yazacağımız kodlar şöyledir :

Not: // Bu şekilden sonra gelen yazılar açıklamadır program kodu değil ve program çalışıncada gözükmez açıklama niteliği taşır.


procedure TForm1.FormCreate(Sender:TObject);
begin
//ComboBox1 içinde Bilgisayar aktif olsunComboBox1.itemindex:=0,

//Listview1 listesi için sütünları ayarlar
Listview1.Viewstyle:=vsReport;

//Sütun ekleListview1.Columns.Add;

//ilk sütun için başlık ayarla
Listview1.Columns.Items[0].Caption:='Adı Soyadı';

//ilk sütunun genişliğini ayarlaListview1.Columns.Items[0].width:=100;

//sütun ekleListview1.Columns.add;

//ikinci sütun için başlık ayarlaListview1.Columns.Items[1].Caption:='Bölümü';

//ikinci sütunun genişliğini ayarlaListview1.Columns.Items[1].width:=100;

//sütun ekleListview1.Columns.add;

//Üçüncü sütun için başlık ayarlaListview1.Columns.Items[2].Caption:='Kayıt Tarihi';

//Üçüncü sütunun genişliğini ayarla
Listview1.Columns.Items[2].width:=100;
end;
end.




6 Nisan 2012 Cuma

İF / THEN / ELSE Yapısını Kullanarak Örnek Bir Program Yazalım... Nasıl Mı ?

     Arkadaşlar, bu hafta size if / then / else yapısını kullanarak vize-final notunun ortalamasını hesaplayan bir program nasıl yazılır onu göstereceğim.

      -Programımızı yazmak için öncelikle form (çalışma) alanımızı açalım ve daha sonra form alanımıza 3adet label ekleyip object ınspector kutumuzdan label'larımızın isimlerini ;
   
-Label1= vize
-Label2= final ve
-Label3= ortalama

olarak değiştirip kaydedelim ve bir adette buton ekleyip butonumuzun adınıda aynı şekilde object ınspector alanından "ortalama" adını vererek değiştirelim. Ve form alanımıza 3 adette edit kutucuğu yerleştirelim ve bunlar sırasıyla Label kutularımızın karşısına gelecek şekilde olsun ;












     






Daha sonra butonumuzu çift tıklayarak kod bölümümüze girelim  ve programımızı yazmaya başlayalım. program başlığının altında begin blogunu göreceğiz. Begin blogumuzdan önce bir değişken tanımlayalım. Ve bu değişkenimize "ort" diyelim. Programımız işlem sırasına göre şöyle olmalıdır ;


  var
ort : real;

begin

ort:=strtoint(edit1.text)*0.4+strtoint(edit2.text)*0.6;

if (ort-trunc/ort))>0.5 then

edit3.text:=inttostr(trunc(ort)+1)

else

edit3.text:=inttostr(trunc(ort));

end;

end.

        Programımızı tamamladıktan sonra F9 tuşuna basarak programımızı çalıştırabiliriz.

        Yazdığımız programda aklınıza takılabilecek ifadeler ;


1-Strtoint nedir ? 

-String olan değerimizi integer yapar.

2-Trunc nedir ?

-Oracle / PLSQL olarak, trunc fonksiyonu ondalık basamak belirli sayıda kesilmiş bir sayı döndürür.
 Trunc işlevi için sözdizimi şöyledir:

   -trunc (sayı, [decimal_places])

 decimal_places için kesecek ondalık basamak sayısıdır. Bu değer bir tamsayı olmalıdır. Bu parametre atlanırsa, trunc işlevi 0 ondalık sayı keser.

3-inttostr nedir ?

-integer olan değerimizi string yapar.