Sozluk Sitesi
  Delphiye Giris
 

DELPHI’YE GİRİŞ
Delphi, Borland’ın derleyici teknolojisindeki en iyi yanlarını alan, bunları Borland’ın veri tabanı teknolojisindeki en iyi yanlarıyla birleştiren ve yeni görsel programlama araçlarını kullanan yeni, özgün bir üründür. Bu özellikleriyle karma bir ürün olan Delphi, programcılara hem standart uygulamaları hem de istemci/sunucu uygulamalarını hızlı hazırlama olanağını eşi görülmemiş bir biçimde sağlamaktadır. Başka bir değişle Delphi, Borland’ın derleyici ve veri tabanı teknolojilerini güçlü bir araçta bir araya getirmek amacıyla görsel araçlardan yararlanan bir üründür.

Delphi'nin varlığı üç nedene dayanır:

· Dünyanın güçlü ve uzmanlaşmış bir istemci/sunucu aracına ihtiyacı var.
· Programcılar, karmaşık projeleri kısa zaman dilimi içinde bitirebilmek için görsel araçları kullanmaya gerek duyarlar.
· Birçok programcının aynı anda program yazmasının karmaşıklığı, programcıların sağlam ve uzmanlaşmış programları yazabilmeleri için yeniden kullanılabilir,nesneye dayalı program parçalarına erişimlerini gerektirmektedir.
İstemci/sunucu dünyasına giren herkes, bu ortamda iyi araçların eksik olduğunu bilir. Yorumlanan yavaş diller, genel koruma hataları ve büyük tabloları işleyememe, istemci/sunucu uygulamaları hazırlamaya çalışan büyük firmaları bile zora sokan sorunlar haline gelmiştir.
Delphi, büyük ve karmaşık problemleri bile çözebilen iyi bir istemci/sunucu aracıdır. Çok yetenekli, nesneye dayalı bir dilin gücünden yararlanan gerçek bir derleyicidir. Programcılar, Delphi uygulamalarının yorumlanan diller kullanan istemci/sunucu araçlarıyla yazılan programlara göre birkaç kez daha hızlı çalışmalarını bekleyebilirler.
Ayrıca, Delphi veritabanı işlemlerini kısa zamanda yerine getirebilmek için Borland Veritabanı Motoru'nu kullanır. Bu, Delphi'nin istemci/sunucu kısmının oluşturulduğu veritabanı araçlarının sağlam ve uzmanlaşmış bir teknolojinin parçaları olduğu anlamına gelir.
Bununla birlikte, Delphi bir istemci/sunucu aracından çok daha fazla özellikler taşır. Delphi, herhangi bir Windows uygulaması yaratmanın gerektirdiği gittikçe büyüyen karmaşıklığa bir çözümdür.

Bu bölümün diğer üç kısmında şu konulara yer verilmiştir:
· Masaüstü aracı olarak Delphi
· Görsel programlama aracı olarak Delphi
· İstemci/sunucu olarak Delphi
Bu sırayı ürünü oluşturan katmanları gösterdiği için seçtim. Ürünün çekirdeğinde derleyici bulunmaktadır, bunun üstüne görsel araçlar kurulmuştur. Derleyiciyi ve görsel araçları kullanarak istemci/sunucu teknolojisine erişiminiz sağlanır.
Bundan sonraki üç bölümü okurken, Delphi'nin tamamen yine Delphi kullanarak kurulduğunu hatırlamak önemli olacaktır. Derleyici, asıl olarak, birleştirici dilde hazırlanmıştır ama programlama ortamı, görsel araçlar ve nesne hiyerarşisi Delphi'de kurulmuştur. Kısacası ürününü çekirdeği, her gün kullanacağınız parçaların hepsi, Delphi'de yazılmıştır. Programlama ortamı ürünün kendi gücünün bir kanıtıdır. Şu anda piyasada bulunan bir başka istemci/sunucu aracıyla benzer bir işe kalkışmak gülünç olacaktır.
Delphi'nin diğer bölümleri nesneye dayalı programlamanın zaferini gösterir. Örneğin, C'de yazılmış olan editör, farklı birçok Borland ürünü tarafından paylaşılan teknolojinin bir parçasıdır. Benzer biçimde, Delphi'de yazılmamış olan Borland Veritabanı Motoru da çok sayıda Borland aracı tarafından paylaşılmaktadır. Buna rağmen, Borland'ın mükemmel nesneye dayalı teknolojisi tüm bu araçları kolayca biraraya getirmeye, böylelikle mümkün olan en güçlü altyapıyı kurmaya olanak sağlamaktadır.

Masaüstü Aracı Olarak Delphi
DOS ortamında çalışan, kullanıcılardan A, B, C şıklarından birini seçmelerini isteyen menülere sahip basit metin modundaki programlar artık kullanıcıları tatmin etmemekte. En acemi bilgisayar kullanıcısı bile artık fareyi tamamen destekleyen çoklugörevli, pencereli ortamlar bekliyor.
C ya da Turbo Pascal gibi uzmanlaşmış bir dilde sıfırdan başlayarak Windows veya OS/2 programlamaya çalışmış olan herkes, bunun zor ve zaman gerektiren bir iş olduğunu bilir. Programcılar düşük seviyeli fonksiyonlara erişimleri kaybolmadan bu zorluğun bir kısmını ortadan kaldırmak istedikleri için, Delphi doğmuştur. Bu sorunları çözmek için Delphi güçlü iki özellik sağlamaktadır:
q Delphi, içerme (encapsulation), kalıtım ve çok yapılılığı tamamen destekleyen nesneye dayalı bir dil olduğu gibi, çalışma anında tip denetimi, olağanüstü durumlar ve özellikler gibi nitelikleri de desteklemektedir.
q Delphi nesneleri, fare ve Object Inspector tarafından işlenebilen bileşenler olarak derlenebilir. Diğer diller de bileşenleri desteklemektedir; fakat sadece Delphi, nesne ve bileşenleri doğal ve kolay kullanımlı bir biçimde bütünleştirmek için gerekli yöntemi sağlar.
Delphi derlenen bir dil olduğundan, birkaç saniye içinde küçük ve hızlı çalışabilir programlar hazırlamak mümkündür. Aslında, Delphi dünyanın en hızlı derleyicisidir. Ayrıca, çok küçük çalışabilir programlar üretir. Delphi programları genellikle 200 KB ile 500 KB arasında değişir; fakat nesne hiyerarşisinin hiçbir bölümünü içermeyen programlar oluşturursanız, bu durumda çalışabilir programlar 5 KB veya 6 KB kadar olacaktır.
Delphi, ayrıca DLL de üretebilir ve C ya da başka bir dilde yazılmış olan DLL'leri bağlayabilir. Delphi DLL'leri içinde nesneye dayalı kod kullanabilir. DLL'lerin içinde Delphi formlarına yer verebilirsiniz. Hem standart Pascal'ın desteklenmesi hem de "cdecl" bildirimlerinin yapılabilmesi, Microsoft OLE2 SDK de dahil olmak üzere birçok kaynaktan koda erişmenizi sağlar.
Delphi zevkli bir dildir. Bir programcının işinin en temel bölümlerindeki angaryayı kaldırmaya yardımcı olur. Delphi, Windows tabanlı uygulamalarını kontrol etmelerini programcılara daha önce mümkün olmayan bir biçimde sağlayan bir araçtır. Bu önemli konu nedeniyle kapsamı el verdiğince bu kitabı ilginç, eğlenceli ve bilgilendirici kılmaya çalıştım. Bu kitap baştan sona kadar, Delphi'de programlamanın herşeyden önce hem ilgi çekici hem de zevkli olması gerektiği gözönünde bulundurularak yazılmıştır.
Delphi'nin belli başlı özellikleri şunlardır:
· Delphi'nirı kullanımı kolaydır.
· Delphi'nin kullanımı zevklidir.
· Delphi'nin çok az sayıda kısıtlaması vardır. Bu dili iyice öğrendiğinizde amaçlarınıza ulaşmak için gerekli gücü size verecektir.

Görsel Programlama Aracı Olarak Delphi
Delphi'nin güçlü, hızlı, nesneye dayalı derleyicisi kuvvetli özelliklerinden birisidir. Bununla birlikte, derleyici bu ürünü önemli kılan öğelerin sadece üçte biridir. Diğer iki önemli öğe Delphi'rıin görsel araçları ve istemci/sunucu araçlarıdır.

Görsel Programlama Aracı Olarak Delphi
Delphi gibi görsel programlama ortamları fare ve bir dizi özel yazılım araçlarının kullanılmasıyla çabuk ve kolayca uygulama hazırlama olanağı sunarlar. Genellikle, görsel araçlar kullanarak program oluşturmaya RAD (Rapid Application Development-Hızlı Uygulama Geliştirme) adı verilir.
Delphi'nin uzman yazılım dizisi ve diğer özel araçları uygulama geliştirilmesinin hızlanmasına yardımcı olurlar. Örneğin, veritabanı programcıları iki tablo arasında birden çoğa ilişkileri gösteren formları otomatik oluşturmak için bir .uzman yazılımdan yararlanabilirler. Delphi Query Builder (Delphi Sorgulama Kurucusu) karmaşık SQL deyimleri oluşturmaya yarayan görsel araçlar içermektedir. Siz de DataSet editörünü kullanarak kullanıcıların tabloların alanlarına erişimlerini denetleyebilirsiniz. Özel olarak, verinin kullanıcıya nasıl gösterileceğini belirleyebilir veya kullanıcının veri girerken hangi tuşları kullanacağını denetleyebilirsiniz. Bu sayede kullanıcıların tarihleri, sayıları, parasal değerleri ve bir veritabanında tutulan diğer tüm biçimlerdeki veriyi nasıl gireceklerini belirleyebilirsiniz.

