Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[DEV KONU]Delphi Tanıyalım
#1
Delphi’yi açtiginizda karsiniza ana form, component palet ve object inspector (özellikler ve olaylar penceresi) gelir.
FORM
156ta.jpg
Form yazdigimiz programlar için kullanici arabiriminin olusturuldugu bir nesnedir diyebiliriz. 

COMPONENT PALET
140qb.jpg
Bu palet üzerinde delphi’de kullanacagimiz kontroller (nesneler) bulunur. Bunlar programlarimiz için arabirim olusturmakta kullandigimiz form üzerine yerlestirilir. 


OBJECT INSPECTOR
133eq.jpg

Visual dillerde ve dolayisiyla delphi’de her kontrolün özeliikleri vardir. Bu kontrollerin özelliklerine program dizayn edilirken object inspector denilen pencereden ulasilir. Bu pencerede görüldügü gibi iki sekme bulunmaktadir. Bunlardan birisi properties yani özellikler, digeri ise events yani olaylardir. Olaylarin ne demek oldugundan ileride bahsedilecektir. Form üzerinde hangi nesne seçiliyse object inspector o nesnenin özelliklerini gösterir. Mesela yandaki sekilde object inspector form1 nesnesinin özelliklerini göstermektedir.

Simdi sirayla delphi’de kullanacagimiz componentleri (nesneleri) ve bunlarin özelliklerini anlatmaya çalisacagim.
Delphi LabelIlk olarak edit bileseni ve bunun özellikleriden (properties) bahsedecegiz.
Kullanicilarin bilgi girmesi için kullanilan nesnedir.
Sayet bu özellik true ise, form üzerindeki nesneler arasinda tab tusu ile dolasirken edit objesi üzerine gelindiginde içerisindeki ifadenin seçili olmasini saglar. 
Autosize: Sayet bu özellik true ise, edit objesinin yazi fontu büyütüldügünde veya küçültüldügünde edit nesnesi de ayni oranda büyür veya küçülür. Yani yazinin tamami görülebilir
Borderstyle: Sayet bu özellik bssingle ise edit nesnesi etrafindaki çerçeve görünür, bsnone ise edit nesnesi etrafindaki çerçeve görünmez.
Charcase: Sayet bu özellik ecnormal ise edit nesnesi içerisine normal ifade yazilabilir. eclowercase olmasi durumunda ifadenin hepsi küçük harfe çevrilerek yazilir. ecuppercase olmasi durumunda hepsi büyük harfe çevrilerek yazilir.
Color: Edit objesinin arka plan rengini degistirmeyi saglar.
Ctl3d: Sayet bu özellik true ise nesne 3 boyutlu olarak görünür.
Cursor: Nesne üzerine gelindiginde cursor’un alacagi simgeyi seçmek için kullanilir.
Enabled: Sayet bu özellik true ise obje aktiftir, yani çalisma sirasinda obje üzerine tab tusuyla ulasabilir ve üzerinde degisiklik yapilabilir. Sayet bu özellik false ise obje pasiftir, yani obje üzerine tab tusuyla ulasilamaz ve üzerinde degisiklik yapilamaz.
Font: Nesnenin font özelliklerini degistirmek için kullanilir.
Height: Editbox’un yüksekligini degistirmek için kullanilir.
Hint, ShowHint: Kullandiginiz programlarda obje üzerine mouse gidildiginde o objenin hemen altinda isleviyle ilgili bir açiklma görünür. Iste bu açiklamayi sizde bu özellikler vasitasiyla kendi programlarinizda yapabilirsiniz. Objenin hint özelligine altta görmek istediginiz açiklamayi yazdiktan sonra, showhint özelligini true yaparsaniz programi çalistirdiginizda ve özelliklerini degistirdiginiz obje üzerine gittiginizde yazdiginiz açiklamanin o objenin hemen altinda belirdigini görürsünüz.
Left: Objenin formun üzerinde soldan ne kadar uzakta bulunacagini belirlemenizi saglar.
Maxlength: Nesnenin içerisine girilecek ifadenin max uzunlugunu belirlemede kullanilir.
Name: Her nesnenin bir ismi vardir. Bu isimler nesneleri birbirinden ayirir.
Passwordchar: Sayet edit nesnesi bir sifre bilgisi alacaksa, bu nesne içerisine yazilan harflerin hangi karakterle maskelenecegini belirlemede kullanilir. Örnegin, buraya * isareti konulursa, edit nesnesi içerisne yazilan her harf * olarak belirir.
Read Only: Eger bu özellik true ise kullanici edit nesnesi içerisindeki bilgiye müdahelede bulunamaz.
TabOrder: Form üzerindeki nesneler üzerinde tab tusuna basildiginda bir sonraki nesneye geçilir. Iste tab tusuyla nesneler arasinda hangi sirada dolasilacagini tab order özelligi belirler. Buradaki sayi nesneye kaçinci sirada gelinecegini belirlemede kullanilir.
Tabstop: Sayet bu özellik false ise objeye tab tusu ile ulasilamaz.
Text: Edit nesnesi içerisine daha önceden yazilan veya kullanici tarafindan runtime aninda girilen ifade bu özellik vasitasi ile ögrenilir.
Top: Nesnenin formun üztünden ne kadar uzaklikta olacagini belirlemede kullanilir.
Visible: Sayet bu özellik false ise program çalistigi zaman obje form üzerinde görünmez.
Width: Objenin genisligini belirlemede kullanilir.


