XML Dersleri
Önsöz
MS-DOS'un sıkıcı siyah-beyaz kıyafetlerini çıkartıp, o cıvıl cıvıl Windows kullanıcı arayüzünü giymesiyle Pascal'da kendine yeni bir imaj arayışına girişti. Pascal 7.0 ile gelen Object Pascal ve TWin kütüphanesi bu yeni pencereler dünyasında kendisine bir yer aradıysada Pascal bu yeni dünyadaki asıl patlamasını Delphi 1.0 ile gerçekleştirdi, bunu 32 bitlik sürümü Delphi 2.0 izledi ve daha sonra Windows 95/NT sürümü olan 3.0 ile bu yerini iyice sağlamlaştırdı. Şu anda piyasada en son olarak 4.0 sürümü bulunmakta. Bu alandaki en ciddi rakiplerinden biri olan Visual Basic'e göre piyasada yüzünü göstermekte biraz geç kalmasına rağmen bir çırpıda rakibinin önüne geçip bir çok uygulama geliştiricinin tercihi haline gelmeyi bildi.
Delphi ders notları bu programlama dilini daha önceden hiç bilmeyenlere bir başlangıç şansı vermesi açısından yararlı olacaktır. "Dökümanlar" bölümümüzde Delphi ile ilgilenen siz dostlarımızın sıkça karşılaştıkları sorunları paylaşarak bunlara pratik çözümler aramaya çalışacağız. Bu sayfalarda yararlı ipuçları da bulacaksınız. Ayrıca "Bağlantılar" ve "Kitaplar" bölümlerinde Delphi ile ilgili yardımcı kaynaklara kolayca ulaşabilmeniz hedeflendi. En son olarak "Forum" sayfamızı kullanarak Delphi ile ilgili her türlü sorun, düşünce ve eleştirilerinizi, kendi bulduğunuz çözüm ve yöntemleri arada bir aracı olmaksızın herkese ulaştırabilirsiniz.
Terminoloji
Delphi ders notlarının daha iyi anlaşılabilmesi için ortak bir dil kullanmamız gerektiğine inanıyoruz bu yüzden ders notlarının anlatılmasında kullanılacak bazı terimlerin anlamlarını yeri geldikçe bu sayfa altında vermeye çalışacağız.
Class
Nesneye Dayalı (Object Oriented) programlamada belli bir işlevi yerine getirmesi için kurulmuş, fonksiyonlardan ve verilerden oluşan yapıya class(sınıf) denir.
Property
Bir class'ın belli özelliklerinin sakladığı ve kullanıcı tarafından değiştirilmesine veya kontrol edilmesine izin verilen değişkene property(özellik) denir.
Event
Programın çalışması sırasında dışarıdan girişlere göre değeri değişen özel property'lere event(olay) denir.
Method
Bir class üzerinde çalışan procedure ve fonksiyonlara method(metod) denir.
Procedure ve fonksiyonlarla ilgili daha detaylı bilgi için Pascal ayfasına bakabilirsiniz.
Component
Görsel bir programlama dilinde belli bir işlemi yapmak için tasarlanmış property, event ve methodlar içeren küçük program parçasına component(bileşen) denir.
Form
Görsel bir programlama dilinde program yazarken kullandığımız her türlü komponenti, üzerine yerleştirebildiğimiz ve programımızın kullanıcı ara yüzünü oluşturduğumuz pencerelere form denir.
Delphi Sürümleri
Delphi piyasaya üç sürüm halinde sunulmaktadır:
Standart , Profesyonel ve Client/Server Suite.
Standart Sürüm:
Bu sürüm Delphi ile yeni tanışanları hedefliyor. Bu sürüm Delphi ile Windows programları yazmak için gereken tüm özelliklere sahip.Standart sürümü kullanıyorsanız InstallShield, Database Explorer, Visual Query Builder gibi araçları kullanamazsınız.
Profesyonel Sürüm:
Bu sürüm profesyonel programcıları hedefliyor. Standart sürümün özelliklerinin yanında aşağıdaki özellikleri de içeriyor (Delphi 3 için):
1. VCL'nin kaynak kodu
2. InstallShield Express
3. Database Explorer
4. TChart bileşeni
5. ActiveX ve ActiveForm geliştirme desteği
6. Internet Solutions Pack
7. ODBC Bağlantısı
8. Open Tools API'si
Client/Server Suite:
Bu sürüm client/server (istemci/sunucu) uygulamaları geliştiren programcıları hedefliyor. Bu sürüm Profesyonel sürümün tüm özelliklerinin yanında aşağıdaki özellikleri de içeriyor.
1. Decision Cube CrossTab bileşeni
2. Çok Geniş bir Web hizmet birimi desteği
3. Doğal Client/Server BDE bağlantısı için SQL Links
4. BDE Driver Development Kit
5. SQL Monitor
6. Visual Query Builder
7. CASE Tool Expert
8. Data Pump Expert
Delphi 5
Delphi 5 Enterprise
Delphi 5 Enterprise internet ve dağıtık hesaplama için yüksek üretkenlik çözümüdür. Delphi'nin InternetExpress'i, e-ticareti destekleyen, esnek, yayılabilen sistemleri oluşturmak için HTML 4 ve XML'i kullanan Web Client Page Wizard'ı, dağıtık HTML uygulamaları oluşturmak için MIDAS PageProducer ve WebBroker'ı içerir. ADOExpress ile her türlü bilgiye hızlı erişim kazanırsınız ve TeamSource ile bütün geliştirme takımınızın üretkenliğini arttırabilirsiniz. CORBA, COM ve MTS gibi bütün dağıtık hesaplama standartlarını kullanan MIDAS'ı kullanarak internet uygulamalarınızı arttırabilirsiniz. 200'ün üstünde tekrar kullanılabilen bileşenleri ve kaynağıyla birlikte Visual Component Library kullanan güvenilir uygulamaları oluşturabilir, hata ayıklayabilir ve programlarınızı yayabilirsiniz. Kilit veritabanı sistemleri oluşturmak için Interbase Express'i kullanabilirsiniz. Ayrıca bu paket InterBase, MS SQL, Informix, Sybase ve Oracle için Native SQL Link'leri içermektedir.
Delphi 5 Professional
Delphi 5 Professional, web ve veritabanı uygulamaları oluşturmak için en hızlı, en üretken Windows geliştirme aracıdır. Delphi 5 Professional , profesyonel IDE, WebBroker, Native Internet Components, InterBase Express ve güvenilir hata ayıklama araçlarını içerir. Project Browser, Code Explorer ve Data Module Designer görüntüleriyle kodunuzu anlayabilir ve araştırabilirsiniz.İşiniz için bileşenleri Frame'ler ile görsel olarak oluşturabilirsiniz. MS Office otomasyon kontrolcülerinin tamamını içeren COM nesne ve sunucularını oluşturup yeniden kullanın. Delphi 150 tekrar kullanılabilir bileşeni ile üretkenliği arttıtır ve bütün uygulama evresini yönetir. Güvenilir uygulamaları pazara daha hızlı getirmek için dünyanın en hızlı 32-bit derleyicisini ve Advanced Project Manager' i kullanır.
Delphi 5 Standard
Delphi 5 Standard , sürükle ve bırak görsel programlama, örnekler ve 85'in üstündeki tekrar kullanılabilir bileşenli Visual Component Library ile Windows altında uygulama geliştirmeyi kolaylaştırır. Kolay ve çabucak Word, Excel, PowerPoint ve Outlook için MS Office bileşenleri gibi COM nesnelerini otomatikleştiren Windows uygulamaları oluşturabilir, hata ayıklayabilir ve yayabilirsiniz. Kodu sizin için tamamlayan CodeInsight Wizard'ı kullanabilir, Tek bir satır kod yazmadan tekrar kullanılabilir bileşenleri oluşturmak için Componenet Template'leri kullanabilirsiniz. Artı Microsoft Windows 95 ve Windows NT, Win32 API, COM, ActiveX ve OLE Automation'ı içeren endüstri standartları için tam destek hakkı kazanın. Geliştirme ortamınızı tamamen kişiselleştirmek için Dockable Toolbars ve Dockable Windows'u bu pakette kullanabilirsiniz.
Delphi 5 Yenilikler
XML: Delphi 5, veri dağıtımını ve değişimini kolaylaştırır!
Verilerinizi web'e çabucak ulaştıran yüksek hızlı Internet uygulamaları geliştirebilirsiniz. Delphi'nin XML veri desteği esnek olduğu için internetteki e-ticaret'i desteklemek için genişletilebilir sistemleri kurmanızı sağlar.
HTML 4 : Web için nitelikli Dynamic Thin-client
Delphi 5, HTML 4 ve XML kullanan dinamik ultra-thin istemciler kurmanız için ihtiyacınız olan gücü getiriyor. Bu size nitelikli ve isteklerinize yanıt veren istemci uygulamalarını Internete hızlı yayma olanağı tanır.
ADO: Bütün bilgi kaynaklarına hızlı erişim.
Delphi 5 e-posta ve dosya sistemleri de dahil olmak üzere her türlü veri tabanına hızlı erişim sağlar. Microsoft'un ActiveX Veri Nesnesini ve OLEDB teknolojisini kullanarak son-kullanıcılarınızın daha iyi ticari karar vermeleri için ihtiyaç duydukları veri evrenine anında erişim kazanabilirsiniz. Delphi'nin açık veri bileşenlerini kullanarak, kısa zamanda ticari verilerinizi internette müşterilerinize, son kullanıcılarınıza ve bütün hedef kitlenize götüren sistemler kurabilirsiniz. ADO son kullanıcınızın istemci işletim sisteminin standart bir parçası haline geldiğinden, programlarınız kolayca yayılabilecek.
InterBase Express: Yüksek performanslı sistemler
InterBase Express ile, VAR'lar, SI'lar ve ISV'ler programları, çabuk dağıtılabilen yüksek performanslı sistemleri inşa edebilirsiniz. Delphi ve InterBase ile, yüksek üretkenlik, yüksek performanslı geliştirme yapabilirsiniz. Ayrıca yüksek hızlı, az bakım isteyen, small-footprint ilişkisel veri tabanı birleştirilmiştir. Interbase Express ile mükemmel gömülü sistemler oluşturmak için artık Borland Database Engine ile geliştirme ve dağıtma yapmanıza gerek kalmayacak.
TeamSource: Bütün geliştirme takımınıza üretkenlikte cesaret verin
Delphi 5 ile bütün takımınız, birlikte daha iyi ve daha hızlı çalışacak. TeamSource kaynak kodunuzu yönetim biçiminizde bir devrimdir. TeamSource, varolan kaynak kodu yönetiminizin ve sürüm motorunuzun üzerinde oluşturulur ve bunları büyük dağıtık takımlar için kaynak kodu yönetimini basitleştiren yüksek üretkenlikli iş akışı modeli ile yayar.
Borland Çeviri Takımı: Dünya çapında yeni pazarları keşfedin!
Delphi 5 ile, programlarınız için pazar bütün gezegeni kapsayacak şekilde büyümüştür. Borland Çeviri Takımında programlarınızı yeni dil ve kültürler için hızlı bir şekilde globalleştirmek veya yerelleştirmek için ihtiyacınız olan herşey mevcut. Programlarınızı daha hızlı pazarlayabilmek için aynı anda birden fazla bölge için geliştirebilirsiniz. Delphi, kaynakların tercümesini yönetir ve uluslarası geliştirmenizi ivmelendirmek için çevrilmiş nesnelerin bir örneğini tutar.
MIDAS: Internet uygulamalarınız için ölçülebilirlik.
MIDAS ile Internet tabanlı uygulamaların taleplerini karşılayan sistemler inşa edebilirsiniz. MIDAS işlem hacminizin ölçüsü programları dağıtmak için Delphi'nin yüksek üretkenliği üzerine inşa edilmiştir. Son kullanıcı sayısını arttırır. Çok sayıda web tarayıcısı istemcilerinin , internetteki veya intranet inizdeki Windows istemcilerinin kolaylıkla üstesinden gelebilecek Internet uygulamalarını oluşturabilirsiniz.MIDAS, varolan sistemleriniz ile e-ticaret uygulamalarının birleştirilmesini kolaylaştırmak için CORBA, COM ve MTS gibi bütün dağıtık hesap standartlarını kullanır. MIDAS'taki birçok yeni özellikten bazıları:
- Mobil ve düşük bant genişliği durumlarında daha fazla kontrol için Stateless DataBroker
- Programlarınızı firewall'un dışına güvenli bir şekilde taşıyabilmek için WebConnection bileşenleri
- Geliştirilmiş ölçülebilirlik için sunucu nesne havuzlama
IDE: Geliştirici için yüksek üretkenlik.
Delphi 5 IDE, kodu okuma, yazma ve araştırma işlemini kolaylaştırarak geliştiricinin üretkenliğini yüksek ölçüde artırır. Kod editörü bir ünite içinde veya ilişkili üniteler arasında gezinmeyi kolaylaştırır. Proje yöneticisindeki Sürükle ve Bırak desteği herhangi bir açık projeden veya Windows Gezgini dosya diyalogundan projeye dosyaları eklemeyi kolaylaştırır. Proje yöneticisinin çoklu proje desteğini kullanarak, EXE ve DLL dosyaları gibi birden fazla hedefte kolay derleme yapabilirsiniz. Delphi'nin görsel form dizayncısı ile hızlı bir şekilde Internet, dağıtık hesap ve Windows uygulanmalarını görsel olarak bir panelden bileşenleri seçerek oluşturabilirsiniz.
Delphi 5 birçok yeni özellik ve VCL'e artırımlar içerir:
- Geliştirme ortamınızın daha fazla kontrolü için kişiselleştirilebilen Masaüstü Ayarları
- Editörü çalışma şeklinize göre ayarlayabileceğiniz Editor Key mapping
- Kodunuzu daha iyi anlamak ve VCL'i taramak için proje çapında araştırma
- Programınızda verinin ayrıntılı anlatılabilirlik kazanması için Tree ve Data Diagram View ile DataModule Dizayncısı
- Proje yöneticisi ve derleyicisi için bütünleşmiş RC Dosyaları
- Uygulamanızın takvimini tutmak için Yapılacaklar listesi
- Programınızın özelliklerini ayarlamak için Denetim Masası
Visual Component Library: Kod tekrar kullanımında son nokta
Delphi ile güvenilir ve verimli uygulamalar oluşturmak için nesne tabanlı uygulama gücünü, kendi yararınıza kullanırsınız. Delphi'nin ispatlanmış nesne tabanlı bileşen yapısı ile kendi bileşenlerinizi inşa edin. Delphi 5 (Delphi Enterprise'da) 200'ün üstünde Internet ve Windows uygulamalarınız için pazarlama hızını dramatik arttıran bileşenleri içeren Visual Component Library içerir. Yeni Frame özelliği ile işiniz için görsel olarak bileşenler inşa edeceğinizden üretkenliğiniz artacak. Kaynak koda açık erişim ile VCL' in şıklığını keşfedeceksiniz. (Şimdi Decision Cube bileşenleri ve ek Property Editors için ek kaynak kod içerir). Delphi ile bileşen tabanlı geliştirme, Windows ya da Internet uygulamaları gibi en zor geliştirme görevlerini basitleştirir. Delphi 5 VCL ile ilgili birçok yeni özellik ve artırımlar içerir:
- Karmaşık bileşenler derlemek ve inşa etmek için Frameler
- Uygulamanızla HTML arattırmayı birleştirmek için WebBrowser bileşeni
- Word, Excel ve Outlook gibi Office uygulamaları ile kendi programlarınızı hızlı bir şekilde entegre etmek için MS Office otomasyon bileşenleri kümesi
- Öğrenme ve üretkenliği arttırmak için Property Category'ler
- Özellik seçeneklerini basitleştirmek için Property Editor'ünde Owner Draw desteği
- Windows API üzerinde daha fazla kontrol için Advanced Custom Draw fonksiyonlarına geliştirilmiş destek
Karmaşık projeleri pazara daha hızlı taşımak için gelişmiş hata ayıklama
Delphi ile, en karmaşık projelerde bile hataları bulmak ve ayıklamak daha önce hiç daha basit olmamıştı. Delphi'nin geliştirilmiş hata ayıklayıcısı kodunuzun ne yapacağını anlamanıza ve kontrol etmenize yardımcı olur. Breakpoint'ler ile kodda istediğimniz noktada yoğunlaşabilirsiniz. Şimdi breakpoint'te yapılması gereken işi ayarlayıp breakpoint'leri gruplayarak kodunuzun ilgilendiğiniz bölümlerini çabucak hata ayıklayabilirsiniz. Delphi 5 hata ayıklayıcısı için birçok yeni özellik ve artırımlar içerir:
- Pano ve sürükle ve bırak desteği de dahil olmak üzere, editör ile hata ayıklama pencerelerinin entegrasyonu ve kolay kullanılabilirlik
- Daha hızlı araştırma için Breakpoint ToolTip'leri
- Hata ayıklama işlemi üzerinde daha fazla kontrol için Breakpoint Action'ları
- Birden fazla breakpoint'i daha kolay kontrol için Breakpoint Groups
- DCUlar ve Hata Ayıklama sembol arama yolları ile daha kolay hata ayıklama
- Artırılmış düşük seviyeli hata ayıklama için MMX desteğiyle birlikte FPU görüşü
- Çok-işlem hata ayıklama
- Merkezileşmşt çok-işlemli hata ayıklama için Temporary Process Option'ları
- İşlem sınırlarını geçmek için Çapraz işlem hata ayıklama
- Üretilmiş işlemleri ayıklama
- Çalışan işleme ekleme yapma ve hata ayıklama
Kullanıcı Arayüzü
Borland (Inprise) program yazılan ortamlarını, ürünlerinde IDE diye tanımlar.
IDE:
Integrated Development Environment (Tümleşik Geliştirme Ortamı)
Delphi'de çalışma ortamı Menu Bar, SpeedBar, Component Palette, Form, Object Inspector ve Code Editor arayüzünden oluşur. Çalışma ortamını anlamadan iyi bir program yazılamaz. Bu yüzden IDE'yi iyi anlamak gerekir.
Şekil 1. IDE Delphi Tümleşik Geliştirme Ekranı
Ana Menü
Tüm windows uygulamalarında olduğu gibi Delphi'de menü programcı için en önemli araçtır. Delphi ana menüsünü kullanarak neler yapacağımıza bir gözatalım.
Şekil 1. Delphi Ana Menüsü
File
File menüsü altında delphinin en temel işlemleri olan yeni proje yaratma, varolan bir projeyi çağırma, kaydetme veya kapatma bu menüden yapılmakta. Şimdi bu menüyü daha yakından inceleyelim.
New
New seçildiğinde ileride anlatacağımız Yeni Bileşenler (New Items) ekranı gelir.
New Application, New Form, New Data Module
Bunlar sırasıyla yeni bir uygulama, yeni bir form ve yeni bir Veri Kaynağı yaratmak için kullanılırlar.
Save, Save As, Close, Print, Exit
Temel windows uygulamalarında da sıkça kullanılan bu menü komutları Delphi'de benzer şekilde kullanılırlar.
Save Project As
Projeyi başka bir isimle kaydetmek için kullanılır.
Save All, Close All
Bunlar sırasıyla o anda açık olan proje, unit, form, vb. herşeyi kaydetmek veya kapatmak için kullanılırlar.
Use Unit
Bir unit'in başka bir unit'i tanıyabilmesi için o unit'e "uses unit_ismi" şeklinde bir satır ekler.
Add to Project, Remove From Project
Bu menü komutları bir projeye yeni bir unit eklemek veya projeden bir unit çıkartmak için kullanılırlar.
Delphi İçin Buton Efektleri (Web Türü Buton)
Web türü buton yapmanın amacı bildiğiniz gibi delphinin standart buttonları genellikle klasik programlar için kullanılır . Şimdi yapacağımız button kendi çizdiğimiz 3 resimden oluşuyor. Öncelikle 3 adet aynı boyda aynı textli button çizin. 1. Resim ; buttonun Sabit yani Form üzerindeki duruşudur 2. Resim ; Programımız çalışırken mouse ile aynı buttonun üzerine geldiğimize buttonun alacağı şekil olacaktır. 3.Resim ; Programımız çalışırken yaptığımız button tıklanınca alacağı şekildir.
Dikkat ettiyseniz bu taktik HTLM (Web ) için button hazırlanması taktiği ile aynıdır. Şimdi bu taktiği kullanmaya başlayalım . Öncelikle Form üzerine Image kontrolünü ekleyelim ve resim olarak yaptığımız 1. resmi ekleyelim. Şımdi sıra Programımıza değişken tanımlayalım;
SetMouse : boolean;
Değişken tanımlama işimiz bitince Image Mouse Down olayına aşağıdaki kodları yazınız
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SetMouse := true; //Mouse Resmin üzerinde Basık olduğunu anlamamız için
image1.Picture.LoadFromFile('start-3.bmp'); //Mouse Click Durumunda
end;
Daha Sonra image Mouse Move Olayına aşağıdaki kodları yazınız
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
image1.Picture.LoadFromFile('start-2.bmp'); //Mouse Buttonun üzerine gelince buttonun alacağı şekil
if SetMouse then
image1.Picture.LoadFromFile('start-3.bmp'); //Mouse Click Durumunda Buttonun üzerindeki şekil
end;
Mouse button üzerinde click vaziyetinde olup olmadığını değişkene aktarmak için Image Mouse up olayına aşağıdaki kodu yazınız
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
SetMouse := false; //Mouse Click Durumunda Değil
end;
Button Görüntüleri Tamamlandı şimdi Click Yordamını yapalım. Image Click olayına aşağıdaki kodu yazınız .
procedure TForm1.Image1OnClick(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
image1.Picture.LoadFromFile('start-3.jpg');
ShowMessage('Button Tıklandı ');
end;
Buttonla olan işimiz bitti Mouse buttonumuzun üzerinde olmadığı zaman için mouse şeklini yapalım bunun için Form Mouse Move Olayına Aşağıdaki kodları yazınız.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
image1.Picture.LoadFromFile('start-1.jpg');
end;
Ve işlemimiz bitti. Programınızda birden fazla Bu tür button koymanız için Bütün buttonlar için aynı işlemi yapınız. Form Mouse Move olayına her button için yukarıdaki program satırını yazınız.
Örnek:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
image1.Picture.LoadFromFile('Connect-1.jpg');
image2.Picture.LoadFromFile('DeConnect-1.jpg');
image3.Picture.LoadFromFile('Atack-1.jpg');
image4.Picture.LoadFromFile('Exit-1.jpg');
end;
şeklinde yapınız .
Bildiğiniz gibi Web' de bu taktiği kullanmamız için Button için yaptığımız resimlerin HTLM de belirtilen Dizinde olması gerekir .Yani Bizim yukarıda yaptığımız olayda resim dosyalarının yerini belirtmememizin amacı resim Button Resim Dosyalarının Program ile aynı dizinde olmasıdır. Bu yüzden sorunun ne olduğunu anladınız galiba yani program bu açıktan dolayı kullanıcı tarıfından değiştirilebilir. Winamp MP3 çalıcıyı bilirsiniz . Winamp SKIN'nin ne olduğunu da biliyorsunuz sanırım , Yani demek istediğim Winamp SKIN'de de bu taktik kullanılmıştır .
Aslında bu sorun değil , çünkü bu olayı IMAGE LIST Kontrolü de yapar. IMAGE LIST bir Olay için kullanılan birden fazla resim için kullanılan resim dosyaları olmadan programın bağımsız çalışması için kullanılır. IMAGE LIST Delphinin Win32 sekmesinde bulunur . Gif taktiğine benzer bir taktikle çalışır, biraz incelerseniz kolaylıkla kullanabilirsiniz. Bu arada Delphinin Additional sekmesinde bulunan BitBTN kontrolüyle de buna benzer ama kolay Button kullanabilirsiniz.
Delphiye Yeni Bir Bileşen
Delphi'ye yeni bir bileşen (component) ilave etmek için; eğer ilk kez ilave ediyorsak; Component | Install Component menüsünü kullanabiliriz. Bu işlem yapılıp onay verildikten sonra bileşen Delphi'ye derlenecek ve Dclusr30.dpk ismi ve "Delphi User Components" takma adı ile yeni component'lerinizi ilave edebilmeniz için bir component paketi oluşturulacaktır. Bundan sonra yeni bir component ilave etmek Component | Install Packages menü adımından yapılmalıdır. Bu adımı takip ettiğimizde karşımıza Delphi üzerinde bulunan component paketleri listelenecektir. Bu kısımda takma adı "Delphi User Components" yazan paketi işaretleyip Edit tuşuna basmalısınız. Çıkan pencerede "Compile, Add, Remove, Options, Install, Update" gibi button'lar göreceksiniz. Bu button'lardan "Add" button'u yeni bir component'i ilave edeceğimiz manasını taşır. Component'i ilave ettikten sonra Delphi'ye tanıtabilmemiz için Compile button'una basmamız gerekir. Delphi tam bu aşamada component'in "Register" procedure'ünün altında bulunan "RegisterComponents" in içindeki palet adını alarak component'inizi o sayfanın altına koyar. Ayrıca Dclusr30.Dpl adlı bir dosyayıda oluşturur. Bu pencerede gördüğümüz Options kısmından pek çok değişiklik yapılabilmektedir. Bunların başyıda "Delphi User Components" olan başlık bilgisi istediğiniz bir ifade ile değiştirilebilir.
Windows API
Windowsda hemen hemen her görsel bileşen bir penceredir ve her pencerenin Windows'un aklında tuttuğu bir tutacağı vardır.Buna programcılık ortamında "Handle" denir. Bu tutacak (Handle) vasıtası ile görsel olan tüm kontrollere erişebilirsiniz ve onları istediğiniz gibi kontrol edebilirsiniz. Esas problem bu penceresel denetimin tutacağını (handle) nasıl bulacağımızdadır. Bunun için Windows API'nin içinde FindWindow ve FindWindowEx adlı fonksiyonlar mevcuttur. Bu fonksiyonlar herhangi bir pencereye başlığı (caption) yada sınıf adı ile erişip geri dönüşte de pencere tutacağını döndürürler.Bu sayede penceresel denetimlere istenilen yaptırılabilir. Bazı penceresel denetimlere sınıf adı ile erişmek gerekir. Çünki bazılarının başlık bilgileri mevcut değildir.Örneğin TaskBar için bir başlık bilgisi yoktur. Öyleyse TaskBar ve onun gibi başlık bilgisi olmayan penceresel denetimlere nasıl erişeceğiz. Bunun için benim sizlere tavsiyem Borland Delphi ile gelen WinSight programını kullanmanızdır. Bu program vasıtası ile Windows altında o anda çalışan programların tutacaklarını, sınıf adlarını, çocuk pencerelerinin ad ve tutacakları gibi gerekli bilgileri elde edebilirsiniz.
Windows mesajların gelip gittiği bir işletim sistemidir. Şimdi mesaj kavramını biraz açıklamak gerekir. Mesaj herhangi bir programın, görsel yada görsel olmayan tüm Windows kontrollerinin ne yapması gerektiğini yada ne yaptığını anlamamızı sağlayan bir yapıdır.
Windows bir mesajlar hiyerarşisinden oluşmuştur. Windows'ta olup biten herşeyin bir mesajı vardır. Örneğin bir button'un üzerine gelmek, onun üzerinde mouse ile dolaşmak, sağ kliklemek, sol kliklemek, aktif pencereyi değiştirmek, herhangi bir tuşa basmak, herhangi bir tuşu bırakmak bunların hepsi aktif pencereye dolayısıyla İşletim sistemine gönderilen mesajlardır.
Örneğin herhangi bir pencere üzerinde bir tuşa basarsanız Windows hemen bir Wm_Keydown, Wm_Char vb. mesajları uygulama penceresine gönderecektir. Yani bir mesaj oluşturacaktır. Bu mesaja bağlı bir kodunuz mevcut ise o olay oluştuktan (yani mesaj gönderildikten) sonra var olan kod çalıştırılacaktır. Windows'un API yardımında "Wm_" kelimesi arattığınızda mesajlar hakkında daha detaılı bilgi bulabilme imkanına sahip olursunuz.
Bazı durumlarda Windows'u mesaj konusunda zorlamak gerekir. Gerçekte olmayan bir olayı Windows'a olmuş olarak nasıl gösterebiliriz...?
Örneğin yaptığımız bir programın olay yöneticilerinden bir tanesinin tuşa basma olayına yönlendiğini düşünelim. Yani programımızın aktif formunun üzerinde klavye'nin herhangi bir tuşuna basılınca herhangi bir olayın gerçekleşeceğini düşünelim. Bu gibi bir durum sözkonusu iken başka bir uygulama aktif durumdayken acaba bu isteğimizi nasıl gerçekleştireceğiz..?
Yine bu iş için Windows'un API fonksiyonlarından iki tanesini anlatmak isterim. Bunlardan birincisi SendMessage, ikincisi PostMessage fonksiyonlarıdır. Bu fonksiyonlar Windows ortamına harici mesajlar gönderebilmenizi sağlar.
SendMessage fonksiyonu ile Windows ortamına gönderilen mesajlar "Message queue" adı verilen mesaj kuyruğunun en sonuna atılır ve en üstteki mesajdan en alttakine doğru işletim sistemince sıra ile işlenir. Bu fonksiyon vasıtası ile gönderilen mesajların aktivasyonunu görmek biraz geç olabilir ama daha sağlıklıdır.
PostMessage fonksiyonu ise Windows Mesaj kuyruğunun en başına yerleşir. Yani mesaj gönderilir gönderilmez aktif hale geçer ve etkisini kısa bir zaman içinde görebilirsiniz.
Şimdi kısa bir örnek verelim..
- Eğer winsight programınız var ise onu açın.
- Windows'un Calculator (Hesap makinası) programını çalıştırın.
- Winsight programında Hesap mkinasını bulunca onun sol tarafında sınıf adı olarak "sciCalc" göreceksiniz.
- Şimdi WinSight programını kapatın. (Zira hafızada çok yer kaplar).
- Şimdi hesap makinasının pencere tutacağını almamız gerekir. (Sınıf adını bildiğimiz için bu çok kolay..)
- Bunun için H:=FindWindow(PChar('SciCalc'),Nil); yazmak yeterlidir. (Burada H, HWND tipinde bir değişkendir.)
- Bunu bulduktan sonra bu pencereye elimizde var olan tutacağı vasıtası ile istenilen mesaj gönderilebilir. Örneğin tuşa basma olayı, şöyleki programımızın OnKeyDown olay yöneticisinde PostMessage(H,WM_Keydown,Key,0); şeklinde bir kod yazarsak Hesap makinasında basılan tuşların aktive olduğunu göreceksiniz.
TCP/IP Protokolünü Kullanarak Pingleme
Delphi 3 ile TCP/IP kontrolünü kullanmak için Internet sekmesinden TCP/IP kontrolünü ve Standart sekmesinden de Button kontrolünü Form'unuza ekleyin. Daha Sonra Button1Click procedürüne şu komut dizisini yazın:
procedure TForm1.Button1Click(Sender: TObject);
var
LocalName, LocalIp, RemoteIp, RemoteHost:string;
begin
{Değişkenlerimize TCP1 Kontrolünden Datalar Aktarılıyor}
LocalName := TCP1.LocalHostName;
LocalIp := TCP1.LocalIP ;
RemoteIp := TCP1.RemoteHostIP ;
RemoteHost:= TCP1.RemoteHost ;
{Sıra Geldi Kullanıcıya Aktarmaya}
Canvas.TextOut(20,20,'Local Name : '+LocalName);
Canvas.TextOut(20,50,'Local Ip : '+LocalIp);
Canvas.TextOut(20,80,'Remote Ip : '+RemoteIp);
Canvas.TextOut(20,120,'Remote Host :'+RemoteHost);
end;
Delphi ile MS Access Database'ine Bağlantı
Delphi'den MS Access Databaseine ulaşabilmek için sırasıyla yapılması gerekenler aşağıdaki gibidir:
- Windows Control Panel'i açın
- ODBC simgesini çift tıklayın
- User DSN tabına gelin ve Add butonuna basın
- Driver olarak "Microsoft Access Driver (*.mdb)" yi seçin ve Finish butonuna basın
- Data Source Name'i olarak kullanmak istediğiniz bir isim verin. De******ion kısmına isterseniz database'inizle ilgili bir açıklama yazabilirsiniz.
- Daha sonra Select butonuna basarak database isminizi verin
- Advanced butonuna basarak kullanıcı adı ve şifresi tanımlayabilirsiniz (zorunlu değil)
- OK butonuna basıp ODBC ekranını kapatın
- Şimdi programınıza bir TDatabase objesi ekleyin
- AliasName olarak ODBC ayarlarında verdiğiniz (5) Data Source Name'i seçin
- Database Name olarak istediğiniz bir isim yazın
- Eğer 7. basamakta bir kullanıcı adı ve şifresi girmediyseniz login ekranın çıkmaması için LoginPrompt seçeneğini false yapın
Eğer database'in bir kullanıcı adı ve şifresi varsa LoginPrompt seçeneğini False yapmanız durumunda database'e ulaşamazsınız.
- Programınıza bit TTable ekleyin
- Database Name kısmına TDatabase bileşeninde Database Name kısmına 11. adımda verdiğiniz ismi seçin
- Programınıza bit TDataSource ekleyin
- DataSet değeri olarak 13. adımda eklediğiniz TTable adını verin
Artık MS Access Database'ine bağlı bir table'a sahipsiniz.
Delphi Dosya Uzantıları
Delphi tarafından yaratılan dosyaların uzantıları ne anlama geliyor ve bu dosyalar ne işe yarıyor biliyormusunuz? İşte size bu dosya uzantılarının açıklamalı bir listesi.
DPR - Delphi Proje Dosyası.
~DP - Proje dosyasının en son kayıt işleminden önceki yedeği
PAS - Bir unit veya form'a ait kaynak kod dosyası.
~PA - Bir .PAS dosyasının en son kayıt işleminden önceki yedeği.
DFM - PAS uzantılı bir dosyayla aynı ismi taşır ve Bileşen(Component)'lerin binary olarak ilk değerlerini saklar.
~DF - Bir .DFM dosyasının en son kayıt işleminden önceki yedeği.
DCU - Derlenmiş Delpi unit. Kavram olarak OBJ dosyalarıyla aynı işe yarar.
DSM - Sembol bilgi dosyası. Bu dosya delphi projesinin çalışabilir hali oluşturulurken dahili debugger tarafından oluşturulur.
OPT - Proje Seçenekler dosyası. Derleyici(compiler) ve Bağlayıcı(Linker) ayarlarını, hangi formun ana form olduğunu, uygulamanızın hagi icon'u kullandığı gibi bilgileri içerir.
RES - Windows Kaynak dosyası; Delph tarafından derleme esnasında otomatik olarak yaratılır.
EXE - Çalışabilir uygulama dosyası.
Açılış Formu
Project Source'u açın. Eğer bir çok form kullanıyorsanız projenizde Application.CreateForm(TForm2, Form2); satırından sonra diğer formları da aynen form2 gibi yaratın. Ve bir alt satırına ekleyin:
Application.CreateForm(Tform3, Form3); /gibi…
name:form1 /SplashScreen olarak kullanılacak form
name:form2 /Ana formumuz.