Delphi, memo veya grafik gibi hantal veritabanı alanlarını gösteren programların oluşturulması için kolay, görsel bir yöntem sağlamaktadır. Ayrıca, bu kitabın diğer bölümlerinde WAV dosyalarını çalan veya sinema filmlerini gösteren bir programın hazırlanmasının ne kadar kolay olduğunu göreceksiniz.
Delphi Options menüsündeki Gallery, form ve uygulama taslaklarını saklamak için bir yöntem sunmaktadır. Bu yöntemle bir ağ üzerinden paylaşılan özel form veya uygulama kümesi oluşturabilirsiniz. Böylece bir ekibin elemanları özel bir görünüme sahip uygulamalar geliştirebilirler.
Aynı esneklik, tamamen yeniden kurulabilen ve genişletilebilen Component Palette'te de bulunmaktadır. Diğer bölümlerde belli bir programcı kümesinin kendi gereksinimlerine göre nasıl özel Component Palette yaratabileceğinizi göreceksiniz. Böylelikle belli bir görünüme sahip bileşenleri oluşturup saklayabilir ve belli bir programcı grubunun bu araçlara kolaylıkla erişimini sağlayabilirsiniz. Sizin firmanızdan ya da bölümünüzden gelen bütün uygulamalar aynı özel görünüme sahip olacak ve bunun için herhangi bir programcının fareyle işaretlemek ve tıklamaktan başka bir şey yapmasına gerek kalmayacaktır.
Görsel programlamanın en önemli .avantajı, yeni başlayanlara hemen başlangıçta program yazma olanağı sağlamasıdır. Bununla birlikte, bu yöntem deneyimli programcılar, için de kullanışlıdır, çünkü karmaşık işleri birkaç kez fareyi tıklayarak yapabilirler.
Deneyimli Windows kullanıcıları, liste kutularının, kaydırma çubuklarının veya grafik şekillerinin işlenmesinin, kullanıcının aynı uzun program satırlarını tekrar tekrar yazmasını gerektirdiğini bilirler. Nesneye dayalı programlama bu işlerin bazılarını oldukça basit birimler içinde biraraya getirerek işin kısaltılmasına yardımcı olur. Görsel programlama tüm bu işleri bir adım ileri götürerek, işaretleyip fareyi bir ya da iki kez tıklayarak aslında şunu demenizi sağlar: "Bu aynı, eski işi benim için çabuk yap, ama arka planda olsun, zaman kaybetmek istemiyorum."
Aynı konuya bir başka bakış açısıyla yaklaşmak mümkündür. Delphi, sizin Delphi nesnelerine bileşen ya da UBX gibi görsel araçlarla erişmenizi sağlayacak biçimde tasarlanmıştır. Diğer diller daha önceden görsel araçları kullanmaya başladılar, fakat yarattığınız herhangi bir nesneyi fareyle işlenebilen görsel bir araca çevirmek kolay olduğundan Delphi diğer dillerden farklıdır. Başka bir deyişle, Delphi'nin nesneleri ve görsel araçları benzersiz bir biçimde bütünleşmiştir.
Eğer isterseniz herhangi bir Delphi bileşenini, nesnesini veya VBX'i tamamen programla işleyebilirsiniz. Bu, bir nesnenin ya da bileşenin türevini oluşturabileceğiniz ve çokyapılılıktan, kalıtımdan, sanal metotlardan ve diğer tüm belli başlı nesneye dayalı programlama özelliklerinden yararlanabileceğiniz anlamına gelir.
Nesne ve görsel araçların benzersiz bütünleşmesinin getirdiği en büyük yararlardan biri, Delphi'nin nesneye dayalı programlama alışkanlıklarını desteklemesidir. Bu dilde uzman olduğunuzda göreceğiniz gibi, Delphi tekrar kullanabilen görsel nesneleri oluşturmanızı kolaylaştırmaktadır. Gerekli olan mekanizmaları açıklamaya başlamak çok erken olmakla birlikte, bileşen olarak da bilinen bir görsel nesneyi oluşturmanın bir yararı da bu türden nesnelerin farklı projelerde kolaylıkla tekrar kullanılabilmeleridir.
Ne demek istediğimi tam olarak anlayabilmeniz için bu konuyu bir başka biçimde ifade edeceğim. Eğer bir Delphi nesnesini görsel bir araca yükseltmek için gerekli basit adımları atarsanız, bir bileşen yaratmış olursunuz. Bileşenlerin basit görsel arabirimleri bunların farklı projelerde tekrar kullanımını çok kolaylaştırmaktadır. Bileşenler, diğer programcılarla da kolaylıkla paylaşılabilir. Ayrıca bileşenler ger- çekten nesne olduklarından diğer programcılar bileşenin bir türevini yaratıp bunun yeteneklerine yenilerini ekleyebilir ya, da bunları değiştirebilirler. Bu işlemi VBX denetimleriyle yapamazsınız.
Görsel araçların nasıl bir araya getirildiklerini tam olarak anlamak çoğu okuyucunun biraz zamanını alacak. Bununla birlikte, bu kitabı dikkatlice okursanız, bunları yukarıdan aşağı doğru anlayacağınıza emin olabilirsiniz. Aslında, birçok kullanıcı görsel araçları birer ticari ürün olarak üretmek isteyebilir. Eğer bu sizin amaçlarınızdan biriyse, doğru yere geldiniz. Bu kitabın ana amaçlarından biri, görsel araçların nasıl hazırlandığını ve kendinize ait bileşenleri nasıl oluşturacağınızı açıklamaktır.


İstemci/Sunucu Aracı Olarak Delphi
Birçok kullanıcı Delphi'nin istemci/sunucu yetenekleri nedeniyle bu dile ilgi duymaktadır. Delphi, ölçeklenebilir veritabanı uygulamaları hazırlamanızı kolaylaştırır. Tek bir sistem için tasarlanan bu uygulamalar, fazla bir çaba gerektirmeden bilgisayar ağı kurulu ortamlara çevrilebilir. Bu ortamlarda Borland Veritabanı Motonı, Interbase, Oracle, Sybase ve diğer belli başlı sunuculara erişiminizi sağlar.
Daha önce SQL kodu yazdıysanız, .Delphi'nin SQL cümlelerini kendi ortamına aktarabilmesi işinize yarayacaktır. Diğer bir ifadeyle, bir SQL cümlesi yazdığınızda, Delphi bunu bir değişikliğe uğratmadan Interbase, Oracle, Sybase ya da diğer sunuculara aktarır ve böylece SQL cümlesi sunucuda yürütülür. Ayrıca; Borland Veritabanı Motoru'nun akıllı önbellekleme sistemi sayesinde büyük bir veri kümesi oluşturan bir sorgulama yapsanız bile çalışmaya devam edebilirsiniz.
Tabii ki, eğer SQL kullanmak istemezseniz bunu yerine Delphi'nin kendi kodunu da kullanabilirsiniz. Çoğu programcı sonuçta SQL cümleleriyle Delphi kodunun bileşimini kullanırlar. Her iki yöntemin nasıl birleştirileceğini öğrenirseııiz, kritik ağ uygulamalarını çabuk oluşturabilirsiniz.
Delphi ciddi bir istemi/sunucu aracıdır. Proje yönetim araçlarına ve veritabanı tasarım araçlarına bağlantıları vardır. Birden çoğa ilişkileri oluşturmanıza, çok sayıda tabloyu birleştirmenize ve hesaplanan alanlar oluşturmanıza olanak tanır. Ayrıca tablolardan yalnızca belli alanların kullanıcılarınıza gösterilmesi için çeşitli yöntemler sağlar. Delphi kayıtlar üzerinde dizin oluşturulması, bunların sıralanması, silinmesi, eklenmesi ve düzenlenmesi işlemlerini destekler.
Her şeyden önce, Delphi hızlıdır. Delphi'yi kullanarak özenle hazırlanmış kullanıcı arabirimleri ve birçok pencere içeren ortamlar yaratılabilir. Bunlar, diğer görsel programlama araçlarıyla üretilenlere göre daha üstün olacaklardır.
Delphi tam olarak ölçeklenebilir bir veritabanı aracıdır. Bu şu anlama gelir: Tek kullanıcılı bir makina için yazdığınız kodu sadece birkaç çok küçük değişiklik yaparak ağ üzerinde çalışacak biçime sokabilirsiniz. Bu işlevselliği sağlayan en yararlı araç Local Interbase Engine'dir. Interbase belli başlı kurumlar tarafından kritik görevlerde kullanılan bir SQL sunucudur. Bu sunucunun özel yerel bir sürümü Delphi'yle birlikte gelmektedir. Sunucunun bu yerel sürümüne erişen kod yazabilirsiniz. Tasarımınızdaki hataları tamamıyla ayıkladıktan sonra, Takma Adlar arasında bir tek satırı değiştirerek tüm uygulamayı ağ üzerine taşıyabilirsiniz. Local Iriterbase Engine bu kitapta dikkatlice açıklanacaktır.
Birçok kullanıcı Delphi'nin asıl olarak bir istemci/sunucu aracı olarak kullanmak isteyebilir. Bu ürün aynı zamanda Paradox veya dBASE dosyalarını kullanan tüm işlevlere sahip bağımsız bir veri tabanı yönetim sistemidir. Bu nedenle kurumunuzdaki, firmanızdaki ya da evinizdeki Paradox veya dBASE dosyalarının hepsine anında erişebilirsiniz. Elinizde yükseltilmesi ya da karmaşık yeni özellikleri içermesi için genişletilmesi gereken bir dBASE ya da Paradox uy ulaması varsa, Delphi aradığınız araç olabilir.

Bir Delphi Projesi
Tüm Delphi projeleri, kendileriyle ilişkilendirilen en az beş tane dosyaya sahiptirler. PROJECT1.DPR ve UNIT1.PAS, Delphi'nin derlediği kaynak dosyalarıdır. Diğer üç dosya ise proje yönetimiyle ilgili olup genellikle programcı tarafından doğrudan değiştirilmezler. Aşağıda bu dosyaların bir özetine yer verilmiştir:
q Ana proje dosyası olan PROJECTl.DPR
q Asıl ünite dosyası, program kodunu yazmaya başladığınız yerdir. Varsayılan adı UNITl.PAS'tır, fakat bunun adını MAIN.PAS olarak değiştirmenizi öneririm.
q Varsayılan adı PROJECTl.OPT olan ve seçenekleri tutan dosya, projenizle ilgili ayarlamalârın kaydedildiği metin tipi bir dosyadır. Örneğin, seçtiğiniz derleyici yönergeleri bu dosyaya kaydedilir.
q Varsayılan adı UNITl.DFM olan ana form dosyası, ana formun görünümüy- le ilgili bilgiyi tutar.
q Varsayılan adı PROJECTl.DSK olan masaüstü dosyası IDE'nin durumu hakkında bilgi içerir.
Daha önce sıralanan beş dosya arasında yalnızca DPR ve PAS dosyalarına bir ad verilmesinden ve bunların devamlılığından siz sorumlusunuz. Diğerleriyle ilgili işlemleri sistem otomatik olarak yürütür. Özel olarak, DPR ve PAS dosyalarının adlarını File / Save Project menü öğesini seçerek belirleyebilirsiniz. Kural olarak, DPR dosyasının içeriği programcı tarafından değiştirilmez, ama ana menüden View / Project Source'u seçerek bu dosyanın kaynak kodunu inceleyebilirsiniz.
Bu beş dosya, proje ve form dosyası olarak da sınıflandırılabilir: PROJECTl.DPR, PROJECTl.DSK ve PROJECTl.OPT projeyi ve IDE'nin ayarlarını kontrol eder. UNITl.PAS ve UNITl.DFM ana form ve üniteyi tanımlar. Tabii ki, tüm bu varsayılan adları bir proje üzerinde çalışmaya başladığınızda değiştirebilirsiniz. Proje dosyaları, sizin programınıza vermek istediğiniz adı alırlar; form ve ünitelere verilen adlar ise genelde bunların içeriklerini açıklamaya yardımcı olur.
File Menüsü
Bir projeyi kaydetmek için, File menüsünü tıklayın ya da bu menüyü açmak için Alt+F'e basın. File menüsü şöyle düzenlenmiştir:

New Project (Yeni Proje)
Open Project (Proje Aç)
Save Project (Proje Kaydet)
Save Project As (Projeyi Yeni Adla Kaydet)
Close Project (Projeyi Kapat)
-
New Form (Yeni Form) New Unit (Yeni Ünite)
New Component (Yeni Bileşen) Open File (Dosya Aç)
Save File (Dosyayı Kaydet)
Save File As (Dosyayı Yeni Adla Kaydet)
Close File (Dosyayı Kapat)
-
Add File (Dosya Ekle)
Remove File (Dosya Çıkar)
-
Print (Yazdır)
Exit (Çıkış)

1. PREV1.DPR
2. PREV2.DPR

Görüldüğü gibi, File menüsü altı ana kısma bölünmüştür. Aşağıdaki kısımlar kısaca tanımlanmıştır:

q İlk kısım, projeye bir bütün olarak hakim olmanızı sağlar.
q İkinci kısım, bir projedeki formlara, ünitelere ve bileşenlere hakim olmanızı sağlar.
q Üçüncü kısımdaki komutlarla bir projeye dosya eklersiniz ya da projeden dosya çıkarırsınız.
q Dördüncü kısım yazdırma işlerini yürütmektedir.
q Beşinci kısım IDE'den çıkmak için bir seçenek sunar.
q Altıncı kısım, yani tarih listesi, en son kullanılan projelerden birini çabucak seçmenizi sağlayan kolay kullanımlı bir listedir.

Bu bölümün ilerleyen kısımlarında göreceğiniz gibi, File menüsündeki seçeneklerin çoğu aynı zamanda Project Manager'da da yer almaktadır. Project Manager'ı View menüsünden gösterebilirsiniz. Bu seçeneklerin bazıları Speedbar üzerinde de bulunmaktadır. Bu strateji, Delphi'nin tipik bir özelliğidir: Delphi; aynı işi yapmanız için size farklı yollar sunar, böylece bir durumda en etkin yolu sizin belirlemenize izin verir.
File menüsündeki her seçenek çevrim içi yardımda açıklanmıştır. Help dosyasının bu bölümüne ulaşmak için Help / Topic Search'ü seçin. Borland Search diyalog kutusu göründüğünde File menü yazın ve Enter'e basın. Diyalogun tabanındaki konuları içeren liste kutusundan File Menü'yü seçin. Şekil 3.1'dekine benzer bir yardım ekranı göreceksiniz.

Şekil 3.1
Delphi, File
menüsünün nasıl kullanıldığını açıklayan bir yardım ekranını içermektedir.






Yardım ekranının yeşil renkte görünen kısımları (örneğin, New Project, Open Project, ve diğerleri) bu konuları daha ayrıntılı olarak açıklayan sayfalara hiperetin bağlantılarıdır. Bir seçeneğin tanımına ulaşmak için bu bağlantıları tıklayın. Yardım penceresinin tepesindeki Back (Geri) düğmesini seçerek bir önceki sayfaya geri dönebilirsiniz.
Proje ve üniteler arasındaki farkları anlamanız, üniteler ve formlar arasındaki fark- arı daha iyi anlamanızı sağlayacaktır. Bir proje derlendiğinde oluşan EXE dosyası Dosya Yöneticisi tarafından tek başına çalıştırılabilir. Diğer taraftan, bir ünite derlendiğinde DCU uzantılı ikili dosya oluşur. Bir program bir tek EXE dosyaya sahip olmakla birlikte, birçok DCU dosyasına bağlı olabilir.
Daha önce C, BASIC veya birleştirici dil (assembler) kullandıysanız, DCU ile OBJ dosyaları arasında benzerlik kurabilirsiniz. C'de bir projeyi oluşturan OBJ dosyaları, Delphi'de bir projeyi oluşturan DCU dosyalarına benzerler. Pascal projeleriyle ilişkilendirilen TPU dosyalarıyla Delphi projelerinde kullanılan DCU dosyaları arasında da benzerlik kurabilirsiniz.
Toparlamak gerekirse, her projenin DPR uzantılı bir ana dosyası vardır, ayrıca PAS uzantılı destekleyen modülleri olabilir. PAS dosyaları derlendiklerinde DCU ikili dosyaları oluşur. Aynı DCU dosyasını çok sayıda çalışabilir dosyada kullanabilirsiniz. Yani, sıkça kullanılan yordamları bir ünitede tutup bu üniteyi çok sayıda çalışabilir dosyaya bağlayabilirsiniz.
Sadece tek bir dosyadan oluşan bir Delphi programı aslında mümkündür. Bu kitapta böyle birçok program göreceksiniz, özellikle nesne kullanmayan veya WinCRT ünitesini kullanan programlar bu tip programlardır. Bununla birlikte, nasıl mönitörü ya da sabit diski olmayan bir bilgisayar tam değilse, çoğu program da ek birkaç ünite olmadan tam değildir.
File menüsünden New Unit'i seçerseniz, aşağıdaki kodu elde edersiniz:
unit Unit2;
interface
implementation
end.
New Form'u seçerseniz, sizin için şu kod üretilir:
unit Unit3;
interface
uses
SysUtilS, Wintypes, WinProcs
Messages, Classes, Graphics,
Controls, Forms, Dialogs;
type
TForm3 = sclass(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
($R *.DFM}
end.

Şimdilik önemli olan, New Form ve New Unit seçenekleri arasındaki temel farkları anlamaktır. Özel olarak, her iki seçeneğin de yeni bir ünite oluşturduğuna, fakat yalnızca bir ünitenin kendisiyle ilişkilendirilen bir forma sahip olduğuna dikkat etmelisiniz. Her form bir nesne olduğundan, formla ilişkilendirilen ünite içinde ayrıca yeni bir sınıf bildirimi göreceksiniz.
File / Open File menü öğesi, programınızda referensta bulunmak ya da incelemek istediğiniz herhangi bir üniteyi açar. Eğer bu üniteyle ilişkilendirilen bir form varsa, bu durumda ünite açıldıktan sonra form da hazır hale gelir. Eğer form derhal görünür hale gelmezse, formu Şekil 3.2'de gösterilen dört adet dolaşma aracından sağ üsttekini seçerek ya da F12'ye basarak görünür hale getirebilirsiniz.

Şekil 3.2.
O anki projenizle
ilişkilendirilen bir formu
ya da üniteyi seçmek
için dolaşma araçlarını kullanın.


Yeni bir ünite oluşturduğunuzda, Delphi buna varsayılan bir ad verir. File menüsünden Save File As'ı seçerek bu ünitenin adını daha anlamlı başka bir adla değiştirebilirsiniz. Daha önce sözünü ettiğim gibi, ben bir projedeki ilk üniteye her zaman MAIN adını veririm ve bunu DPR dosyasının yardımcısı olarak düşünürüm. Diğer ünitelere ise, anlamlı ve ünitenin yaptığı işi açıklayan adlar veririm.
Save File seçeneği o anda düzenlemekte olduğunuz dosyayı kaydeder, projenin tamamını kaydetmez. Bu nedenle, düzenli olarak Save Project'i seçerek yapmakta olduğunuz tüm değişikliklerin korunduğundan emin olmak akıllıcadır. Close File seçeneği bir dosyayı Editör penceresinden çıkarır. Genellikle, yalnızca çalışma alanını temizlemek istediğimde bu seçeneği seçerim.
File menüsü, New Component adlı bir seçeneği de içermektedir. Bu seçenek, kendi bileşenlerinizi birleştirmenize yardımcı olan bir uzman başlatır. Bu özellik hakkında daha fazla bilgi sahibi olmak "Bileşen Oluşturma" başlıklı 29. bölümü okumalısınız.
Bu kısmı kapatmadan önce, önemli bir konuya tekrar değinmek istiyorum. Düzenli olarak File / Save Project'i seçmelisiniz! Uzun bir çalışma oturumu boyunca yalnızca Save File'ı seçerseniz, sonuçta bazı bilgileri kaybedebilirsiniz.
Bir Projenin Yönetilmesi
Bir proje oluşturmaya yarayan File menüsünün kullanımı hakkında temel kavramları artık bildiğinize göre, bundan sonraki adım Project Manager'a geçmek olacaktır. Project Manager, projeniz hakkında genel bir bakışa sahip olmanızı sağlar. Şekil 3.3'te gösterilen Project Manager iki bölüme ayrılmıştır. Üstteki bölüm Speedbar'dır. Speedbar'ın altında projenizdeki modüllerin listesi yer almaktadır. View menüsünden Project Manager'a erişebilirsiniz.

Şekil 3.3.
Project Manager’in
Üst kısmındaki ikonları kullanarak Project Manager’in tabanında yer alan modülleri silebilir ya da yeni modüller ekleyebilirsiniz.




Project Manager'ın üst kısmındaki artı ve eksi ikonlarını kullanarak bir projeye dosya ekleyebilir ya da bir projeden dosya çıkarabilirsiniz. Yapılan bu değişiklikler kaynak dosyalarındaki uses deyimini etkiler. Başka bir deyişle, eğer bir projeye bir dosya eklerseniz, DPR dosyanızda yeni üniteye referansta bulunulur. (Eğer daha önceden Pascal deneyiminiz yoksa, u s e s deyiminden söz edilmesine aldırmayın. Bu konu daha sonra derinliğine ele alınacaktır. Şimdilik bilmeniz gereken tek şey uses deyiminin başka ünitedeki bir rutine referansta bulunmanızı sağlamasıdır.)
Aşağıda, Project Manager'daki ikonların kısa bir listesi verilmiştir:
q Artı ve eksi ikonları bir projeye dosya ekler ya da projeden dosya siler.
q Sonraki iki ikon, Project Manager'ın tabanında işaretlenen kaynak koduna ya da forma bakmanızı sağlar.
q Bir sonraki ikon Project Options diyalog kutusunu karşınıza getirir. Bu diyalog kutusunu Options / Project seçimiyle de ekrana getirebilirsiniz. Bu diyalog kutusu daha ayrıntılı olarak açıklanacaktır.
q Project Manager'ın en sağındaki Update düğmesi, DPR dosyası elle değiştirildiğinde projenin yapılan değişiklikleri gösterecek biçimde güncellenmesi için kullanılır.

Çok sayıda özelliğe çabucak erişmek için Project Manager'ı farenin sağ tuşuyla tıklayabilirsiniz. Kural olarak, Delphi IDE'de yer alan herşeyi farenin sağ tu tıklamayı denemelisiniz. Çünkü Delphi IDE'deki aşağı doğru açılan birçok pencerenin sunduğu kısayollar çeşitli özelliklere erişiminizi sağlar. Özel olarak, Component Palette, Speedbar ve Forms Designer'ın hepsinde farenin sağ tuşuna basabilirsiniz.

Diğer Menü Seçeneklerine Genel Bir Bakış
Bu bölümde daha önce File menüsünü öğrendiniz. Bu kıısmda ise, diğer önemli seçenekleri genel olarak ele alacağım. Bu seçenekler, Edit, Search, View, Coı ve Run menülerinde yer almaktadır. Bundan sonra, tekrar konuyu daraltıp, çok sayıda güçlü ve karışık özelliğe sahip olan Options menüsünü tanımanızı sağlayacağım.

Edit Menüsü
Edit menüsünün Undo (Geri Al) ve Redo (Tekrarla) özellikleri Editor penceresinde hata yaptığınızda çok yararlı olabilir. Bu özelliklerin bulunduğunu unutmayın. Bazen yanlışlıkla günlerce sürecek bir çalışmayı silebilir ya da değiştirebilirsiniz. Bu gibi durumlarda herşey kaybedilmez. Editor'deyken yaptığım 20 veya daha fazla değişikliği sık sık geri aldığım olmuştur. Örneğin, bir algoritma geliştirmeye çalışırken yalnızca algoritmayı iyice bozduğumu gördüğüm zamanlar oldu. Undo özelliğiyle, birkaç saatte yapılabilecek bir işi kolaylıkla geri alabilirsiniz. Bunun için tuş eşlemine bağlı olarak arka arkaya Alt+Backspace'e ya da Ctrl+Z'ye basmalısınız.

Search Menüsü
Search menüsünün Find Error seçeneği çalışma anında oluşan hataları izlemenize yardımcı olur. Örneğin, yanlışlıkla bir dizinin sınırlarının dışına taşılırsa, programınızda hatanın oluştuğu satırı gösteren bir diyalog kutusu ortaya çıkar. Bundan sonıa Search / Find / Error seçimini yapıp sistem tarafından çalışma anında sağlanan adresi girerseniz, eğer mümkünse, IDE programınızda hatanın oluştuğu yeri size gösterir.
Search menüsünün tabanında yer alan bir seçenekle programınızdaki belli bir sembolü inceleyebilirsiniz. Delphi, programınızın yapısını görmenizi sağlayan çok yetenekli bir tarayıcı içermektedir. Bu program sayesinde yazdığınız kodu farklı birçok açıdan görebilirsiniz. Örneğin, koddaki nesnelerin gösterimine göz atabilir veya programınızı sembolik olarak ünite ünite görebilirsiniz.
View Menüsü
Tarayıcıya Search menüsünün yanındaki View menüsünden de erişebilirsiniz. View menüsünün diğer önemli kısımları şunları içermektedir:
· Project Manager
· Object Inspector'ı gizlemek ya da göstermek için bir seçenek
· Alignment Palette'i gizlemek ya da göstermek için bir seçenek. Alignment Palette, Edit menüsündeki Align seçeneğinde bulunan bazı seçeneklerin tı- patıp aynısıriı, bazılarının ise daha gelişmişlerini içerir.
· Bu bölümde daha sonra incelenecek olan ve hata ayıklayıcıyla ilgili Watch, Breakpoint ve Call Stack seçenekleri
· Daha sonra derinliğine incelenecek olan tarayıcı
· Component Palette'in bir benzeri olan Component List. Eğer fare kullanmak
istemiyorsanız veya bir bileşeni Component Palette'in sayfaları arasında dolaşarak değil de adıyla aramak isterseniz, Compönent Palette yerine Compönent List'i kullanabilirsiniz.
· Delphi dahilinde açık. olan tüm pencereleri listeleyen Window List.
· Ek bir Editor penceresinin açılmasını sağlayan New Edit Window seçeneği. Aynı dosyanın iki ayrı sürümüne ya da aynı dosyada farklı iki yere bakmak istediğinizde bu seçenek yararlı olur.
· Speedbar ve Component Palette seçenekleri, bu araçları gizlemenizi ya da göstermenizi sağlarlar. Tamamıyla bir Editor penceresindeki kod üzerinde yoğunlaştığınızda bu seçenekleri kullanarak, ekranda karmaşıklığa yol açabilecek başka şeylerin bulunmasını engelleyebilirsiniz.
Compile Menüsü
Compile menüsü bir projeyi derlemek ya da kurmak için kullanılır. Eski DOS, Windows C++ ve Pascal IDE'lerinde Run menüsünde bulunan Make seçeneği, en son Make işleminden sonra değiştirilen üniteleri yeniden kuruyordu; fakat değiştirilmeyen üniteleri tekrar kurmuyordu. Bu seçenek, Run ve Compile menülerine konmuştur. Bu seçeneği seçerseniz, programınızı ne zaman yeniden derlemiş olursanız olun, Delphi projenizdeki tüm ünitelerin güncel olup olmadıklarını denetler. Diğer taraftan, Build seçeneği ise programınızda kaynak kodu bulunan her üniteyi yeniden derler. Üçüncü bir seçenek olan Syntax Check, derlenebilir, geçerli kod yazdığınızdan emin olmanızı sağlar, fakat gerçekte dosyalarınızın herhangi biriyle ilişkilendirilen DCU'yu yeniden derlemez. Syntax Check'i yapmakta olduğunuz çalışmanın sözdizimini hızla taramak için kullanabilirsiniz. Menünün en altında yer alan Information seçeneğiyle uygulamanızın durumunu, Kod, Veri ve Yığın segmanlarının boyutunu, heap'in boyutunu ve en son derleme sırasında işlenen satırların sayısını inceleyebilirsiniz.




Run Menüsü
Run menüsünü programınızı derleyip çalıştırmak ve sistem komut satırından programınıza aktarmak istediğiniz parametreleri belirlemek için kullanabilirsiniz. Programınızdaki hataları ayıklamak için çeşitli seçenekler de bu menüde sıralanmıştır.

Options Menüsü
Options menüsü, menü sisteminin en karmaşık kısmıdır. Bu menü, projenizin ve tüm IDE'nin birçok seçeneğini ayarlayabileceğiniz denetim merkezidir. Options menüsünde yedi adet menü öğesi yer alır:
Project
Environment
Tools
Gallery
-
Open Library
Install Components
Rebuild Library

İlk' dört menü öğesinin hepsi de bir diyalog kutusunun açılmasına neden olur. Tools menüsü dışında bu diyalog kutularının hepsi büyük, çok sayıda sayfadan oluşan oldukça karmaşık diyalog kutularıdır. Aşağıda, Options menüsü genel olarak incelenmiştir:
q Project menü öğesi derleyici yönergeleri gibi doğrudan o anki projenizi etkileyen seçenekleri seçmenizi sağlar. Örneğin, buradan sınır denetimini ya da yığın denetimini etkin duruma getirebilirsiniz.
q Environment menü öğesi IDE'nin tamamının kurulumundaki ayarlan değiştirmenizi sağlar. Örneğin, Editor'de kullanılan renkleri değiştirmek ya da belli bir kısayolun IDE dahilinde çalışmasını isterseniz bu seçeneği seçmelisiniz.
q Tools menü öğesi, Tools açılan menüsüne bazı seçimleri eklemenizi ya da buradan çıkarmanızı sağlar. Eğer sıkça kullandığınız bir editör ya da hata ayıklayıcı varsa, Options / Tools'u kullanarak bunu Tools açılan menüsüne ekleyebilirsiniz. Bu yolla IDE'nin tamamının işlevselliği artırılmış olur.
q Gallery menü öğesi, Forrn Experts ve taslaklar için, ayrıca Project Experts ve taslaklar için özel seçenekler tanımlamanızı sağlar. Expert ve taslaklar bir programın görsel elemanlarının kurulmasını hızlandırmak veya otomatikleştirmek için kullanılır.
q Options menüsündeki son üç seçenek Component Palette'te ayarlamalar yapmanızı sağlar.
Options / Project diyalog kutusuyla ilişkilendirilen beş sayfa bulunmaktadır:
q Forms sayfası projenizdeki formları listeler. Ayrıca formların Delphi, tarafından otomatik olarak mı yoksa sizin tarafııiızdan ünitelerin birinin içinde mi oluşturulacağına karar vermenizi sağlar.
q Application sayfası projenizin başlık, yardım dosyası ve ikon gibi elemanlarını tanımlamanızı sağlar.
q Compiler sayfası, kod üretimi, çalışma anında hata kotarımı, sözdizim, sayısal işlem ve hata ayıklama hakkındaki seçenekleri içerir.
q Linker sayfası, eşleme dosyası seçeneklerini, bağlanma (link) aşamasında tamponlamayı, bağımsız hata ayıklayıcı için hata ayıklamayı ve kullanılan yığının ve heap'in boyutlarını tanımlar. Bu sayfada ayrıca büyüklük ve yükleme zamanı açısından optimizasyonu sağlayan bir seçenek bulunmaktadır. Bu seçenek seçildiğinde, genellikle çalışabilir dosyalar %10 oranında küçülür. Kod optimizasyonunu sağlayan programlar diğer birçok derleyicide küçük programlama hatalarının kaynağı olmuşlardır. Bununla birlikte, Delphi'nin optimizasyonu sağlayan bileşeni ürünün beta sürümünde o kadar geç ortaya çıkmıştır ki, bunun güvenilirliği hakkında bir görüş belirtmeye cesaret edemiyorum. Yine de, Delphi'nin optimizasyonu sağlayan bileşeni ile ilgili şimdiye kadar herhangi bir programlama hatası duymadım.
q Directories / Conditionals sayfası belli bir projeye özel koşullu tanımlamaları ve dizin yollarını (path) belirlemenizi sağlar.
Genel bilgi içeren aşağıdaki paragraftan sonra, her sayfa ayrıntılı bir biçimde kendisine ayrılan bölümde tanıtılmıştır.
Burada sözü geçen sayfalarda gördüğünüz her şeyi OPT dosyası üzerinden veya uygulamanızdaki kaynak dosyalarını değiştirerek kurcalayabilirsiniz. Başka bir deyişle, bu sayfalarda gösterilen seçenekler kolay kullanılabilmeleri için buraya yerleştirilmişlerdir, yoksa seçenekleri ayarlamak için başka yöntemler de mevcuttur. Örneğin, MYEXE.DPR adında bir proje oluşturduğunuzda, derleyici otomatik olarak MYEXE.OPT adında bir seçenek dosyası oluşturur. MYEXE.OPT içindeki her öğe, daha önce gösterilen sayfalardaki öğelerden birine karşı düşer. Bu fikir "Compiler Sayfası" başlıklı kısımda daha ayrıntılı olarak ele alınacaktır.
Application Sayfası
Application sayfası, uygulamanıza bir başlık, yardım dosyası ve ikon seçmenizi sağlar.

Compiler Sayfası
Options / Project diyalog kutusundaki bilgi ile her Delphi projesiyle ilişkilendirilen OPT dosyasında tutulan bilginin birbirine karşı düştüğünden daha önce söz etmiştim.
Aşağıdaki tablo çeşitli derleyici yönergelerinin OPT dosyalarında, Options Project menüsünde ve program kodu dahilinde nasıl listelendiğini göstermektedir. Tablodaki her satır aynı işi yapmak için kullanılan farklı üç yolu göstermektedir:



_
OPT dosyası Options sayfası Editör sembolü
_
F Force far calls {$F+}
A Word align data {$A+}
G 286 insructions {$G+}
K Smart callbacks {$K+}
W Windows (3.0) stack frames {$W+}
R Range cahacking {$R+}
S Stack checking {$S+}
I I/O chacking {$I+}
Q Owerflow checking {$Q+}
V Strict var-strings {$V+}
B Complete Boolen eval {$B+}
X Extended syntax {$X+}
T Typed @ operator {$T+}
P Open parameters {$P+}
D Debug information {$D+}
L Local symbols {$L+}
Y Symbol info {$Y+}
N Numeric processing {$N+}
_

OPT dosyasındaki bir seçeneğin etkin olmasını sağlamak için, bunun değerini 1 yapmalısınız, şöyle ki:
A=1
Bu işlem, Compiler sayfasındaki bir~ seçeneği seçmek veya koda {$A+} eklemeye denktir. OPT dosyasındaki seçeneğin etkin olmasını engellemek için, bunun değerini 0 yapmalısınız:
A=0
Bu işlem, Compiler sayfasındaki bir seçeneği seçmekten vazgeçmeye veya koda {$A-} eklemeye denktir.
Programcıların çoğunluğu bu ayarlamaları Compiler sayfasından yapmak isteyeceklerdir. Bununla birlikte, eğer tercih edecek olursanız, Delphi diğer yaklaşımları da sunmaktadır. Kod içinde belirleyeceğiniz herhangi bir seçeneğin, OPT dosyasındaki veya Compiler sayfasındaki bir seçeneğe göre önceliği olacağını unutmayın.
Linker Sayfası
Eşleme dosyasını ve hata ayıklama bilgisini geçeceğim, çünkü bunlar, hata ayıklayıcının açıklanmasıyla ilgililer. Link buffer dosyası seçeneği bağlayıcının tamponunun diskte ya da bellekte olmasını seçmenizi sağlar: Eğer tampon bellekte olursa, işlem daha hızlı olur, fakat çok az sayıdaki özel durumda derleme sırasında bir bellek hatası oluşabilir.
Stack size ve Heap size seçenekleri çok daha önemlidir. OPT dosyasında bunların nasıl oldukları aşağıda gösterilmiştir:

[Linker]
........
StackSize = 16384
HeapSize= 8192
Burada gösterildiği gibi, Delphi bir programın yığın ve heap büyüklüğünün her ikisini de 8192 byte'a ayarlar. Bazı programlarınızda StackSize'ı değiştirmek isteyebilirsiniz, fakat bunu 32768'den daha büyük değerlere ayarlamak uygun değildir. Eğer iki değerin toplamı 65536'dan daha büyük olursa, bir hata oluşur ve programınızı derleyemezsiniz.
Directories / Conditionals Sayfası
Directories / Conditionals sayfası, derleyicinin ve bağlayıcının DCU dosyalarını aradığı dizinlerin sayısının artırılmasın sağlar.
DELPHI.INI dosyası dizinlerin buna benzer bir listesini içerir. OPT dosyası belli bir projeye ait seçenekleri tutarken, DELPHI.INI dosyası oluşturulan her proje için geçerlidir.
Yalnızca bir projeyle ilişkilendirilmesini istediğiniz dizinlerin adlarını girerek, bu dizinleri Directories/Conditionals dahilindeki listeye ekleyebilirsiniz. Örneğin, seri portla ilgili bir grup program parçasına sahip olduğunuzu varsayalım. Ayrıca bu program parçalarının hepsinin belli bir dizinde tutulduğunu varsayalım. Bu durumda, bu grubun dizin yolunu burada listeleyebilirsiniz., çünkü bu grup yalnızca bir ya da iki programda kullanılacaktır, oluşturacağınız diğer projelerle hiçbir ilgisi olmayacaktır. Eğer projelerinizin hepsinin bu DCU'ya erişmesini isterseniz, bunu dizin yolunu Options/Install Components diyaloğunda listelemeniz gerekir.
Output dizin seçeneği derleyicinin, oluşturduğunuz DCU ve EXE dosyaları nereye koyacağını belirlemenizi sağlar. Derleyiciye DCU dosyalarını bir dizine, EXE dosyalarını bir başka dizine yerleştirmesini söylemenin yolu yoktur. Çoğu programcı, Output dizin seçeneğini boş bırakarak derleyicinin çıkışını kaynak dosyalarını da tutan dizine yönlendirmektedir.
Conditional defines seçeneği deneyimli kullanıcılar için kendi kendini açıklar niteliktedir. Daha başlangıç aşamasında olan programcılar ise bu konuyla ilgilenmeyeceklerinden fazla açıklama yapmadan bu konuyu atlıyorum. Bu konuda daha fazla bilgi almak isterseniz, çevrim içi yardıma başvurabilirsiniz.
Forms Sayfası
Şekil 3.4'de gösterilen Forms sayfası projenizin ana formunu seçmenizi sağlar. Burada yapılan değişiklikler belli bir projeyle ilişkilendirilen DPR dosyasına yansıtılır. Örneğin, aşağıdaki proje dosyasında, Forml projenin ana formu olarak görevlendirilir çünkü programın ana bloğunda ilk olarak bu forma referansta bulunulmuştur:



program Projectl;
uses
Forms,
Unitl in ‘UNIT1.PAS’ {Form1},
Unit2 in 'UNIT2.PAS' {Form2};
{$R *.RES}
begin
Application.CreateForm(TForml, Forml);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

Eğer kodu
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(Tform1, Form1);
Application.Run;
end.

olarak değiştirirseniz, Form2 projenizin ana formu olur. Options/Project sayfasının Application sayfası aynı kod parçasını denetlemeniz için size ikinci bir yol sunar.
Bu sayfayı hangi sayfaların başlangıçta otomatik olarak oluşturulacağına karar vermek için de kullanabilirsiniz. Daha önce gösterildiği gibi, başlangıçta bir form için otomatik olarak bellek ayrılmasını sağlayabileceğiniz gibi, gerçekten forma gerek duyduğunuz ana kadar Create çağrısını yapmayı bekleyebilirsiniz. İkinci yöntemi seçerseniz, daha fazla işle uğraşmakla birlikte belleği daha etkin kullanmış olursunuz. CreateForm'u DPR dosyasında çağırın, ama Create çağrısını yapmak için projenizin ünitelerinin birinde olmalısınız.

Şekil 3.4.
Options/Project
menü seçeneğindeki
forms sayfası.





IDE'nin Ayarlanması
Options / Environment menü seçeneği size baş döndürücü bir dizi sayfa ve denetim sunar. Bu sayfa ve denetimlerle, IDE'nin görünümünü ve işlevlerini ayarlayabilirsiniz. Delphi, programlama ortamını farklı beş yönde değiştirmenizi sağlar:
q Delphi'nin projenizin hangi kısımlarını otomatik olarak kaydedeceğine karar verebilirsiniz.
q IDE'de kullanılan renkleri değiştirebilirsiniz.
q Sözdizim işaretlenmesini açıp kapatabilirsiniz.
q Component Palette'te ne görüneceğine karar verebilirsiniz.
q IDE dahilinde kullanılan kısayol tuşlarını geniş ölçüde belirleyebilirsiniz.

Options/Environment menü seçeneğinden erişilen ilk sayfa Şekil 3.5'da gösterilmiştir.

Şekil 3.5
Preferences diyalog
kutusuna Options
menüsünden erişilir.




Preferences diyalog kutusu, özellikle, IDE'nin koda ve ortama ilişkin değişiklikleri otomatik olarak kaydetmesini isteyip istemediğinizi belirtmeniz açısından önemlidir.
Bunun altında Forms Designer'ın ızgarasıyla ilgili bazı ayarlamalar bulunmaktadır. Çoğu kullanıcı tümleşik hata ayıklamanın açık olmasını ister. Birçok kullanıcı ise, sistemi biraz yavaşlatsa da Compiler Prtıgress adlı diyalog kutusunun derleme sırasında görünmesini ister.
Editor Options, Editor Display ve Editor Colors sayfaları IDE'de kullanılan varsayılan renkleri ve tuşları değiştirmenizi sağlar. Editor Display sayfası Şekil 3.6'da, Editor Colors sayfası da Şekil 3.7'de gösterilmiştir.

Şekil 3.6
Options menüsündeki
Editör Display sayfası



Editör tarafından kullanılan tuş eşlemi kendi özel kullanımınıza göre ayarlamanız için birçok yolu seçebilirsiniz. Örneğin, çoğu Borland kullanıcısı F5 tuşuyla Editör penceresinin ekranı kaplamasına alışmıştır. Classic tuş eşlemi bunu destekler, fakat diğerleri desteklemez. Diğer kullanıcılar F3'e basarak bir metnin aranmasını tekrarlamaya alışmış olabilirler. Bu özellik, Default tuş eşlemi tarafından desteklenmektedir. Seçilebilecek dört tuş eşlemi vardır:

q Default tuş eşlemi, Microsoft'un tüm kullanıcıların kullanmalarını istediği seçimleri kullanır. Windows'u kullanmaya yeni başladıysanız ya da bu tuş eşlemini biliyorsanız bu tuş eşlemi iyi bir seçim olabilir.
q Classic tuş eşlemi, usta Borland C++ ve Borland Pascal kullanıcılarının bilmeleri gereken tuş eşlemidir. Bu tuş eşlemi eski WordStar tuş kombinasyonlarının birçoğunu destekler ve hata ayıklayıcıyı daha önceden bildiğiniz biçimde adım adım çalıştırmanızı sağlar. Ben bu tuş eşlemi kullanıyorum, bunun belki de tek nedeni bu tuş eşlemine alışık olmam.
q Diğer iki seçim Epsilon ve BRIEF editörlerinin tuş eşlemini kullanmaktadır. Eğer bu editörleri daha önce kullandıysanız, bu seçenekler size cazip gelecektir.

Herhangi bir tuş eşlemindeki tuşların tam tanımını Help / Topic Search altında “key mapping" sözcüklerini aratarak bulabilirsiniz.
Eğer IDE'deki renkleri kendi özel kullanımınıza göre ayarlamak isterseniz, Şekil 3.7'de gösterilen Editor Colors sayfasını seçmelisiniz.

Şekil 3.7
Editor Colors sayfası,
Editor penceresinde
sözdizim işaretlenmesinin
görünümünün değiştirilmesini
sağlar.


Bir sayfadan diğerine geçmek için fareyi kullanın veya Ctrl+Tab'a basın. Çoğu programcıya, özellikle uzun bir günün sonuna doğru, tuşa basmak daha kolay gelir.
Şekil 3.8'de gösterilen Editor Options sayfasını tanımlamak için çok fazla zaman harcamayacağım. Bununla birlikte, bu sayfadaki denetimleri kullanarak sekmeleri nasıl kullanacağınızı tam olarak belirleyebilmeniz anlatmaya değer bir özelliktir. Çevrim içi yardım tüm bu özellikleri oldukça ayrıntılı tanımlamaktadır. IDE'deki belli bir ayarın nasıl çalıştığını görmek için ilgili sayfayı veya seçeneği seçip Fl'e basın. Çevrim içi yardım otomatik olarak açılarak seçtiğiniz seçenek hakkında bilgi verir.


Şekil 3.8
Editor Options sayfası




Options / Environment diyalogu, Browser ve Component Palette'i düzenlemeye yönelik bazı sayfaları da içerir. Bu diyalogu kullanmak yerine, bu araçlarla çalışırken farenin sağ tuşuna basarak bunları düzenleyebilirsiniz. Browser'ın listelediği tüm değişkenleri nitelendirmesini sağlayabilirsiniz. Browser'da bulunan uzun Exceptions listesini bölmek isterseniz, Options / Environment diyalogundaki Browser sayfasında Collapse Nodes kombokutusuna Exception sözcüğünü girin.
Programlama ortamının ayarlanmasıyla ilgili olarak bir konuya tekrar değinmek istiyorum. Tüm bu seçenekler yalnızca IDE'de değil, aynı zamanda Windows dizinindeki DELPHI.INI dosyasına da kaydedilmiştir. Sabit diskinizde bu dosyadan yalnızca bir tane bulunduğundan ve bunun da Windows dizininde bulunduğundan emin olmalısınız. Eğer diskinizde birden fazla kopya varsa ve IDE sizin düzenlediğiniz dosyayı değil de başka bir kopyaya okuyorsa, DELPHI.INI'de yapılan değişikliklerin hiçbir etkisi yokmuş gibi görünebilir.

Parametre Aktarımı
Yordamlara işleyecekleri bilgiyi sağlamak amacıyla parametre aktarılır. O günün tarihi verildiğinde yılın geri kalan günlerinin sayısını hesaplayan yordamın elinizde olduğunu varsayın. Tasarım aşamasında, bu yordama bir parametre aktarmaya (o günün tarihini içeren) karar verebilirsiniz. Sonra, yordam sizin aktardığınız tarihi işleyip ekrana yazdırabilir.
Aşağıda verilen PARAMS adlı program parametrelerin kullanımını göstermek a- macıyla tasarlanmıştır. Ayrıca, şunların da nasıl yapılacağını göstermektedir:
· Kendi yordamlarınızı oluşturmayı
· Bir nesneye çeşitli yordamlar ekleyerek bunların o nesnenin metodu olmasını
· Bir yordamın içinden bir başkasını çağırmayı
PARAMS programı, bir edit denetimine bir katar girmenizi sağlar. Bir düğmeye tıklandıktan sonra bu katar, diğer altı edit denetimine kopyalanır, böylece aynı katar yedi kez tekrarlanmış olur.

Şekil 4.1
PARAMS programının
amacı bir tuşla
yedi kuş vurmaktır.

Başlamak için bir form oluşturun. Bu form, Editi'den Edit7'ye kadar etiketlenen yedi adet edit denetimi içermelidir. Formun tabanına Buttonl adında bir düğme yerleştirin. Object Inspector'ı kullanarak Buttonl'in başlığını "Call Procedure WriteAll" yapın. Buttonl'in başlığı değiştikten sonra Object Inspector'ın görünümünü vermektedir.
PARAMS programının formu tasarlandıktan sonra, programın ana ünitesine göz
atalım. Tform1 sınıfı şöyle görünmelidir:
TForml = class(TForm)
Editl: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4:TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Buttonl: TButton;
end;

Şekil 4.2
Button1’in Caption özelliği
Değiştirildikten sonra
Object Inspector’ın görünümü.


TForml sınıfının sekiz adet alanı olduğuna dikkat edin. Bu alanların her biri, oluşturulan görsel bileşenlerden birine karşı düşmektedir. Bu alanları çalışma anında denetimleri sorgulamak veya değiştirmek amacıyla kullanabilirsiniz.
Bir sonraki adım bir metot eklemek olacaktır. Bu metot, kullanıcı formdaki düğmeyi tıkladığında çağrılır. Metodu eklemek için, ya Object Inspector'ın Events sayfasında OnClick metodunu seçin ya da formdaki düğmeyi çift tıklayın. İşiniz bittiğinde, aşağıdaki kod üretilir.

Procedure TForml.ButtonlClick(Sender: TObject);
begin
end;

Şu anda seçili olan denetim, Object Inspector'ın en üstündeki kombo kutusunda görünmektedir. Bu programda, Object Inspector yalnızca Buttonl'i değiştirmek için kullanılmaktadır. Bu nedenle, Object Inspector'ın en üstündeki kombo kutusunu kullanarak ana formu ya da edit denetimlerinin birini değil Buttonl'in seçili olmasını sağlamalısınız.
PARAMS programının amacı, size bir yordamın nasıl yazılacağını ve buna parametre aktarımının nasıl yapılacağını göstermekten başka bir şey değildir. Özel olarak, program Buttonl'in tıklanmasına yanıt olarak Edit7'deki metni alır ve WriteAll adlı yordama aktarır:
procedure TForml.ButtonlClick(Sender: TObject);
begin
WriteAll(Edit7.Text);
end;
WriteAll yordamını hemen açıklayacağım, fakat şimdilik ButtonlCl.ick içinde ne oluştuğunu anlamalısınız. Burada kavranması gereken asıl nokta, Edit7'nin TEdit tipinde olması ve tüm TEdit bileşenlerinin Text adlı bir özelliğinin bulunmasıdır. Text özelliği TEdit sınıfının bir özelliğidir, TEdit nesnesinde yer almaktadır ve edit denetiminin ekranda gösterdiği metne erişimi sağlar. Başlangıçta, Edit7'deki metin Edit7 katarıdır. Program akışı sırasında edit denetimini fare ile tıklayarak bu katarı değiştirip yerine yeni bir katar girebilirsiniz.
En üstteki altı edit denetiminde gösterilmesi istenen metin, writeAll yordamına parametre olarak aktarılır. Bir yordama parametre aktarmak için, yordamın adından sonra aktarılacak parametreyi parantez içerisinde yazmalısınız:
WriteAll(Edit7.Text);
Tekrar, bir yılda kalan günleri hesaplayan bir yordamınızın olduğunu varsayalım. Eğer bu yordamın adı CalcDaysLeft seçilirse ve tarih CurrentDate adlı bir değişkende tutulursa, yordamı şöyle çağırabilirsiniz:
CalcDaysLeft(CurrentDate :TDate);
TDate'in kullanıcı tarafından tanımlanan bir tip olduğu kabul edilirse, bu yordamı başlığı olabilir:
procedure CalcDaysLeft(CurrentDate :Tdate);
Ele alınan duruma geri dönersek, WriteAl' diğer altı edit denetimine kopyalamaktır. Bu yordam şöyledir.

procedure TForml.WriteAll(Edit7String :String);
begin
Editl.Text := Edit7String;
Edit2.Text := Edit7String;
Edit3.Text := Edit7String;
Edit4.Text := Edit7String;
Edit5.Text := Edit7String;
Edit6.Text := Edit7String;
Böyle bir yordamın kodunu otomatik olarak oluşturmak mümkün değildir; kodu kendiniz tasarlayıp yazmalısınız. Başlamak için, yordamın başlığını oluşturun:
procedure TForml.WriteAll(Edit7String :String);
Daha önce değinilmiş olmasına rağmen, yordam başlıklarına daha yakından bakmak gerekir. Yordam başlıkları beş parçadan oluşur:
q İlk parça procedure sözcüğü, beşinci parça ise noktalı virgüldür. Bu elemanların her ikisi de sözdizimle ilgilidir: Derleyiciye bir yordamın tanımlanacağını ve bu yordamın başlığının belli bir noktada bittiğini bildirirler.
q Başlığın ikinci parçası TForml sözcüğüdür. Bu sözcük, yordamın adını niteleyerek derleyiciye bu yordamın TForml sınıfının bir metodu olduğunu bildirir.
q Başlığın üçüncü parçası yordamın adıdır. Bu adı WriteAll olarak seçtim. Eğer isterseniz bu adı harflerin tüm kombinasyonlarıyla değiştirebilirsiniz. Bununla birlikte, bir tanımlayıcı bir sayıyla başlayamaz. Örneğin, lWriteAll ve 2WriteAl1 geçerli tanımlayıcılar değildir.
q Başlığın dördüncü parçası parametredir. Parametreler, parantez içinde bildirilir ve iki kısımdan oluşur. İlk kısım, parametrenin adı; ikinci kısım ise parametrenin tipidir. Bu iki kısım iki nokta üst üste (:) ile birbirinden ayrılır.

Eğer bir yordama birden fazla parametre aktarmak isterseniz, bu durumda her parametre aşağıda gösterildiği gibi noktalı virgül ile ayrılmalıdır:
procedure Example(Paraml: string: Param2: string);
Bu arada, bir katarın ne olduğunu öğrenmek için elinize birçok fırsat geçti; fakat ilk defa katar (string) tipiyle çalışıyorsunuz. Katar tipindeki bir değişken 256 karakterden daha kısa katarları tutabilir. Eğer tipler ve değişkenler sizi şaşırttıysa Pascal'da programlamaya girişle ilgili bir kitaba başvurmalısınız. Şimdilik, Edit7String adlı parametrenin Edit7 denetimindeki metni tutmak için kullanılabileceğini bilmeniz gerekir.
WriteAl1 yordamının başlığını oluşturduktan sonra, bunu TForml sınıfının bildirimine kopyalamalısınız:
procedure TForml.WriteAll(Edit7String :String):
begin
Editl.Text := Edit7String;
Edit2.Text := Edit7String;
Edit3.Text := Edit7String;
Edit4.Text := Edit7String;
Edit5.Text := Edit7String;
Edit6.Text := Edit7String:
procedure ButtonlClick(Sender: TObject);
procedure WriteAll(Edit7String :String);
end:

İlgili metot son sırada, hemen end sözcüğünün üstündedir. Gördüğünüz gibi, WriteAll başlığının tamamı sınıf adı dışında harfi harfine sınıf bildirimine kopyalanmıştır. Sınıf adı niteleyicisini dahil etmeye gerek yoktur, çünkü Tform1 sınıf bildirimindeki herşey otomatik olarak Tform1 sınıfının da bir üyesidir.
WriteAll yordamının asıl gövdesi çok basittir:

begin
Editl.Text := Edit7String;
Edit2.Text := Edit7String;
Edit3.Text := Edit7String;
Edit4.Text := Edit7String;
Edit5.Text := Edit7String;
Edit6.Text := Edit7String;
End;

Bu kod, Edit7String parametresinin içeriğini formdaki diğer edit denetimlerinden her birine atar. Kolay kullanım ve esneklik dışında, bir edit denetiminin Text özelliğinin çalışma anında değiştirilmesiyle, Object Inspector kullanılarak tasarım anında değiştirilmesi arasında belirgin bir fark yoktur.
Aşağıda PARAMS programının tamamının dökümü verilmiştir. Hatta proje dosyasını da dahil ettim. Diğer bölümlerde bunu genellikle yapmayacağım. Böyle yazıldığı zaman program kodu biraz uzun gözüküyor, fakat aslında bu programın sadece 10 satırını sizin yazmanız gerekiyor. Geri kalan kısım Delphi tarafından otomatik olarak oluşturulur. Eğer bu programı oluşturmakta zorluk çekerseniz, kaynak kodun tamamını CD'de bulabilirsiniz.

Program Dökümü 4.3. PARAMS programının dosyası ana formu açmaktan başka bir şey yapmaz.
_ _
Program Params;
uses
Forms,
Main in ‘MAIN.PAS’ {Form1};
begin
Application.CreateForm{Tform1, Form1};
Application.Run;
end;

Program Dökümü 4.4. PARAMS programının kaynak kodu edit denetimlerinin nasıl kullanıldığı ve nasıl parametre aktarıldığını göstermek.
_ _
unit Main;
interface
uses
WinTypes, WinProcs, Classes,
Graphics, Controls,
Printers, Forms, StdCtrls;
Type
Tform1=class(Tform)
Edit1:Tedit;
Edit2:Tedit;
Edit3:Tedit;
Edit4:Tedit;
Edit5:Tedit;
Edit6:Tedit;
Edit7:Tedit;
Button1:TButton;
Procedure Button1DblClick(Sender: Tobject);
Procedure WriteAll(Edit7String :String);
end;
var
Forml: TForml:
implementation
{$R *.DFM)
procedure TForml.WriteAll(Edit7String :String);
begin
Editl.Text := Edit7String;
Edit2.Text := Edit7String;
Edit3.Text := Edit7String;
Edit4.Text := Edit7String;
Edit5.Text := Edit7String;
Edit6.Text := Edit7String;
end;
procedure TForml.ButtonlClick(Sender: TObject):
begin
WriteAll(.Edit7.Text);
end;
end.
_ _
PARAMS programıyla denemeler yaparken, WriteAll yordamının ve Edit7String parametresinin adlarını değiştirmeye çalışabilirsiniz. Programın bu her iki elemanı da sizin denetiminiz altındadır, bu sözcükleri değiştirebilirsiniz. Procedure, string, begin, ve end sözcükleri ise ayrılmış sözcüklerdir. Bu sözcükleri, dildeki görevleri dışında başka bir amaç için kullanamazsınız. Bu nedenle, bir yordamın ya da değişkenin adını string, end, begin koyamazsanız. Örneğin, aşağıdaki bildirimler derlenmeyecektir:
procedure Begin;
procedure Class;
program String;

Ayrılmış sözcüklerin tam listesi için Delphi'nin çevrim içi yardımına bakınız. Dildeki ayrılmış sözcüklerin tamamını ezberlemeye kalkışmayın: Bunlardan birini yanlış kullanırsanız, derleyici her zaman sizi uyaracaktır. Bu durumda, genellikle, Identifier expected mesajı çıkar. Tanımlayıcılar, değişkenlere, yordamlara, tiplere ve neredeyse bir programdaki tüm sözdizim elemanlarına atanan adlardır. Örneğin, Forml, Controll, Main, WriteAl1 ve ButtonlClick sözcüklerinin hepsi birer tanımlayıcıdır.
Identifier expected mesajını aldığınızda, derleyici size genelde bir tanımlayıcı beklediğini, fakat bunun yerine ayrılmış sözcük bulduğunu söylemeye çalışır.
Bu kısımda, bir yordama nasıl parametre aktarılacağını ve kendi yordamlarınızı nasıl oluşturacağınızı öğrendiniz. Bu bölümde teknik terimlerin ve yeni kavramların sıkça yer aldığını biliyorum. Bununla birlikte, asıl önemli olan tüm ayrıntıları ezberlemek değil, genel kavramları kavramaktır. Eğer aşağıdaki işlerin her birini yapabiliyorsanız, doğru yoldasınız demektir:
q Görsel teknikler kullanarak bir yordam oluşturmak
q Yordama kod eklemek. Bu kod, örneğin bir edit denetimine metin yerleştirmek gibi herhangi bir işe yarayabilir.
q Ünitedeki implementation ve interface anahtar sözcüklerinin üniteye özel olduğunu anlamak.
q Bir nesnenin bildirimini gördüğünüzde bunu fark etmek.
q Bir nesnenin metodu i(e alanı arasındaki farkı ayırt etmek.
q Bir yordama aktarılan parametreyi fark etmek ve bunun bir yordama bilgi
aktarmak için kullanıldığını anlamak.
Bu noktada kendi yordamlarınızı yazabiliyor ve kendi ünitelerinizi oluşturabiliyorsanız, çok büyük bir aşama kaydettiniz demektir. Bu bölümün amacı, yordamların, sınıfların ve ünitelerin temellerini anlamanıza yardımcı olmaktır. Bütün okuyucular olmasa bile deneyimli okuyucular bu bölümü okuyarak daha ayrıntılı bilgiyi edinmiş olabilirler.
Delphi, kullanımı kolay bir dildir. Bu dili iyi öğrendiğinizde, çok güçlü, profesyonel görünümlü programlar oluşturabileceksiniz. Daha az bilgi bile, Delphi'yle ciddi işler yapmanıza yetecektir. Örneğin, ne Delphi kullanarak verileri izleyen bir bilimadamı ne de mali kayıtları tutmak isteyen bir kullanıcının bu dili ayrıntılı olarak bilmesine gerek yoktur.
Daha Fazla Yordam, Daha Fazla Denetim
Artık temel kavramları bildiğinize göre, bilginizi uygulamaya geçirmenin zamanı geldi. Bunun için, Standard Component Palette'teki asıl denetimleri kullanacağım.
Şekil 4.3
Standart Componen
Palatte, bir dizi
güçlü denetimi içermektedir.

Şimdi oluşturacağımız program, bu bölümün başında oluşturulan CONTROL1 programının genişletilmiş bir biçimi olacak. İsterseniz, CONTROL1 programının kodunu CONTROL2 adlı yeni bir dizine kopyalayabilirsiniz. Bunu mutlaka yapmak zorunda değilsiniz, CONTROL1 programıyla çalışmaya devam edip, uygun yerlere yeni kod ekleyebilirsiniz.
CONTROL1 programında bulunan kodla başlayıp Delphi programlarında kullanılan bir çok şeyi açığa çıkaran daha karmaşık bir program yazabilirsiniz.
Öncelikle, formunuza sabit bir denetim ekleyin. Şekil 4.4'da gösterildiği gibi, bunun adını LSelection, başlığını ise Selection yapın.


Şekil 4.4
Gerekli değişikliklerin
yapıldığı Object Inspector.



Şimdi, Object Inspector'ın Events sayfasından OnDblC1ick metodunu seçip, bunu çift tıklayın. Bir başka yordam otomatik olarak oluşturulur ve kodun en üstündeki Forml nesnesinde birkaç küçük değişiklik yapılır. Bir sonraki adım LSelectionDblC1ick metodunu aşağıdaki biçimde değiştirmektir:

procedure TForml.LSelectionDblClick (Serider: TObject);
begin
Editl.Text :='You double clicked on a label';
end;

Programı çalıştırın ve etiketi çift tıklayın. Edit denetiminin ekrana sizin LSeIectionDblC1ick metodunda belirlediğiniz metni gösterecek biçimde değiştiğini göreceksiniz. Şimdi, tasarım moduna dönmek üzere programı kapatın.
Önceki kod, bu program boyunca kullanılacak yöntemi göstermektedir. Özel olarak, forma bir denetim yerleştirdikten sonra eklediğiniz kod, bu denetimin tek ya da çift tıklanmasıyla edit denetimine açıklayıcı bir metnin yerleştirilmesine neden olur.
Tasarım modundayken, edit denetimi ve etiketin altına büyük grup kutusunu ek- leyin. Sonra bu grup kutusuna iki radyo düğmesi ve iki onay kutusunu Şekil 4.5'deki gibi ekleyin. Son olarak, formun tabanına tek bir düğme ekleyin. Formu genişliğine tamamen kaplayacak biçimde düğmeyi büyütün. Düğmenin adını BC1ose, başlığını da C1ose yapın. Daha ayrıntılı olarak, Object Inspector'daki Name özelliği BC1ose, Caption özelliği de C1ose olmalıdır. (Eğer düğmenin adını C1ose koyarsanız, hata oluşur.)
Önce, grup kutusunu forma eklemelisiniz. Sonra, bu grup kutusuna yerleştirmek istediğiniz radyo düğmelerini, onay kutularını ve diğer denetimleri eklemelisiniz. Eğer bu denetimleri, formun üstünden bir grup kutusuna taşıyacak olursanız, daha sonra sorun çıkabilir. (Denetim, ebeveyninin (sahibinin) hala form olduğunu sandığından, grup kutusu hareket ettiğinde bununla birlikte hareket etmez.) Bu sorundan kaçınmak için en iyisi önce grup kutusu forma yerleştirilmeli, sonra da radyo düğmeleri ve diğer denetimler grup kutusuna konmalıdır. Böyle yaparsanız, grup kutusunu hareket ettirerek denetimlerin hepsini sürükleyebilirsiniz. Yine de, eğer TGroupBox denetimine ait olan denetimleri eklemeden önce, TGroupeox denetimini forma yerleştirmeyi unutursanız, bu hatayı şöyle düzeltebilirsiniz: Denetimleri işaretledikten sonra, ana menüden Edit / Cut seçeneğini seçin ve denetimleri grup kutusunun üstüne bırakın. (Bu paragrafta grup kutularıyla ilgili olarak söylenen her şey paneller için de geçerlidir. Bu iki bileşen biraz farklı görünseler de işlev olarak birbirlerine benzerler.)

Şekil 4.5
Üstüne farklı
Birçok denetim yerleştirirken
sonra CONTROL2
uygulamasının ana formu.



Bu uygulamadaki en son adım, grup kutusu dışında oluşturduğunuz her yeni denetim için bir OnCIick metodu oluşturmaktır.

procedure TForml.RadioButtonlClick(Sender: TObject);
begin
Editl.Text := 'Click on RadioButtonl';
end:

İşiniz bittiğinde, oluşturduğunuz kodun Program Dökümü 4.5'te gösterilen program gibi görünmesi gerekir. Bu sefer proje dosyasını, bu bölümde gösterilen diğer uygulamalardaki proje dosyalarıyla neredeyse aynı olduğundan dolayı atladım. Daha fazla bilgiye gerek duyarsanız, CD-ROM'da bulunan kaynak kodu gözden geçirebilirsiniz.
Program Dökümü 4.5. CONTROL2 programı, Windows programlarında kullanılan asıl bileşenlerin bazılarına yer vermektedir.
_ _
unit Main;
{Program copyright (c) 1994 by Charles Calvert}
{Project Name: CONTROL2}
interface
uses
WinTypes, WinProcs, Classes,
Graphics, Controls, Printers,
Menus, Forms, StdCtrls;
type
TForml = class(TForm)
LSelection: TLabel;
Edit1: TEdit;
BClose: TButton;
GroupBox1: TgroupBox;
CheckBoxl: TCheckBox;
RadioButtonl: TRadioButton;
CheckBox2: TCheckBox;
RadioButton2: TRadioButton;
Procedure EditlDblClick(Sender: TObject);
procedure LSelectionDblClick(Sender: TObject)
procedure CheckBoxlClick(Sender: TObject):
procedure CheckBox2Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButtonlClick(Sender: TObject);
procedure BCloseClick(Sender: TObject);
end;
var
Forml: Tform1;
implementa tion
{$R *.DFM}
procedure Tform1.EditlDb1Click(Sender: Tobject);
begin
Edit1.Text:=’Double click on edit control’;
end;
procedure Tform1.LselectionDb1Click(Sender: Tobject);
begin
Edit1.Text:=’Double click on edit control’;
End;
procedure Tform1.CheckBox1Click(Sender: TObject);
begin
Edit1.Text:=’Double click on edit control’;
End;
procedure Tform1.RadioButton1Click(Sender: Tobject);
begin
Edit1.Text:=’Double click on edit control’;
End;
procedure TForml.BCloseClick(Sender: TObject);
begin
Editl.Text := 'Click on Button';
end;
procedure TForml.CheckBox2Click(Sender: TObject);
begin
Editl.Text := 'Click on CheckBox2';
end:
procedure TForml.RadioButton2Click(Sender: TObject);
begin
Editl.Text : 'Click on RadioButton2';
end;
end.

Bu program iki amaca hizmet etmektedir:
q Yordamların nasıl oluşturulacaklarını ve bunların bir işe yaramaları için gövdelerinin nasıl doldurulması gerektiğini göstermektedir. Bu örnekte, bu yordamların her birinin bir tek amacı, formun edit denetimine bir satırlık metni yazmaktır. Bu basit bir iş olmakla birlikte, hem bir yordamın ne olduğunu hem de kod penceresinde yordamın sözdiziminin nasıl göründüğünü açıkça örneklemektedir.
q Birçok önemli denetimin adını ve görünümünü örneklerle açıklamaktadır. Bir programcı olarak edit denetimleri, etiketler, radyo düğmeleri, onay kutuları ve grup kutularının temel özelliklerini anlamış olmanız gerekir. Bu denetimleri bilmiyorsanız, Windows ortamıyla ilgili giriş niteliğindeki bir kitaba başvurmalısınız.
Formlarla Çalışma
Delphi projelerinin çoğu bir DPR dosyasından ve bir ya da birkaç üniteden oluş- maktadır. Bir projedeki ünitelerin hepsi olmasa bile çoğu, bir form içerir. Çalışma anında bir formun oluşturulması için iki adım atılır:
q Delphi formdaki nesneleri sisteme bildirir. Bu adım otomatik olarak, sizin karışmanıza gerek kalmadan atılır.
q CreateForm'a bir çağrıyla form için bellek ayrılır.
Aşağıda basit bir DPR dosyasının varsayılan sözdizimi verilmiştir:

program Projectl;
uses
Forms.
Unitl in 'UNITl.PAS' {Forml};
{$R *.RES}
begin
Application.CreateForm(TForml, Forml);
Application.Run;
end.

Derleyici, CreateForm çağrısını ekler. Eğer bu çağrıyı atarsanız, Application. Run derhal geri döner ve program neredeyse başladığı anda bitmiş olur.
Daha karmaşık programların ana bloğu şöyle olabilir:
begin
Application.CreateForm(Tforml,Forml); Application.CreateForm(TForm2,Form2);
Application.CreateForm(TForm3,Form3); Application.CreateForm(TForm4,Form4);
Application.Run;
end.
Bu kod parçasında CreateForm'a yapılan son üç çağrıyla bellek ayrılan formlar, program ilk çalıştırıldığında görünür değildirler. Bunları görünür hale getirmek için

Form2.Visible := True;
veya
Form2.Show;
yazmalısınız.
Çoğu durumda, bir formu göstermek için yapılan çağrılar bir düğmenin veya menü öğesinin tıklanmasıyla oluşur. Örneğin, ikinci formu bir düğmeyi tıklayarak göstermek isterseniz, düğme için bir OnCIick metodu oluşturmalısınız. Bunun için, tasanın modundayken düğmeyi çift tıklayın ve ortaya çıkan yordamı şöyle doldurun:

procedure TForml.ButtonlClick(Sender: TObject);
begin
Form2.Show;
end;

Yordamı doldurduktan sonra, ikinci form görünür hale gelir. Fareyle tıklayarak formlar arasında geçiş yapabilirsiniz. İkinci formu kapatmak isterseniz, C1ose metodunu çağırmalısınız:

procedure TForm2.ButtonlClick(Sender: TObject);
begin
Close;
end:

Bu kod, ikinci formun gizlenmesine neden olur, ama bellekten atılmasına neden olmaz. İkinci form üzerinde C1ose çağrısını yapmakla aşağıdaki kodu yazmak arasında gerçekte bir fark yoktur:

procedure TForm2.ButtonlClick(Sender: TObject);
begin
Visible := False;
end;
Bununla birlikte, eğer bir uygulamanın ana formu üzerinde Close çağrısını yaparsanız, bu uygulamanın tamamen kapanmasına ve bununla ilişkilendirilen belleğin tamamının geri verilmesine neden olur. 
 






Bu sayfa hakkında yorum ekle:
İsmin:
Mesajınız:

 
  Bugün 112 ziyaretçi (187 klik) kişi burdaydı!