Csdropdown: Sayet bu seçenek seçili ise, kullanici bilgi girisi yapabilir. Ayrica asagi dogru açildigi için seçeneklerden birini seçebilir.
Csdropdownlist: Sayet bu seçenek seçili ise, kullanici bilgi girisi yapamaz. Asagi yukari ok tuslarini kullanabilir. Ayrica combobox üzerindeyken vir harfe bastigi zaman o harf ile baslayan seçenek combobox’da görüntülenir. Asagi dogru açildigi için seçeneklerden birini seçebilir.
Cssimple: Sayet bu seçenek seçili ise, kullanici bilgi girisi yapabilir. Bu seçenekte asagi dogru açilma yoktur. Seçenekleri asagi yukari yön tuslarini kullanarak bulabilirsiniz.
Buraya kadar özelliklerden bahsettik. Event’lere geçmeden önce delphi’nin kod yazma penceresi hakkinda biraz bilgi sahibi olmak gerekir.
Kod penceresine formun arkasindaki pencereye tiklanarak ulasilir.

67xe.jpg

Burada değişken, procedure ve fonksiyon tanımlamak için Private ve Public olarak ayrılmış iki kısım görülmektedir. Şayet bir procedure private kısmında tanımlanmışsa bu procedure’e sadece o unit içerisinden ulaşılabilir. ( Bu arada delphi’de her form bir unit’dir.). Public’de tanımlanan bir procedure’e ise diğer unitlerden de ulaşılabilir. Değişken, procedure ve function tanımla şekli pascal ile aynı olduğu için burada tekrar anlatılmayacaktır.
Visual dillerin hepsinde siz bir objeye tıkladığınızda, o obje üzerine mouse ile gittiğinizde, o obje üzerinde bir değişiklik yaptığınızda çeşitli olaylar meydana gelir. Siz bu olaylar meydana geldiğinde hangi kodun işlemesini istiyorsanız ilgili olay procedure’une giderek istediğiniz kodu yazarsınız. Bu procedurler sizler için otomatik olarak oluşturulur. Sizin yapmanız gereken tek şey bu procedure’e giderek istediğiniz kodları yazmaktır. Delphi’de bir visual dil olduğuna göre yukarıda anlatılanlar delphi için de geçerlidir. Buna göre sizin tek bilmeniz gereken hangi olayın ne zaman gerçekleştiğidir.
Şimdi edit nesnesi baz alınarak sizlere hangi olayların ne zaman gerçekleşeceği anlatılacaktır. 
OnChange: Nesne üzerinde bir değişiklik olduğu zaman bu olay meydana gelir. Mesela siz edit nesnesi içerisine bir harf eklediğinizde veya sildiğinizde bu olay meydana gelir.
OnClick: Nesne üzerine mouse’un sol tuşu ile tıkladığınızda bu olay meydana gelir.
OnDblClick: Nesne üzerine mouse’un sol tuşu ile çift tıkladığınızda bu olay meydana gelir.
OnEnter: Kontrol o obje üzerine geldiğinde çalışır. Kontrolden kasıt cursordür. Yani siz bir obje üzerine ilk geldiğinizde çalışan olaydır.
OnExit: O obje üzerinde ayrılırken oluşur.
OnKeydown: Obje üzerinde klavyden bir tuşa basıldığında meydana gelir. Basıldığı sürece meydana gelmeye devam eder. OnKeypress’in tanımadığı del, end, pagedown,pageup,insert, ctrl, alt gibi tuşarı da tanır. OnKeypress olayından sonra meydana gelir.
OnKeypress: Obje üzerinde klavyden bir tuşa basıldığında meydana gelir.
OnKeyup: Obje üzerinde basılan tuş bırakıldığında meydana gelir.
OnMouseDown: Mouse’un tuşlarından biri ile bir obje üzerine basıldığında meydana gelir.
OnMouseMove: Mouse ile bir obje üzerine gelindiğinde bu olay meydana gelir.
OnMouseup: Mouse’un tuşlarından biri ile obje üzerine basıldıktan sonra bu tuş bırakıldığında bu olay meydana gelir.
Form’un oncreate özelliği ise form ilk çalışırken meydana gelir.
Bir olaya ulaşmak için objenin istenen olayı object inspector’ın events sayfasında bulunduktan sonra yanındaki beyaz boşlukta mouse ile çift tıklamak yeterlidir.
***Bir objenin bir özelliğine kod yazarak ulaşmak için şu yazılım kuralı uygulanır:
Objenin name’i .ulaşılmak istenen özellik
Şimdi artık ilk örnek programımızı yapabiliriz.
Örnek1: Bir formumuz ve bu form üzerinde bir butonumuz olsun. Bu butonumuzun caption’ı k&apat olsun. Bu butona tıklandığı zaman formun kapanması istensin. Bunun çin önce aşağıdaki gibi bir form oluşturulur.

55wj.jpg

Daha sonra bu butonun onclick olayına gidilip şu kod yazılır.

PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end; 


Close: bu komut formları kapatmak için kullanılır.
Daha sonra programı çalıştırmak için F9 tuşuna basmak yeterlidir. Ya da formun sol üst köşesindeki yeşil run tuşuna basılabilir.
Örnek2: Form üzerine üç editbox bir de buton ekleyelim. İki editbox’a sayıları girip butona tıkladığımız zaman üçüncü editbox’da iki sayının toplamını görelim.

47lt.jpg
Burada bilinmesi gereken önemli husus şudur. Editbox’ların içerisine girilen ifadelerin hepsi string ifade olarak kabul edilir. Bu yüzden şayet girilen değerler üzerinde matematiksel işlem yapılacaksa önce bu değerlerin nümeriğe çevrilemsi gerekir.
Ayrıca sonuç yine bir edit objesi içerisine yazdırılacaksa bu obje içerisine sadece string ifadeler yazılabildiğine göre sonucun tekrar stringe çevrilmesi gerekir.
Bu işlemlerin yerine getirilebilmesi için şu iki komutun iyi bilinmesi gerekir.
StrtoInt(string değer): String bir değeri nümeriğe çevirir.
InttoStr(numeric değer):Numeric değeri stringe çevirir.
Bunları öğrendiğimize göre topla butonunun onclick event’ine şu kod yazılmalıdır.

PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.text:=inttostr(strtoint(edit1.text)+strtoint (edit2.text));
end; 


Örnek3: Vize ve final notları girildiğinde ortalamayı yuvarlayarak veren bir program yazalım.
37ae1.jpg
PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
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; 


Buraya kadar hep procedure’ler bizim için oluşturuldu. Peki biz delphi’ye bir procedure veya function’ı nasıl ekleyeceğiz?
Önce procedure veya function’ı önce kullanım amacımıza göre private veya public bölümünde tanımlamalıyız. Daha sonra procedure’lerin yazıldığı bölüme eklemeliyiz.
Mesela yukarıdaki örneği bir procedure yazarak yapmaya çalışalım. Önce private bölümünde function’ımızı tanımlamalıyız.
private
function ortala(vize,final6lYWzE.gifte)6lYWzE.gifte;
bu bölümü bu şekilde tanımladıktan sonra tanımlamanın hemen yanındayken CTRL+SHIFT+C tuşlarına beraber basarsanız aşağıda sizin için function’un gövdesinin sizin için aşağıda oluşturulduğunu görürsünüz. 
PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=inttostr(ortala(strtoint(edit1.text),s trtoint(edit2.text)));
end;
function TForm1.ortala(vize, final: byte): byte;
var
ort:real;
begin
ort:=vize*0.4+final*0.6;
if (ort-trunc(ort))>0.5 then
ortala:=trunc(ort)+1
else
ortala:=trunc(ort);
end; 

Buradaki tform1 bu procedure veya fonksiyonun form1 isimli forma ait olduğunu gösterir. Aynı function’u form2’de yazmış olsaydık, bu kısım TForm2 olacaktı.
Örnek4: Şimdi aşağıdaki formu oluşturalım ve seçilen seçeneğe göre butona tıklandığında istenilen işlemi yaptıralım.

26ed.jpg

PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
begin
if radiobutton1.checked=true then
edit3.Text:=inttostr(strtoint(edit1.text)+strtoint (edit2.text));
if radiobutton2.checked=true then
edit3.Text:=inttostr(strtoint(edit1.text)* strtoint(edit2.text));
if radiobutton3.checked=true then
edit3.Text:=inttostr(strtoint(edit1.text) div strtoint(edit2.text));
end; 


Örnek5: Aşağıdaki formu oluşturlaım ve edit1’den edit2’ye kadar olan sayıları butona tıkladığımızda listbox!a ekleyelim.

16uu1.jpg

Burada bilinmesi gereken şudur. Listbox’ın içerisine sadece string ifadeler eklenebilir.
Showmessage(string ifade): Bu komut parantez içerisinde verilen ifadeyi bir mesaj kutusunda görüntüler.


PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
listbox1.Clear;//listbox'ın içini temizler
if strtoint(edit1.text)> strtoint(edit2.text) then
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
listbox1.items.add(inttostr(i))
else
showmessage('ilk değer büyük olmalı');
end; 


Örnek 6: Yukarıdaki örnekte edit1’den edit2’ye kadar olan sayıları listbox içerisine ekliyorduk. Bu örnekte aynı sayıların faktoriyellerini listbox içerisine ekliyeceğiz.
Önce private bölümünde fonksiyon tanımlandı.
private
function faktoriyel(gelen:integer):integer;

PHP Kod:
Kod:
function TForm1.faktoriyel(gelen: integer): integer;
var
a,i:integer;
begin
a:=1;
for i:=1 to gelen do
a:=a*i;
faktoriyel:=a;
end; 



PHP Kod:
Kod:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
listbox1.Clear;
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
listbox1.items.add(inttostr(faktoriyel(i)));
end; 
Ara
Cevapla }}}}


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping