DELPHİ COMPONENT LIBRARY KULLANMA

Slides:



Advertisements
Benzer bir sunumlar
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Advertisements

 Mendeley nedir?  Kütüphanenizi oluşturun  Belgelerinizin ve referanslarınızın yönetimi  Referanslara alıntı yapılması ve paylaşılması İçindekiler.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
EK DERS UYGULAMA REHBERİ. GIRIŞ EKRANı Sisteme giriş için adresi kullanılmaktadır. Kullanıcı adı ve şifre için ö ğ renci bilgi.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 11: Birden Çok Form ile Çalışma ve Menü Oluşturma Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
SUNU HAZIRLAMA PROGRAMI: powerpoint
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 9: Genel Kontroller (1) Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Dosya Yönetimi Dosya, Klasör ve Sürücüler HÜSEYİN ALİOSMANOĞLU.
LUCA Bilgisayarlı muhasebe programı
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
Bağlama ve Kapsam Kavramları
Grafik ve Animasyon-II FLASH CS5 Öğr.Gör. Onur BULUT.
HAZIRLAYANLAR ZELİHA OKÇU ÖZGÜL ERGÜL  Bir hesap tablosu programıdır. Excel, her türlü veriyi (özellikle sayısal verileri) tablolar ya da listeler halinde.
Sevgili 8.sınıf öğrencisi; Kendi yeteneklerin, ilgilerin, değerlerin hakkında bilgi sahibi olmak ve daha doğru lise tercihi yapabilmek için lütfen öncesinde.
BTEP222 Animasyonla Hikaye Anlatımı KONU 3: PROSEDÜR VE ARGÜMANLARı KULLANMA.
Açlığını Gider Detaylı Kullanım Kılavuzu
EBSCOhost Collection Manager Arama Profilleri
APP INVENTOR Emre ANLAR.
BİLGİSAYAR PROGRAMLAMA DERSİ
Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
Excel 2007.
OLAYLAR (EVENT).
DOSYA YÖNETİMİ MUSTAFA TEZCAN MART, 2017.
EBSCO Discovery Service
KDV BEYANNAMESİ / MUHTASAR BEYANNAME / KURUMLAR VERGİSİ BEYANNAMESİ / GEÇİCİ VERGİ BEYANNAMESİ’NDE ORTAK ÖZELLİKLER F5 PENCERESİ Beyannamelerde yer alacak.
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
Delphi Ders3 Asli Ergün.
TAM SAYILAR.
Transaction ve Örnekler
Çiğdem ÇOBAN Bilgisayar Mühendisi
SUNUM PROGRAMLARI (Bölüm 2)
KELİME İŞLEMCİLER (Bölüm 1)
RESİM VE RESİM DÜZENLEME İŞLEMLERİ
TEMEL DOSYA İŞLEMLERİ Dosya Nedir? Dosya Uzantılarını Açmak/Kapatmak
Klavye Kullanımı.
EBSCO Discovery Service (EDS) Daha İsabetli Sonuç Listeleri
My EBSCOhost Kişisel Klasörünün Kullanımı
Dosya, Klasör ve Sürücüler
GÖRSEL PROGRAMLAMA DİLİ:
Kullanıcı Kılavuzu DynaMed Plus support.ebsco.com.
İNTERNETTE ARAMAYI ÖĞRENİYORUM
Temel Bilgisayar Bilgileri
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
3.hafta METODLAR.
Bilgisayar Programlamasına ve Veri Analizine Giriş
1. Konfigürasyon oluşturma
EBSCO Discovery Service (EDS) Akademik Arama Motoru/Keşif Aracı
Microsoft SharePoint'inizi özelleştirme Çevrimiçi web sitesi
Bu konudaki her şeyi okuyun Microsoft SharePoint Haberler
BİTLİS EREN ÜNİVERSİTESİ
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
TOPLU POSTALAMA İŞLEMİ İÇİN ETİKET OLUŞTURMA VE YAZDIRMA
B+-Ağaçları.
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar II 26 Nisan-7Mayıs Öğr. Gör. Feyza Tekinbaş.
Bilgisayarım Simgesinin Kullanımı Dosyaların Yönetimi
Bilgisayar Bilimi Koşullu Durumlar.
Sunucu Bilgisayara Eğitim Yazılımı Yüklemek İçin;
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
TURNITIN programında tez tarama
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Wiki Eğitim – Artık Hayal Değil
Etkinlik ayrıntılarınızı buraya yazın
İŞ ZEKASI UYGULAMALARI İLE ÜST YÖNETİM GRAFİK RAPORLAMA
Sunum transkripti:

DELPHİ COMPONENT LIBRARY KULLANMA Visual Component Library (VCL) Borland component library for cross-platform (CLX) Bileşen kütüphanesi iki temel kütüphaneden meydana gelmiştir. VCL sadece Windows platformu için kaynak sağlarken, CLX hem Windows hem de Linux platformu için kaynak sağlar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

DELPHİ COMPONENT LIBRARY KULLANMA Nesneleri içeren farklı alt kütüphaneleri: BaseCLX: CLX uygulamaları için düşük seviyeleri sınıfları ve rutinleri içerir. BaseCLX, çalışma zamanı kütüphanelerini (Runtime library-RTL) ve classes uniti de içerir. DataCLX: İstemci veri erişim bileşenlerini içerir. Buradaki bileşenlerin tamamı veritabanları ile çalışmak için tasarlanmışlardır. NetCLX: Buradaki bileşenler web uygulamalarını geliştirmek içindir. Aynı zamanda Apache ve CGI web sunucularını kullanan uygulamaları da desteklerler. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

DELPHİ COMPONENT LIBRARY KULLANMA Nesneleri içeren farklı alt kütüphaneleri: VisualCLX: Cross-platform GUI bileşenleri ve grafik sınıfları burada yer alır. WinCLX: Sadece Windows platformu için sınıfları içerir. Aynı zamanda Windows uygulamaları için kontrolleri, veritabanı erişim kontrollerini (BDE,ADO) içerir. VCL ve CLX çok sayıda aynı alt kütüphaneleri içerirler. Her ikisinde de baseCLX, dataCLX, netCLX kullanılırken; VCL bunlara ek olarak WinCLX kullanırken, CLX de visual CLX’i kullanır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesneler(Objects), Bileşenler (Components) ve Kontroller(Controls) Önemli sınıflar(class) şunlardır: TObject: VCL ve CLX kütüphanelerindeki tüm bileşenler bu nesneden türetilmişlerdir. Exception: VCL ile ilişkili olan tüm istisna sınıflarına temel teşkil eder. İstisnalar hataları yakalamak ve kontrol etmek için tutarlı ara birim sağlarlar. TPersistent: Tüm nesnelerin kendi özelliklerini yayımlamalarını sağlamak için bir temel teşkil eder. Tcomponent: Tüm componentler için bir temel sınıf teşkil eder. Bileşenler component paletine eklenebilir ve tasarım zamanında form üzerine alınabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesneler(Objects), Bileşenler (Components) ve Kontroller(Controls) Önemli sınıflar(class) şunlardır: Tcontrol: Çalışma zamanında görülen tüm kontrolleri temsil eder. Tcontrol tüm görsel kontroller için ortak bir ancestor dur. Bu sınıf aynı zamanda fare aksiyonlarına cevap vermek için olaylar sağlar. Twincontrol: Klavye kontrolü alabilen tüm kontroller için bir temel teşkil eder. Twidgetcontrol: CLX platformu için kullanılan ve Twincontrol ile aynı amacı paylaşan bir sınıftır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DELPHİ NESNE MODELİ Nesne Nedir? Bir sınıf(class); tek bir unit içerinde veri biçimliliğini sağlayan ve bunu kullanabilen bir veri tipidir. Bir nesne(Object) ise bir sınıfın türevidir. Yani tipi sınıf olan bir değerdir. Nesneler kendi verileri üzerinde çalışmaları için fonksiyon ve prosedürleri içerirler. Bu fonksiyon ve prosedürler metod olarak isimlendirilir. Bir nesnenin veri elemanlarına özellikleri (Properties) ile ulaşılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Bir Delphi Nesnesini İnceleme unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) // Formun tip tanımı başladı Button1: TButton; procedure Button1Click(Sender:TObject)//yeni metot private { Private declarations } // özel tanımlamalar public { Public declarations } // genel tanımlamalar end; … // Tip tanımı burada sona erer TForm1 yeni bir nesne tipinde olup; TForm sınıf tipinden türetilmiştir. Eğer prosedürü diğer unit lerde de çağırmak istersek Prosedür tanımını Public kısmında; sadece unit içerisinde çağırmak istersek Private kısmında tanımlamalıyız. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Bir Delphi Nesnesini İnceleme … var Form1: TForm1; İmplementation // uygulama kısım başlangıcı {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Begin // Yeni metoda ait kodlar Form1.Color:=clBlue; end; end. // implementation kısmının sonu TButton bir sınıf tipi, Button1 ise bir nesnedir. Kod penceresindeki tüm olay prosedürleri form nesnesinin metotlarıdır 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme 1) File-New-Unit seçenekleriyle yeni unit eklenir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme 2) TPersonel adında ve üç tane üyesi olan bir tip tanımlayalım. Private bölümünde alan adlarını, Public kısmında ise özellikleri ve metotları tanımlayalım. 3) Function MaasHesapla(gun:integer):Double ifadesinin hemen sonunda iken Ctrl+Shift+C tuşlarına basılır. Bu işlemden sonra MaasHesapla isimli metodun tanımına maaşı hesaplanacak kodlar yazılır. 4) Fonksiyon tanımlama aralığında çalışılan gün sayısı ve günlük ücret çarpılarak personelin maaşı hesaplanır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme 5) Projeye ait olan Unit1’ e geçin ve Implementation kısmında “Uses unit2;” satırını ekleyin. Bu satır yeni tanımladığımız sınıfı kullanmamızı sağlayacaktır. 6) Button1Click olayına TPersonel sınıfından personelim adında yeni bir sınıf türetilecek ve sınıfa ait özellik ve metotları kullanacak kodlar yazılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme Programı çalıştırın ve test edin. Form üzerindeki düğmeyi tıkladığımızda Button1Click olayı tetiklenecek ve personelim adında yeni bir sınıf türetilecektir. Ayrıca bu sınıfta tanımlanan MaasHesapla metodu çalıştırılarak 30 gün olarak girilen personelin maaşı hesaplanarak gösterilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Nesne Oluşturma ve Yok Etme Form üzerindeki companentler otomatik olarak oluşturulur ve ardından otomatik olarak yok edilir. Her bir nesne TObject nesnesinden miras alınan Destroy metodunu kullanarak kendisini yok edilebilir. TObject nesnesinden miras alınan Free metodu, Destroy metodundan önce kullanılır. Örneğin; Personelim.Free; kullanımı ile personelim bellekten atılarak kaynaklar serbest bırakılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya Streamleri Kullanma: Streamler verileri okuyup yazabilen, dosyalarla çalışmada önerilen en iyi yaklaşım biçimidir. TFileStream sınıfı uygulamaların kolay bir biçimde disk üzerindeki dosyaları okuyup yazmasını sağlar. Çünkü TFilestream bir stream nesnesidir. Dosya oluşturmak yada dosya açmak için TFileStream sınıfından yeni bir nesne türetilir. Dosya oluşturmak için kullanılan Create protitipi örneği: Create(const dosyaadi: string; Mod: Word); overload; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya diskte mi – FileExists(dosya) if not FileExists(‘config.cfg’) then showmessage(‘Ayar dosyası bulunmadı’); Dosya silme – DeleteFile(dosyaAdı) DeleteFile(‘c:\doc\gereksiz.doc’); Dosya Arama – FindFirst, FindNext, FindClose FindFirst(aranan, öznitelik, bulunan); FindNext(bulunan); FindClose(bulunan); 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya Adını Değiştirme–RenameFile(EskiAd,YeniAd) if RenameFile(‘gereksiz.doc’,’gerekli.doc’)=false then showmessage(‘değiştirilemedi’) else showmessage(‘değiştirildi’); Dosya Uzantısı Öğrenme – ExtractFileExt(dosyaAdı) Edit1.text:=ExtractFileExt(‘c:\resimler\ns.jpg’); // sonuç “.jpg” olacaktır. Dosya Adını Öğrenme – ExtractFileName(dosyaAdı) Edit1.text:=ExtractFileName(‘c:\resimler\ns.jpg’); // sonuç “ns.jpg” olacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya Yolunu Öğrenme – ExtractFilePath(dosyaAdı) Edit1.text:=ExtractFilePath(‘c:\resimler\ns.jpg’); // sonuç “c:\resimler\” olacaktır. Bu fonksiyon ChDir kullanılarak bir dosyanın bulunduğu dizin aktif yapılabilir: ChDir(ExtractFilePath(dosya)) Dosya Bulunduğu Sürücüyü Öğrenme – ExtractFileDrive(dosyaAdı) Edit1.text:=ExtractFileDrive(‘c:\resimler\ns.jpg’); // sonuç “c:” olacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya Uzantısı Değiştirme – ChangeFileExt(dosya,YeniUzantı) Edit1.text:=ChangeFileExt(‘c:\resimler\ns.jpg’,’exe’); // sonuç “c:\resimler\ns.exe” olacaktır. Dosya Tarihi: FileAge(dosya): Eğer dosya yoksa geri -1 gönderir. Label1.caption:=DateTimeToStr( FileDateToDateTime(FileAge(‘c:\resim\ns.jpg’))) Dosya Adını Öğrenme – ExtractFileName(dosyaAdı) FileDateToDateTime(tarih): Dos taki saati -> delphiye DateTimeToFileDate(tarih): Delphi saatini -> Dos 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Dosyalarla Çalışma Dosya Özellikleri – FileGetAttr(dosya) DEĞER ANLAMI FaReadOnly Yalnız Okunabilir FaHidden Gizli FaSysFile Sistem dosyası FaVolumeID Dosya veya disk değil FaDirectory Dizin FaArchive Arşiv dosyası If (FileGetAttr(c:\ns.jpg) and FaHidden) <> 0 then label1.Caption:=‘Gizli Dosyadır’; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ TRegistry Registry Yapısı: Windows'un ve altında çalışan birçok uygulamanın ayarlarını kaydetmek için kullandıkları Registry dosyalarına Delhi’den ulaşabilmek için TRegistry kullanılır. TRegistry sınıfını kullanabilmek için formunuzdaki uses satırına Registry unitini eklemeniz gerekir. Registry'de yapılan bir değişiklik bütün Windows'un çökmesine sebep olabilir. Bunun için Registry ile uğraşırken son derece dikkatli olmak gerekmektedir. Windows Registry kayıtlarını görmek için REGEDIT programını çalıştırabilirsiniz. Başlat-Çalıştır menüleri ile bu programı çalıştırırsanız aşağıdaki gibi bir yapı görürsünüz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Pencerenin sol tarafından ana anahtarlar (root key) vardır. Her'bir anahtar, hard diskinizdeki dizin yapısı gibidir. Her anahtarın alt anahtarları da bulunabilir. Herhangi bir anahtarın başındaki + işaretini tıklarsanız ona ait alt anahtarlar da listelenir. Her anahtarın altında ise alt anahtarlar ve o anahtara ait verile bulunur. Bu bilgiler yukarıdaki pencerenin sağ tarafında listelenir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Özellikleri RootKey Registry dosyası ana anahtarlardan oluşmaktaydı. Hangi anahtar üzerinde çalışılacaksa bu özelliğe o ana anahtarın sembolik ismi verilir. Var R: TRegistry; Begin R :=TRegistry.Create; R.RootKey := HKEY_LOCAL_MACHINE; End; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Özellikleri CurrentPath CurrentPath özelliği üzerinde işlem yapılacak anahtarın yolunu temsil eder. Örneğin: \HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Code Insight ifadesindeki Software\Borland\Delphi\7.0\Code Insight değeri CurrentPath özelliğiyle elde edilir. CurrentKey Şu an açık olan anahtar bu özellikle öğrenilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları OpenKey (const Key: String; CanCreate: Boolean): Boolean Bir anahtarı kullanabilmek için onu OpenKey metodu ile açmak gerekir. Açılacak anahtarın yolu Key parametresine verilir. Verilen anahtarın mevcut olmaması durumunda CanCreate parametresi anahtarın otomatik olarak oluşturulup oluşturulmayacağım belirler. CanCreate parametresine true verilirse, açılmak istenen anahtar yoksa o anahtar oluşturulur. Verilen anahtar başarılı bir şekilde açılırsa veya oluşturulursa fonksiyondan geriye true değeri döner. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları Örneğin HKEY_CURRENT_USER ana anahtarı altında \Software\Uygulama anahtarını açmak için aşağıdaki gibi bir kod kullanabiliriz. var R: TRegistry; begin R := TRegistry.Create; R.RootKey := HKEY_CURRENT_USER R.OpenKey('Software\Uygulama‘,True); end; Yukarıdaki kodda OpenKey metodu true verildiği için verilen anahtar yoksa oluşturulacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları OpenKeyReadOnly(const Key: String): Boolean Bu metod da OpenKey metodu gibidir ancak adından da anlaşılabileceği gibi anahtarı sadece okumak için açar. CloseKey Bir anahtar üzerinde işlem yaptıktan sonra o anahtar CloseKey metodu ile kapatılmalıdır. CloseKey metodu çağrıldıktan sonra yapılan değişiklikler registry'ye yazılır ve anahtar kapatılır. CreateKey(const Key: String): Boolean; Registry ağacında yeni bir anahtar oluşturmak için bu metod kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları DeleteKey(const Key: String): Boolean; Key parametresi ile verilen anahtarı siler. Silme işlemi başarılırsa True değeri geri döner. GetKeyNames, GetValueNames(Strings: TStrings) Anahtarlar bir veya daha fazla sayıda alt anahtar içerebilirler. Bu alt anahtarların hepsinin ismini öğrenmek için GetKeyNames metodu kullanılır. KeyExists (const Key: String): Boolean Belirlenen anahtarın mevcut olması durumunda True değerini olmaması durumunda ise False değerini verir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları ValueExists Anahtara ait verinin bulunması durumunda True değerini verir. HasSubKeys: Boolean Aktif anahtarın alt anahtarlara sahip olup olmadığı bu metotla öğrenilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Registry Metotları ReadBool, ReadCurrency, ReadDate, ReadDateTime, ReadFloat, Readlnteger, ReadString, ReadTime, SaveKey (altanahtar) Bir alt anahtara ait veriyi okumak için bu metodlardan biri kullanılır. Veri hangi türdensen yukarıdaki metodlardan biriyle okunur. WriteBool, WriteCurrency, WriteDate, WriteDateTime, WriteExpandString, WriteFloat, Writelnteger, WriteString, WriteTime (AltAnahtar, Değer) OpenKey metodu ile açılan anahtarın alt anahtarlarına değer yazmak için bu metotlar kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Örnek: Com Portları Okuma Şimdi Registry'de tanımlı olan com portlarının adlarını okuyup form üzerindeki memo1 bileşenine ekleyecek bir program yazalım. Bunun için ilk olarak unit1’ in uses kısmına Registry ifadesini ekledikten sonra Button1'in onclick olayına aşağıdaki kodu yazalım: procedure TForm1.Button1Click(Sender: TObject); var reg : TRegistry; ts : TStrings; i: integer; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Örnek: Com Portları Okuma begin memo1.clear; reg:= TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('hardware\devicemap\serialcomm', false); ts := TStringList.Create; reg.GetValueNames(ts); for i:=0 to ts.Count-1 do begin Memo1.Lines.Add(reg.ReadString(ts.Strings[i])); end; ts.Free; reg.CloseKey; reg.Free; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Listelerle Çalışmak BaseCLX içindeki çok sayıdaki sınıf liste ve koleksiyon elemanları ile çalışmak için tasarlanmışlardır. Liste elemanları ekleme: Çoğu listeye eleman eklemek için Add metodu kullanılır. Add metodu elemanı listenin en sonuna ekler. Listelere araya eleman eklemek için de Insert metodu kullanılır. TQueue ve TStack gibi sıralı olan listelere eleman eklemek için Push metodu kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Listelerle Çalışmak Listelerden eleman silme Listelerden eleman silmek için Delete yada Remove metodu kullanılır. Delete metodu sileceği elemanın indisini parametre olarak kullanırken, Remove metodu sileceği elemanın adını parametre olarak kullanır. TQueue ve TStack gibi sıralı olan listelerden eleman silmek için Pop metodu kullanılır. Listelerdeki tüm elemanları silmek için Clear metodu kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Listelerle Çalışmak Liste elemanlarına erişme Liste elemanlarının çoğuna erişmek için Items özseliği, String listelerin elemanlarına erişmek için Strings özelliği, Bucket liste elemanlarına erişmek için Data özelliği kullanılır. TQueue ve TStack gibi sıralı listelerin elemanlarına erişmek için de Peek metodu kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Listelerle Çalışmak Liste elemanlarını sıralama Çoğu listeyi sıralamak için Sort metodu, İki elemanın yerini değiştirmek için Exchange metodu, Liste içinde bir elemanın yerini değiştirmek için Move metodu kullanılır. String listeleri kaydetme ve yükleme String listeleri kendi elemanlarını bir dosyaya kaydetmek SaveToFile metodu, dosyadan eleman okuyup listelere eklemek için de LoadFromFile metodu kullanılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TOpenDialog: Windowsun sağladığı standart Aç diyalog penceresini kullanıma sunar. TSaveDialog: Windowsun sağladığı standart Kaydet diyalog penceresini kullanıma sunar. TOpenPictureDialog: OpenDialog gibidir ancak özel olarak BMP,ICO,EMF,WMF resimleri kullanıma açmadan önce gösterebilen bir pencere sağlar. TSavePictureDialog: Resimleri kaydetmek için kullanılan pencereyi kullanıma sunar. TFontDialog: Windows'a yüklü fontları gösteren ve font seçimini sağlayan Font diyalog penceresini kullanıma sunar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TColorDialog: Renk seçimini sağlayan standart Renk diyalog penceresini kullanıma sunar. TPrintDîalog: Yazdır diyalog penceresini kullanıma sunar. TPrinterSetupDialog: Yazıcı Ayarları diyalog penceresini kullanıma sunar. TFindDialog: Bul diyalog penceresini kullanıma sunar. TReplaceDialog: Değiştir diyalog penceresini kullanıma sunar. TPageSetupDialog: Sayfa yapısı diyalog penceresini kullanıma sunar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Diyalog kutuları Windows tarafından sağlanan, standart arabirimler oluşturmak için kullanılan kutulardır. Bu kutuların tamamı Execute metoduyla aktif hale gelirler. Bu kutular tasarım zamanında form üzerinde görülmesine rağmen çalışma zamanında görülmezler. Bu diyalog pencereleri sadece o işi yapmak için bir arabirim sağlarlar o işi yapacak kodu yazmak programcının işidir. Örneğin Bul diyalog kutusu aranan şeyi bulmaz onu bulduracak kodu yazmak programcının işidir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TOpenDiolog (Dosya Aç Penceresi): Bu kontrolün temel gayesi herhangi bir dosyayı Aç diyalog kutusuyla kullanıma sokmaktır. Open diyalog kutusu Execute metoduyla aktif hale getirilir. Kullanıcının bu diyalog penceresinde seçtiği dosya ismi OpenDialog kutusunun FileName özelliğiyle öğrenilir. Bu kutunun Filter özelliği kullanılarak kutuda gözükecek dosya tipleri seçilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Diyalog Kutu Özellikleri FileName Bu özellik opendialog kutusundaki dosya adının girildiği bölümde gözükecek olan dosya adını belirler. Ve aynı zamanda kullanıcının seçtiği dosya adı da bu özellikle öğrenilir. Files Options özelliğinin bir alt özelliği olan ofAllov/MultiSelect:=True yapılmışsa kullanıcı birden fazla dosyayı seçebilir. Bu özellik seçili olan dosyalan öğrenmek için kullanılır. Files özelliği daha önce gördüğümüz Items, Lines özellikleri gibi Tstrings tipinden tanımlanmıştır ve onlara uygulanan işlemler bu özelliğe de uygulanabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Diyalog Kutu Özellikleri Örnek: Dosya aç Örnek olarak kullanıcının seçtiği dosyayı bir Memo içinde gösterecek kodu yapalım. procedure TForm1.Button1Click(Sender: TObject); begin //Diyalog kutusu için filtre ayarla OpenDialog1.Filter:='metin dosyaları|*.txt|tüm dosyalar|*.*‘; //Eğer pencere açılırsa if OpenDialog1.Execute Then //Seçilen dosyanın içeriğini Memo1 e aktar Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Filter Filter özelliği OpenDialog penceresinde gösterilecek dosya türlerini belirtir. Bir kaç dosya türü belirtilirken "|" karakteri kullanılır. OpenDialog1.Filter := 'Metin Dosyaları|*.TXT’ Yukarıdaki ifadenin "Metin Dosyaları" bölümü dosya tipi penceresinde,"|*.TXT" bölümü ise Dosya adı penceresinde gözükür. OpenOlalog1.Filter:=‘Text dosyaları|*.TXT|Pascal Dosyaları|*.PAS|Tüm Dosyalar|*.*'; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Filterlndex Filler özelliği ile belirlenen dosyaların hangisinin ilk etapta gözükeceğini belirler. Varsayılan değeri “1" dir. DefaultExt Kullanıcı, diyalog kutusunda bir dosya ismi yazdıktan sonra uzantı yazmazsa bu özellikle belirlenen uzantı otomatik olarak o dosyanın adına eklenir. FileEditStyle Bu özellik, OpenDialog kutusu açıldığı zaman, dosya adının girileceği kısmın biçimini belirler. fsEdit=giriş kutusu, fsComboBox= combobox şeklindedir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları HistoryList Tasarım zamanında oluşturulabilen HistoryList özelliği, OpenDialog kontrolünün combobox olması şartıyla etkili olarak, OpenDialog açıldığında combobox kutusunun içereceği dosya isimlerini belirler. InitialDir Bu özellik pencere açıldığı zaman gösterilmesi istenilen dizini belirler. Aşağıdaki program satırı kutu açıldığı zaman c:\delphi\bin dizinini görüntüler. OpenDialog1.InitialDir := 'C:\Delphi\Bin'; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Options Options özelliği aşağıdaki değerleri alarak OpenDialog ve SaveDialog kutuları üzerinde etkili olur. ofAllowMultiSelect: Birden fazla dosya seçimini sağlar. ofFileMustExist: Kutuya ismi yazılan dosya diskte yoksa, bu dosyanın olmadığına dair bir mesaj verir ve pencereyi kapatmaz. OfHideReadOnly: Salt okunur aç işaret kutsunun görülmemesini sağlar. ofOldStyleDialog: Diyalog penceresinin Windows 3.1 stilinde gösterilmesini sağlar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları OptionsEx OptionsEx özelliği sadece aşağıdaki değerleri alarak OpenDialog kutusundaki sol kısmın gözüküp güzükmeyeceğini belirler. ofExNoPlace Bu özellik normalde False'dir ve diyalog kutusunun sol tarafındaki Geçmiş, Masa üstü, Belgelerim vb simgelerinin bulunduğu kısmı görüntüler. True yapılırsa diyalog pencereleri Windows 95 stilinde olduğu gibi bu kısım olmadan görüntülenir. Title Bu özellik OpenDialog kutusunun başlığını belirler. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Metotları Execute Execute metodu ile diyalog kutusu aktif hale gelir. Diyalog kutularındaki Tamam düğmesi seçilirse True değeri. İptal düğmesi seçilirse False değeri döner. Bu yüzden dialog kutuları aşağıdaki gibi kullanılır. If OpenDialog1.Execute Then //Tamam düğmesi seçildi. Gerekli kod Else //İptal düğmesi seçildi. Gerekli kod 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TSaveDialog (Dosya Kaydet Penceresi): Bu kontrol elemanı bir dosyanın kaydetme işleminde yardımcı olacak standart pencereyi sunar. Ayrıca OpenDialog penceresinin taşıdığı tüm özelliklere sahiptir. Bu kontrol de Execute metoduyla aktif hale gelir. Herhangi bir dosya ismine otomatik uzantı eklenmek isteniyorsa DefaultExt özelliği kullanılmalıdır. saveDialog1.DefaultExt := 'Pas'; if saveDialog1.Execute then form1.caption := saveDialog1.FileName; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TOpenPictureDiolog(Resim Açma Penceresi): TOpenDialog elemanına benzer özellikler içerir. Farklı olarak kullanıma açılacak resim form üzerine yüklenmeden ön izleme kutusu aracılığıyla resmin şekli görüntülenir. Bu da kullanıcıya, istediği resme hızlıca ulaşmasını sağlar. Bununla BMP, ICO, EMF, WMF resim formatları açılmadan izlenebilir. TOpenPictureDialog kutusu Execute metoduyla aktif hale getirilir. OpenPictureDialog ve SavePictureDialog pencerelerinin Jpeg uzantılı dosyaları da göstermesini istiyorsak uses satırına jpeg unitini eklemeliyiz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TSavePictureDialog(Resim Kaydet Penceresi): TSavePictureDialog kutusu kaydedilecek grafik dosyaları için farklı kaydet diyalog kutusunu görüntüler. Bu kontrol TSaveDialog kontrolüne benzer özellikler içerir. Farklı olarak listelenen resim dosyaların içeriğini gösterebilmektedir. procedure TForm1.Button2Click(Sender: TObject); Begin if SavePictureDialog1.Execute Then Image1.Picture.SaveToFile( SavePictureDialog1.FileName); end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TFontDialog(Font Seçme Penceresi): Kullanıcıya Windows'un standart font diyalog penceresini sunar. Burada istenilen font seçimi, font büyüklüğü ve diğer özellikler ayarlanıp Font özelliğinde saklanarak, herhangi bir kontrolün font özelliklerini belirlemek mümkündür. Device: Hangi fontların listeleneceğini belirler. -fdScreen: Yalnız ekranda kullanılabilen fontlar -fdPrinter: Yalnız yazıcıda kullanılabilen fontlar -fdBoth: Hem ekranda hem de yazıcıda kullanılabilen fontlar listelenir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Font Font özelliği seçili olan fontu ve o fonta ait olan tüm özellikleri (size, Name, Color, Height, Style) içerir. Diyalog kutusu aktif hale getirildikten sonra herhangi bir kontrolün font özelliğine atanarak seçilen bütün özelliklerin etkili olması sağlanır. FontDialog1.Execute; Edit1.Font := FontDialog1.Font; Options Font diyalog penceresindeki bazı özellikleri belirler. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Olaylar OnApply OnApply olayı, kullanıcının font diyalog kutusunda istediği bir fontu seçtikten sonra Uygula düğmesine basmasıyla meydana gelir. Bu olay meydana gelirken font diyalog penceresi kapanmaz, böylece kullanıcı seçtiği fontun belirlenen kontrol elemanı üzerindeki etkisini anında görür. FontDialog1.Font:=Memo1.Font; if Fontdialog1.Execute then Memo1.Font:=FontDialog1.Font; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TColorDiolog (Renk Seçme Penceresi): ColorDialog kontrolü renk penceresini görüntüler. Kullanıcının bu pencerede seçtiği herhangi bir renk bu kontrolün Color özelliğinde saklanır. Saklanan bu değer istenilen kontrol elemanına aktarılabilir. Bu kutuyu görüntülemek için Execute metodu kullanılır. Color ColorDialog kutusunda seçilen renk Color özelliğinde saklanarak geri döner. Memo1.Font.Color:=ColorDialog1.Color 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Options Options özelliği aşağıdaki değerleri alır: - cdFullOpen: Renk diyalog kutusu açıldığı zaman özel renk belirleme kısmıyla birlikte açılmasını sağlar. - cdPreventFullOpen: Özel Renk Tanımla düğmesini pasif hale getirerek yeni renk tanımlamayı sağlar. - cdShowHelp: Renk diyalog kutusuna Yardım düğmesi eklenir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TPrintDiolog (Yazdır Penceresi): PrintDialog kontrol elemanı yazdırma diyalog kutusunu görüntüleyerek, kullanıcımın yazıcıyı, yazdırılacak sayfa aralığını ve kopya sayısını seçebilmesini sağlar. Özellikler Collate: Collate özelliği Harmanla işaret kutusunun değerini temsil eder. İşaretli ise true değilse false'dir. Copies: Kopya sayısı kutusunda yazılı olan değeri temsil eder. MaxPage: Son kısmına yazılabilecek maximum sayıyı belirler. Yazdırılacak dokümanın sayfa sayısı bu özelliğe verilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları MinPage: İlk kısmına yazılabilecek minimum sayıyı belirler. PrintRange: Yazdırma aralığı kutusunda hangi seçeneğin işaretlendiği bu özellikle öğrenilir. Alabileceği değerler ve anlamları şöyledir. - prAIIPages: Tümü düğmesi seçili. - PrPageNums:Sayfalar düğmesi seçili. Hangi sayfa aralığının seçili olduğu FromPage, ToPage özellikleri ile öğrenilir. - PrSelection: Seçim düğmesi seçili 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TPrinterSetupDialog(Yazıcı Ayarları Penceresi): TPrinterSetupDialog kontrolü yazıcı ayarlan diyalog penceresini görüntüler. Kullanıcı bu pencere vasıtasıyla istediği yazıcıyı, kağıdı seçebilir ve kağıdı yatay yada dikey olarak yazdırmak için gerekli ayarlamaları yapabilir. PrinterSetupDialog kontrolü Execute metoduyla aktif hale getirilir. procedure TForm1.Button1Click(Sender: TObject); begin PrinterSetupDialog1.Execute; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TFindDialog (Bul Penceresi): Bu kontrol özellikle kelime işlemciler için bir arama kutusu görüntüleyerek bunun aracılığıyla arama kriterlerin belirlenebilmesi sağlar. Metindeki bir kelimeyi buldurmak için FindDialog kontrolü kullanılır. Bu kutunun görüntüleme işlemi de Execute metoduyla olmaktadır. Özellikler: FindText Aranan kutusuna yazılan ifadeyi bu özellik temsil eder. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları Metotlar: Execute: Diyalog penceresini açar. Find ve Replace diyalog kutuları diğerlerinden farklı olarak İptal düğmesi seçilinceye veya CloseDialog metodu ile kapatılmcaya kadar, bir çok arama birden yapılabilmesi için açık kalır. CloseDialog: Diyalog penceresini kapatır. Olaylar: OnFind ( Sender : TObject ) : Diyalog kutusunda Sonrakini Bul düğmesi seçilirse bu olay meydana gelir. Bulma işlemi için gerekli kod buraya yazılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Diyalog Kutuları TReplaceDialog (Değiştir Penceresi): Bu kontrol uygulamalarda kullanılabilecek Replace (değiştir) diyalog kutusunu görüntüler. TFindDialog kutusunun tüm özelliklerine sahiptir. Replace diyalog kutusu da Execute metoduyla aktif hale getirilir. ReplaceText Yeni değer kutusuna yazılan ifadeyi temsil eder. OnReplace(Sender: TObject) Diyalog kutusunda Değiştir veya Tümünü Değiştir düğmesi seçilirse bu olay meydana gelir. Hangi düğmenin seçildiği ise Options özelliği ile öğrenilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Her programlama dilinde olduğu gibi Delphi'de de hata yakalama ve kontrol deyimleri mevcuttur. Bunların temel amacı yapılan bir yanlışlığı anında kontrol edip ve bundan sonra meydana gelecek hatalardan dolayı programın çökmesine engel olmaktır. Programda hata yakalama deyimleri kullanılmasına rağmen eğer Delphi ortamındaysanız, herhangi bir hatanın meydana gelmesi ile Delphi hata mesajı verecektir. Bunun sebebi programı hazırlarken, oluşan hataların gizlenmeden görülebilmesi ve gerekli tedbirlerin alınabilmesi içindir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Programın EXE dosyası çalıştığında hatalar yakalanacak ve programın çalışması kırılmayacaktır. Peki, o zaman hata yakalama deyimleri ne işe yarar diye bir soru sorulabilir. Elbette ki bunun cevabı açıktır: Kaynak kodları tamamen EXE koduna çevrildikten sonra çalıştırılan bir programda eğer hata yakalama deyimleri kullanılmışsa o zaman hata yakalanacak ve gerekli mesaj yada program kodu devreye sokularak programın çökmesine engel olunacaktır. Delphi ortamında normal olarak çalıştırılan bir programın otomatik olarak EXE kodu oluşacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Try - Except Hata oluşması muhtemel bir komut çalıştırmadan önce try-except bloğu kullanılmalıdır. try //hata oluşturmaya müsait komutlar except //hata oluşmuşa çalışacak kod on hata_türü do //bu tür bir hata oluşmuşsa begin //komutlar end; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Try, bloğun başlangıcını belirler. Ve bu kısımdaki komutlar çalıştırılır. Herhangi bir hatanın meydana gelmesi durumunda Except kısmı çalışır. Eğer herhangi anormal bir durum yoksa except kısmındaki komutlar işleme girmeyecektir. try - finally Finally kısmındaki komutların mutlaka çalışması gereken durumlarda bu block kullanılır. Özellikle bazı durumlarda ayrılan kaynakların yok edilmesi gerekir. Bu tür bir kaynak ayıran koddan sonra hata oluşursa kaynağı yok edecek kod çalışmadan programın çalışması kırılacaktır ve ayrılan kayrak geri verilmeden hafızada boşuna yer işgal edecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Bu gibi durumlarda kaynağı yok edecek kısım Finally bloğu altına yazılırsa, hata oluşsa bile bu kod çalışacaktır. try Try_Deyimleri finally Finally_Deyimleri end; Try bloğundaki deyimler çalıştırıldıktan sonra her halükarda Finally bloğundaki deyimler çalışacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Örnek:Hata giderme Örnek olarak aşağıdaki kodu inceleyelim: procedure TForm1.FormCreate(Sender: TObject); Var b:TBitmap; x,y:Integer; Begin x:=5; y:=0; try b:=TBitmap.Create; showmessage(IntToStr(x div y)); finally b.free; end; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama TBitmap türünden bir b değişkeni tanımlanmış ve TBitmap.Create ile bellekte bir alan ayrılmıştır. ShowMessage satırında ise kasıtlı olarak bir sıfıra bölme hatası oluşturulmuştur. Eğer programda try-finally bloğu kullanılmasaydı hata oluşan satırdan sonraki kod çalışmayacak ve hafızada TBitmap türünden ayrılmış bellek bölgesi serbest bırakılamayacaktı, try-finally bloğunu kullandığımız için hata oluştuktan sonra finally bloğu çalışacak ve TBitmap türünden değişkeni yok edecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama OnException (Seneler: TObject; E: Exception) Programınız için genel bir hata yakalama fonksiyonu kullanmak isterseniz Application nesnesinin OnException olayına kod yazabilirsiniz. Herhangi bir yerde hata oluştuğunda bu olay çalışacak ve hatayı kontrol edebilme imkanı verecektir. Bir hata oluştuğunda Hata isimli altprogramımızın çalışmasını isteyelim. Bunun için olay OnException olayına Hata altprogramımızı atayalım procedure TForm1.FormCreate(Sender: TObject); Begin Application.OnException := Hata; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Bu işlemden sonra Hata isimli alt programımızı yukarıdaki formatta yazalım. Procedure TForm1.Hata(Sender: TObject;E:Exception); Begin showmessage('Programda bir hata oluştu'); end; ve bu prosedürün tanımını da Formun Public veya Private kısmında yapalım private procedure Hata(Sender: TObject; E: Exception); Şimdi de hata oluşturacak bir işlem yapacak kod yazalım. Kodumuzu bir komut düğmesinin Click olayına yazın. procedure TForm1.Button1Click(Sender: TObject); var i:real; begin i:=Sqrt(-1);end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama Programı Delphi'den çalıştırırsanız Delphi hatanın oluştuğu yerde programınızı kıracaktır. F9 ile tekrar kaldığı yerden çalıştırırsanız Hata altprogramımız devreye girerek hata oluştuğunu bildirecektir. Programın EXE dosyasını direk olarak çalıştırırsanız programın çalışması kırılmadan hata oluştuğu mesajı verilecektir. Hatanın ne olduğunu da bildirecekseniz ShowException metodunu kullanmanız gerekir. Hata olay alt programımıza Application.ShowException(E); satırını da yazarsanız bir mesaj kutusu ile hatanın ne olduğu da bildirilecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ Hata Yakalama procedure TForm1.FormCreate(Sender: TObject); Begin Application.OnException := Hata_yakala; end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin i:=StrToint(Edit1.text); i:=i*i; Caption:=intTostr(i); end; Program çalıştırıldıktan sonra edit kutusuna sayısal bir ifade girilmemesi halinde programda bir hata meydana gelecektir. Bu hata, hata yakalayıcı tarafından yakalanacak ve gerekli mesaj verilerek program sonlandırılacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Windows altında çalışan programlar DDE denen teknoloji sayesinde birbirleriyle haberleşebilirler. Örneğin bir program, program yöneticisine (Explorer, Windows Gezginine) bir program grubu oluşturmasını söyleyebilir. Veya bir program Excel'deki bir hücre ile bağlantı kurarak oradaki bütün değişimlerden haberdar olabilir veya bir hücreyi değiştirebilir. Bütün bu olaylar Delphi'de, System tabında bulunan dört kontrolle yapılmaktadır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Bu işlemler sırasında uygulamalardan biri Server diğeri ise Client durumunda veya bir program hem Server hem Client durumunda olabilir. Sadece DDE'yi destekleyen uygulamalara komut göndermek istiyorsanız Client görevini üstlenmeniz yeterlidir. (DDEClientConv kontrolü ile) Eğer diğer uygulamalardan size gelecek komutları kabul edecekseniz Server görevini üstelenebilirsiniz. (DDEServerConv kontrolü ile) 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Eğer her ikisini birden yapacaksanız, yani hem diğer uygulamalara DDE mesajları gönderecek, hem de diğer uygulamalardan size gelen mesajları kabul edecekseniz hem Server hem de Client görevini üstelenmeniz gerekir. (Her iki kontrolü birlikte kullanarak) Bu bölümde DDEClientConv ve DDEServerConv kontrolleri ile DDE ve Link işlemlerinin nasıl yapılacağını göreceğiz. DDEServerltem ve DDEClientltem kontrolleri ise geriye dönük uyumluluk açısından vardır ve bunların yerine OLE'yi kullanmak daha kullanışlıdır. Bu yüzden bu iki kontrolü öğrenmemize gerek yoktur. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link DDCClientConv Bu kontrol kullanılarak uygulamaya Client görevi verilebilir. Yani DDE‘ yi destekleyen diğer uygulamalarla bağlantı kurarken bu kontrol kullanılır. Özellikler ConnectMode Bu özellik kullanılarak bağlantının otomatik olarak mı, manual olarak mı kurulacağı belirlenir. ddeAutomatic değeri bu özelliğe verildiğinde DDE işlemi otomatik olarak başlatılır. ddeManual değeri bu özelliğe DDE işlemi LinkOpen metodu ile başlatılır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link DdeService Bağlantı kurulacak uygulama bu özellikle belirlenir. Bağlantı kurulacak uygulamanın ismi (gerekiyorsa yolu) EXE uzantısı olmadan bu özelliğe verilir. Örneğin Excel ile bağlantı kurulurken bu özelliği 'EXCEL' değeri verilir. (Yolu da verilmelidir. 'C:\Program Files\Microsoft Office\OFFICE11\exel‘ ) Örneğin Explorer ile bir program grubu veya program öğesi için bağlantı kurulurken bu özelliğe 'PROGMAN' değeri verilir. ( Explorer değil de Progman değerinin verilmesi uyumluluk açısındandır. Windowsun eski versiyonlarında bu işleri program yöneticisi yapmakta idi) 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Eğer bağlantı kurulan uygulama bir Delphi uygulaması ise Projenin ismi verilir. Zaten proje derlendiğinde aynı isimli EXE dosyası oluşacaktır. DDETopic Bağlantı kurulacak kontrol formun veya başka bir gruplayıcı elemanın parçası olacağı için bu özelliğe o kontrolün bulunduğu formun başlığı verilir. Bazen bu bir dosya adı da olabilmektedir. Programın yöneticisi ile bağlantı kurulurken bu özelliğe yine 'PROGMAN' değeri kullanılır. Eğer Delphi ile oluşturulmuş bir uygulama ile bağlantı kuracaksanız bu özelliğe DDEServerConv kontrolünün ismini vermelisiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Excel ile bağlantı kuracaksanız bu özelliğe kitabın ve sayfanın adını vermeniz gerekir '[Kitap1]Sayfa1’ gibi. Paradoks ile hazırlanmış ÖRNEK.DB dosyası ile bağlantı kuracaksanız bu özelliğe ':WORK:ORNEK.DB' değerini vermelisiniz. DDEService ve DDETopic özelliklerini Otomatik Olarak Belirleme Gördüğünüz gibi DDETopic değerinin nasıl belirleneceğini bulmak oldukça zor bir iş. Çünkü bu değer bağlanacağınız uygulamaya göre değişiklik göstermektedir ve bu değerlerin ne olduğunu bulmakta pek kolay bir iş değil. Ama bu işin kolay bir yolu var. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Önce bağlantı kuracağınız uygulamaya geçin ve oradan bir veriyi panoya kopyalayın. Örneğin Excel ile bir bağlantı kuracağınızı kabul edelim. Excel'i çalıştırın ve bir hücredeki bilgiyi panoya yerleştirin. Şimdi projenize dönün ve DDEClientConv kontrolünün DDEService veya DDETopic özelliklerinden birini çift tıklayın. Server ve Topic'i belirlemek için pencere açılacaktır. Eğer Delphi panoya kopyaladığınız bilginin kaynağını çözebiliyorsa pencerede Paste Link düğmesi aktif hale gelecektir. Bu düğmeye bastığınızda bu iki özellik Delphi tarafından otomatik olarak belirlenecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Metotlar SetLink(Service: string; Topic: string) Eğer ConnectMode özelliğine ddeAutomatic değeri verilmişse bu metod kullanılarak uygulama ile bağlantı kurulmalıdır. Service ve Topic parametrelerine verilecek değer DDEService ve DDETopic özelliklerinde anlattığımız gibi belirlenir. Eğer bağlantı başarılı olarak kurulursa geriye true değeri döner. Örnek olarak program yöneticisi ile bağlantı kurarken: DdeClientConv1.SetLink(‘PROGMAN’, ’PROGMAN’); Delphi'de yazılmış bir program ile bağlantı kurarken: DdeClientConv1.SetLink('ProgramAdı', 'DDEServer1Conv1'); 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link OpenLink, CloseLink Eğer ConnectMode özelliğine ddeManual verilmişse bağlantı OpenLink metodu ile başlatılır ve işlemler bittikten sonra CloseLink metodu ile kapatılır. Bağlantı başarılı bir şekilde sağlanırsa OpenLink metodundan true değeri döner. DdeClientConv1.SetLink('PROGMAN','PROGMAN'); if DdeClientConv1.OpenLink Then ShowMessage('Bağtantı kuruldu') else ShowMessage('Bağlantı kurulamadı'); DdeClientConv1 .CloseLink; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link ExecuteMacro(Cmd: PChar; WaitFlg: Boolean) Bir bağlantı gerçekleştirildikten sonra o uygulamaya komut göndermek için bu metod kullanılır. Komut Cmd parametresi ile verilir. Komut uygulama tarafından yerine getirilinceye kadar beklenmesi için de WaitFIg parametresine True verilmelidir. Komutun ne olacağı ve hangi formatta olacağı bağlantı kurulan uygulamaya göre değişiklik gösterir. Örneğin program yöneticisine bir program grubu oluşturmasını söylemek için şu komut kullanılır: '[CreateGroup(grup adı)]'; Buradaki grup adı yerine oluşturmak istediğiniz grubun adını verebilirsiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Örnek: Manual olarak bir program grubu oluşturma: procedure TForm1.Button1Click(Sender: TObject); begin DdeClientConv1.ConnectMode:=ddeManual; DdeClientConv1.SetLink('PROGMAN','PROGMAN'); if DdeClientConv1.OpenLink Then ShowMessage('Bağlantı kuruldu') else ShowMessage('Bağlantı kurulamadı'); DdeClientConv1.ExecuteMacro('[CreateGroup(Bizim Grup)]',True); DdeClientConv1.CloseLink; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Örnek:Automatic olarak bir program grubu oluşturma procedure TForm1.Button1Click(Sender: TObject); begin DdeClientConv1.ConnectMode:=ddeAutomatic; DdeClientConv1.SetLink('PROGMAN', 'PROGMAN'); DdeClientConv1.ExecuteMacro('[CreateGroup(BizimGrup)]',True); end; Bu işlemler sonucunda Bizim Grup isimli boş bir program grubu oluşacak ve bu grup Başlat-Programlar menusu altına eklenecektir. Addltem komutuyla bir program grubu içerisinde program öğeleri oluşturulabilir. ‘[Addltem(DosyaAdı,Tanımı)]’; şeklindedir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Program yöneticisinde bir öğeyi silmek içinse : ‘[Deleteltem(öğe adı)]’ şeklinde kullanılır. Bir grubu silmek içinse : ‘[DeleteGroup(prup adı)]’ şeklinde kullanılır. ExecuteMacroLines(Cmd: TStrings; WaitFlg: Boolean) Birden fazla komutu birden göndermek için bu metod da kullanılabilir. Buradaki Cmd parametresi TStrings tipinden tanımlandığı için komutlar herhangi bir listeye, memo kutusuna vb. eklendikten sonra bunların tümü birden bu metod ile çalıştırılabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link PokeData(Item: string; Data: PChar) Bağlantı kurduğunuz uygulamaya sadece komut değil veri de gönderebilirsiniz. Item parametresi bilginin gönderileceği kontrolü (bu Excel'de bir hücre, veri tabanında bir alan, Delphi uygulamasında DDEServerConv kontrolü vb.), Data parametresi de gönderilecek bilgiyi belirler. Örneğin Excel'deki A1 hücresine (bu R1C1 olarak gösterilir, yani row 1, col 1) bir formül veya bir değer yazmak için: DDEClientConv1.PokeData('r1c1‘,’12’); Yukarıdaki satır Excel'deki A1 hücresine 12 değerini yazmaktadır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link RequestData(const Item: string): PChar; Bağlantı kurulan uygulamadaki bir kontrolün değerini öğrenmek için bu metod kullanılır. Item özelliği PokeData metodundaki gibidir. Geriye dönen bilgi bağlantı kurulan uygulamadan gelir ve PChar tipindedir. Caption:=String(DDECIientConv1,RequestData('r2c1')); Yukarıdaki satır Excel'deki A2 hücresinde bulunan bilgiyi formun başlığına yazmaktadır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link DDEServerConv Programınızın DDE mesajlarını kabul etmesini istiyorsanız bu kontrolü kullanabilirsiniz. Çalışma prensibi oldukça basittir. Yapılması gereken OnExecuteMacro olayını kullanarak gelen mesajları kontrol etmek ve gerekeni yapmak. Özellikler Name Diğer kontrollerin Name özelliğinden hiç bir farkı yoktur. Ama bu kontrolün Name özelliği önemlidir. Çünkü diğer uygulamalar bu uygulama ile DDE bağlantısı kurmak istediklerinde bu kontrolün ismini kullanmaları gerekir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Örneğin bu uygulamanın yani DDE mesajlarına cevap verecek uygulamamızın adı ORNEKDDESERVER olsun ve bu programdaki kontrolün ismi de DDEServerConv1 olsun. Bu durumda sizinle bağlantı kuracak uygulamanın şu işlemi yapması gerekir. DdeClientConv1.ConnectMode:=ddeAutomatic; DdeClientConv1.SetLink('ORNEKDDESERVER', 'DdeServerConv1'); Bu işlemden sonra uygulamanızda OnOpen olayı meydana gelecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DDE & Link Olaylar Open(Sender: TObject) Bir uygulama ile DDE bağlantısı kurulduğunda bu olay meydana gelecektir. OnClose(Sender: TObject) DDE bağlantısı kurulan uygulama ile bağlantı kesildiğinde bu olay meydana gelir. OnExecuteMacro(Sender: TObject; Msg: TStrings); Bir uygulama ile DDE bağlantısı kurulduktan sonra o uygulama size komut gönderebilir. Bağlantı kurulan uygulamadan bir komut geldiğinde bu olay çalışacaktır. Gelen komut Msg parametresi ile öğrenilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Dosyası Yazma DLL dosyaları gerçekte birer program olmalarına rağmen kendi başlarına çalıştırılmaları bir anlam ifade etmez. Bunu denemek için bir DLL dosyasının uzantısını EXE olarak değiştirip çalıştırın. Dosyanın herhangi bir hata vermeden çalıştırıldığını ancak sonuçta hiçbir şey olmadığını göreceksiniz. Evet DLL dosyaları gerçekte çalıştırılabilir dosyalardır ancak tek başlarına çalıştırılmak için değil diğer programlar tarafından çalıştırılmaları için oluşturulur. Bu dosyalar içlerinde değişik işlemler yapan fonksiyon ve prosedürler içerirler. Bunun bir çok avantajı vardır: 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Dosyası Yazma Örneğin GIF formatındaki resimleri göstermek için bir fonksiyon yazdığımızı düşünelim. GIF formatında resimleri gösterecek bütün programlarımıza bu kodu tekrar yazmak yerine bunu bir Unit olarak kaydedip diğer programlarımızda da bunu kullanabiliriz. Ancak başka bir programlama dili ile yazdığımız bir programda bu Unit’ i doğal olarak kullanamayız. Bunu o dil için tekrar yazmanız gerekir. Bu gibi durumlar için bu fonksiyonunuzu Windows tarafından standartlaştırılan formatta derlerseniz Windows altında çalışan diğer bütün programlar bu fonksiyonu kullanabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Dosyası Yazma Özellikle değişik programlama dilleri arasında kullanmanız gereken, fonksiyonlarınız varsa bunları birer DLL dosyası olarak tasarlayıp her dil için yeniden yazmanıza gerek kalmaksızın bu fonksiyonları kullanabilirsiniz. Aynı programlama dili ile oluşturduğunuz programlarda da ortak unitler kullanmak yerine kodlarınızı DLL olarak derleyip her programdan bunu kullanmak daha avantajlı olabilir. DLL‘ ler sadece bir kez belleğe yüklenir ve çok sayıda uygulama bu DLL‘ ye başvuru yapabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Nasıl Yazılır ? DLL dosyalan içlerinde fonksiyon barındıran dosyalar olduğu için normal bir program gibi yazılmazlar. Delphi‘ de bir DLL yazmak için kolay bir yolunuz, var. File-New menüsünden Other seçeneğini seçeriz. Bu pencereden DLL Wizard seçeneğini kullanarak Delphi‘ nin bir kütüphane için gerekli olan satırları oluşturmasını sağlayabilirsiniz. Bu işlem sonunda penceremizdeki kod üzerinde İlk satırdaki Library kelimesi bunun bir kütüphane-dll programı olacağını gösterir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Nasıl Yazılır ? Yazacağımız fonksiyon, prosedür veya değişken tanımlarını Begin satırından önce yazmamız ve eğer bu fonksiyonlar dışarıdan çağrılabilecekse fonksiyon tanımının sonunda Export deyimiyle bunu bildirmemiz gerekir. Yazdığımız fonksiyonların sonunda, Begin satırından önce dışarıdan çağrılabilecek fonksiyonları Exports altında bildirmemiz gerekir. DLL dosyaları F9 tuşu ile çalıştırılamazlar. Yalnız derlemek için Ctrl-F9 tuşunu veya Project -Compile seçeneği kullanmamız gerekir. Bu işlem sonunda program EXE olarak değil DLL uzantılı olarak derlenecektir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Nasıl Yazılır ? DLL dosyası tasarlarken çalıştırıp sonucu test etmek aynı anda zor olduğu için fonksiyonları bir projede hazırlayıp en son haliyle bir DLL projesine kopyalamak daha kolay olacaktır. Herhangi bir DLL dosyasından bir fonksiyon çağırmadan önce onu aşağıdaki gibi tanımlamamız gerekir. Function ad(Parametreleri:Tipi):Tipi;far; External’DLLADI’ index no; bu tanımı yaptıktan sonra normal fonksiyon çağrısı yaparak fonksiyonu kullanabilirsiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Örneği: Örnek olarak iki sayıyı toplayarak sonucu verecek basit bir DLL dosyası hazırlayalım. File-New-Other menüleri ile açılan pencereden DLL Wizard simgesini işaretleyerek yeni bir projeye başlayın. File-Save All menüleri ile de bu projemizi topla_dll ismi ile kaydedin. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Örneği: Öncelikli olarak DLL dosyası oluşturuyoruz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Karacabey MYO - Necdet SEVİNÇ DLL Örneği: DLL dosyasını oluşturulduktan sonra çağırıyoruz: 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Denetim masası içinde gördüğünüz simgeler CPL uzantılı dosyalardan oluşmuş özel DLL dosyalarıdır. Delphi ile bu tür uygulamaları kolayca geliştirebilirsiniz. File-New-Other menüleri ile açılan aşağıdaki penceredeki Control Panel Application seçeneği ile denetim masası uygulamaları oluşturabilirsiniz. Oluşan modül formdan daha farklı bir yapıya sahiptir. Zaten ComponentPalet’ e bakarsanız bütün kontrolleri değil sadece bazı kontrollerin bulunduğunu göreceksiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Componentpalet’ te dikkatinizi çekeceği gibi AppletModule içinde görsel kontrolleri kullanamazsınız. Bu, hiçbir görsel kontrol kullanmadan programı yapacağınız anlamına gelmiyor. Sadece AppletModule üzerine direk kontrolleri yerleştiremezsiniz. Bunun yerine File-New-Form menüleri ile programınıza yeni bir form ekleyip görsel tasarımınızı bu form üzerinde yapmanız gerekir.Formu otomatik olarak oluşturacak kodu projenin kaynak koduna ekleyecektir. Bu kodu oradan çıkararak formu kendimiz oluşturmalı ve Modal olarak göstermeliyiz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Formu ekledikten sonra Project-View Source menüleri ile kaynak kodunu açın. Koddaki Application.CreateForm(TForm2,Form2); satırını silin. Böylece form otomatik olarak oluşturulmayacaktır. Bunu yapmamızın sebebi şu: Denetim masası açıldığında içindeki bütün uygulamaları çalıştırır. Bir uygulamayı (denetim masasındaki simgeyi) çift tıkladığınızda ise onu aktive eder. Yani kullanıcı denetim masasında sizin simgenizi tıklamasa bile sizin uygulamanız çalıştırılacağı için eklediğiniz form da otomatik olarak oluşturulacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Denetim masasından uygulamanıza ait simge çift tıklandığında OnActivate olayı meydana gelecektir. Formumuzu gösterecek kodu buraya yazmamız gerekir. procedure TAppletModule1.AppletModuleActivate (Sender: TObject;Data: Integer); begin with TForm2.Create(nil) do begin ShowModal; Free; end; end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Bu koddaki TForm2.Create(nil) satırı ile form oluşturulmakta ve ShowModal komutu ile Modal olarak gösterilmektedir. Form Modal olduğu için form kapatılıncaya kadar altındaki free satırı çalışmayacaktır. Form kapatıldığında Free satırı çalışarak formu bellekten atacaktır. Denetim masasında uygulamanıza ait simgeyi, uygulamanın ismini ve açıklamasını Object İnspector penceresinden belirleyebilirsiniz. Appletlcon uygulama simgesini, Caption özelliği başlığı, Help özelliği de uygulamanıza ait kısa bir açıklamayı tanımlama olanağı sağlar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Programa eklediğiniz form üzerinde gerekli kontrolleri yerleştirip kodlarınızı yazarak normal bir uygulama tasarlıyor gibi formunuzu tasarlayabilirsiniz. Form tasarımınız bittikten sonra AppletModule'yi sağ fare tuşu ile tıklayın ve açılan pencereden Install Control Panel Apllet menusunu seçin. Uygulamanız CPL uzantısı ile derlenecek ve Windows\System klasörü altına atılacaktır. Bu işlemden sonra denetim masasına girerek uygulamanızı görebilirsiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamaları Aynı menüdeki Uninstall Control Panel Apllet seçeneği ile uygulamanızı listeden çıkarabilirsiniz. Uninstall yapıktan sonra denetim masasını kapatıp açarsanız veya F5 tuşuna basarsanız uygulamanızın listeden çıkarıldığını göreceksiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Denetim Masası Uygulamalarını Programdan Çalıştırma Bir CPL uygulamasını denetim masasına girmeden çalıştırabilmek için rundll32.exe programından faydalanabilirsiniz. Bu programla bir cpl dosyasını çalıştırabilmek için: rundll32 shell32.dll,Control_RunDLL cpl_dosya_adı Şeklinde kullanılır. Örneğin sistem ayarlarını gösteren programa ulaşmak için Başlat-Çalıştır penceresine; rundll32 shell32.dll,Control_RunDLL sysdm.cpl Yazabilirsiniz. Aynı işi programdan yaptırabilmek için ise WinExec API’ sini kullanabilirsiniz: WinExec(PChar(‘rundll32 shell32.dll, Control_RunDLL sysdm.cpl’),1); 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Örnek Denetim Masası Uygulaması Yapacağımız örnekte Windows\System32 dizininde bulunan CPL dosyalarını programımızda listeleyelim ve kullanıcının seçtiği CPL uygulamasını çalıştıralım. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Örnek Denetim Masası Uygulaması Liste olarak Win3.1 tabında bulunan FileListBox kontrolünü formunuza yerleştirin. Procedure TForm1.FormCreate(Sender;TObject); begin FileListBox1.Directory:=‘c:\windows\system32’; FileListBox1.Mask:=‘*.cpl’; end; procedure TForm1.Button1Chck(Sender:TObject); begin WinExec(PChar(‘rundll32 shell32.dll, Control_RunDLL’+FileListBox1.FileName),1); end; 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları ve Veritabanına Bağlanma Veritabanı verilerin bir koleksiyonudur. Verilerin kolay bir biçimde işlenmesi ve idare edilmesi için değişik stratejiler geliştirilmiştir. Bunlardan birisi DBMS(Database Management System) dir. Bu sistem verileri veritabanı formatında kaydeder. Bugün en önemli veritabanı sistemleri ilişkisel veritabanlarıdır. İlişkisel veritabanları üzerinde en fazla kullanılan dil SQL (Structııred Ouery Language - Yapısal Sorgulama Dili) dir. Günümüzde kullanılan en popüler veritabanı yönetim sistemleri arasında Microsoft SQL Server, Oracle, Sybase, DB2, Informix ve MySQL'i sayabiliriz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

İlişkisel Veritabanı Modeli İlişkisel veritabanı modeli tablolar kullanılarak oluşturulur. Ve verileri mantıksal olarak temsil eder. İlişkisel veritabanı modelinde "Bir-bir, bir-çok ve çok-çok" ilişkileri vardır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

İlişkisel Veritabanı Modeli Bir-Bir: Farklı iki tablodan meydana gelir fakat her iki tabloda da aynı birincil anahtar bulunur. Her bir tablodaki kayıtlar ancak birer kere eşlenebilir. Bir-çok: Bu ilişki modelinde birinci tablonun bir kaydı ikinci tablonun çok sayıdaki kaydı ile eşlenebilir. Buna en güzel örnek master-detail(ana-alt) tablolardır. Çok-çok: Bu modelde birinci tablonun bir alanı diğer tablodaki çok alan ile ilişkilendirilebilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Database-Veritabanı: Veritabanındaki asıl amaç bilgileri saklamak olduğundan veri tabanının en temel parçası veri alanlarıdır. Veritabanında hangi bilgilerin bulunacağı bu alanlarla belirlenir. Bu alanlara girilen bilgilere ise kayıt denir ve veritabanındaki kayıtlar tablolarda tutulurlar. Tabloların ne şekilde sıralanacağını indeksler, tablolardan alınacak listeleri ise sorgular tanımlarlar. Bütün bunların bir araya gelmesinden oluşan dosya veya dosyalara veritabanı diyoruz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları O halde veritabanı, bir yada daha fazla tablo, sorgu yada indeksleri tanımlayan bir dosya veya bu dosyaların bulunduğu dizindir. Örneğin bir programda müşteri bilgileri farklı bir tabloda, satış bilgileri farklı bir tabloda bulunur. Bu iki tabloya birlikte veritabanı denir. Bazı veritabanlarında (Access gibi) bütün bileşenler (tablolar, sorgular, raporlar vb) tek bir dosyada bulunur ve veritabanı bu dosyadır. Bazı veritabanlarında ise (dbase, paradox gibi) bileşenler (tablolar, sorgular, indeksler vb) ayrı ayrı dosyalarda bulunur ve dosyaların bulunduğu dizin veritabanıdır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Alias-Takma Ad: Builder ortamında tabloların yer aldığı dizin genellikle alias (takma ad) olarak tanımlanır. Örneğin Delphi ile beraber gelen örnek veritabanları C:\Program Files\Common Files\Borland Shared\Data dizininde yer alırlar ve bu dizine ait alias DBDEMOS olarak tanımlanmıştır. Bu veritabanlarını kullanabilmek için uzun yolu girilebileceği gibi tanımlanmış aliası da kullanılabilmektedir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Table-Tablo: İçinde kayıtların bulunduğu veritabanı dosyası. Örneğin müşteri bilgilerini kaydetmek için müşteri adı, adresi, telefonu vb. bilgilerin kaydedildiği dosyaya tablo denir. Veri tabanında bulunması istenen bilgiler uygun şekilde gruplandırılarak tablolara kaydedilirler. View-Görünüm: Bir sorgu sonucunda elde edilen veriler birer görünüm oluşturur. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Field-Alan: Tablo içindeki her alana Field denir. Örneğin müşteri bilgilerini kaydetmek için kullanılan tablodaki müşteri adı, adresi, telefonu vb. bilgilere Field denir. Record-Kayıt: Tablodaki bir kayıt birden fazla alanın birleşmesinden meydana gelir. Örneğin bir müşteriyi tanımlamak için onun adına, adresine, telefonuna vb bilgilere ihtiyaç vardır. Bir müşteri için gereken bu bilgilerin tamamına bir kayıt denir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları SQL-Yapısal Sorgulama dili: SQL-Structured Query Language (yapısal sorgulama dili) kelimelerinin kısaltılmışıdır. Tabloyu sıralamak, tabloda bilgi aramak, belli şartlara uyan kayıtları listelemek, tablodaki bilgileri topluca değiştirmek gibi bir çok işlemin yapılabildiği komutları vardır. Persistent Field: Tabloda bulunan alanlara Persistent alan denir. Bazı alanlar vardır ki gerçekte tabloda bulunmamasına rağmen varmış gibi ekranda gösterilebilir. Örneğin Calculated alanlar böyledir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Calculated Field-Hesaplanmış alan: Tabloda gerçekte olmayan fakat farklı alanlar üzerinde işlem yapılarak oluşturulmuş yeni alanlardır. Bu alanlar tabloda kayıtlı değildir ancak hesaplanarak ekranda gösterilirler. Lookup Field-Arama alanı: Alana girilecek bilgilerin farklı bir tablodan alınmasını sağlayan alanlardır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Index-Dizin: Tablodaki bilgilerin hangi alanlara göre sıralanacağını belirleyen tanımlardır. Tablodaki bilgiler seçili indexe göre sıralanır. İndexler‘ in en önemli avantajı veritabanındaki bilgilerin alınmasını hızlandırılmasıdır. Tabloya kayıt eklendiğinde kayıt tablonun sonuna eklenir fakat tanımlanan index dosyasına kaydın sırasını tutan bir girdi eklenir. Böylece gerçekte sıralı olmayan veri tabanındaki bilgiler index dosyasındaki girdilere göre sıralıymış gibi gözükür. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Key-Anahtar: Alanları sıralamak için kullanılan birincil anahtardır. Secondary Index -İkincil dizin: Tablodan farklı sıralamalar almak için kullanılan ikincil indexlerdir. Birden fazla ikincil index tanımlanarak değişik sıralamalar oluşturulabilir. Örneğin Adı alanına göre bir ikincil index ve numarası alanına göre farklı bir ikincil index oluşturulduktan sonra bu indexlerden bir aktif hale getirilerek o alana göre sıralama yapılabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Cursor-Kayıt göstergesi: Tablodaki aktif kaydı gösterir. Yapılan okuma ve yazma işlemleri aktif Cursor'ün gösterdiği kayıt üzerinde gerçekleşir. Datasource-Veri kaynağı: Veritabanı ile Delphi kontrolleri arasında (DBGrid, DBEdit, DBLookUpComboBox gibi) bağlantı kuran görsel bir kontroldür. Data Aware Components-Veri bağlantılı bileşenler: DBGrid, DBEdit, DBLookUpComboBox gibi tablodaki alanlarla bağlantı kurabilen görsel kontrollerdir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları BDE -Veritabanı Motoru: Delphi ortamında veritabanlarına erişim için bir ara modül kullanılır. Bu modül BDE (Borland Database Engine - Borland veritabanı motoru) olarak adlandırılır. Oluşturulan uygulamaların çalışabilmesi için bilgisayarda BDE olarak tanımlanan sürücülerin yüklenmesi gerekir. Delphi 5 ile birlikte gelen ve ADO(Activex Data Objects) olarak adlandırılan bileşenler ile tasarlanan veritabanı programlan BDE ye ihtiyaç duymazlar. Bunlar Microsoft'un OLE DB Provider olarak adlandırılan çalışma kütüphanelerini kullanırlar. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları BDE -Veritabanı Motoru: BDE ile kullanılan en uygun yerel veritabanı paradox tablolardır. BDE paradox tablolarıyla en iyi şekilde çalışacak şekilde dizayn edilmiştir. Bu yapısı diğer veri tabanlarına BDE ile erişilemeyeceği anlamına gelmiyor. BDE ile paradox, Access, ascii türü text tablolar, fox pro tablolarına direk erişim yapılabilir. Delphi' nin uygun sürümlerini kullanıyorsanız (Enterprise, SQL-Server) BDE ile Oracle, Sysbase, Microsoft SQL server, Informix, Interbase, DB' gibi SQL serverlara de erişim sağlayabilirsiniz. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları BDE -Veritabanı Motoru: BDE’ nin en büyük avantajı Delphi ile tam entegre olarak çalışması ve çok yaygın bir dokümantasyonunun olmasıdır. Ancak BDE ile tasarlanmış veri tabanı programları dağıtmak için boyutu 4-5 MB' yi bulan BDE install dosyalarının programla taşınması ve BDE'nin fazla bellek kullanımı BDE'nin dezavantajlarındandır. ADO teknoloji ise Access veritabanlarına SQL serverlara erişim için geliştirilmiş modern bir yapıdadır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları BDE -Veritabanı Motoru: Delphi 5 ve sonraki versiyonlarında ADO tabanlı erişim için gerekli komponentler bulunur. ADO kullanarak yaptığınız programların çalışması için Microsoft MDAC (Microsoft Data Access Component) yüklü olması gerekir. Windows 98 (veya sonrası), Microsoft Office yüklü bilgisayarlarda bu set zaten yüklü olduğu için bu, programlarınızın dağıtımını daha kolay hale getirecektir. Ado' nun sadece Microsoft platformlarında çalışması Windows harici platformlara kod yazıyorsanız dezavantaj sayılabilir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Transactions-Muameleler: Transactionslar veri tabloları üzerinde yapılan birden fazla işlemi tanımlar. Gruptaki işlemlerden birinin başarısız olması durumunda o gruptaki komutların yaptığı diğer değişikliklerde iptal edilebilir. Transactionslar, gönderilen komut yada komutların işletilmesi sırasında olabilecek hatalara karşı veritabanını korurlar ve işlemlerin tamamlanmadan iptal edilebilmesine imkan verirler. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Transactions-Muameleler: Örneğin bir kullanıcının bankamatikten verdiği bir ödeme talimatı düşünün. İşlem yapılırken kullanıcının hesabındaki para miktarı düşülecek ve diğer hesaptaki para miktarına ekleme yapılacaktır. İşlemlerden biri yapıldıktan sonra (hesabındaki para düşüldükten sonra), diğer işlem yapılamazsa (karşı hesaba ekleme) birinci işlemin de (hesaptan düşülen para) geri alınması gerekir. Bu işlemler yapılırken bir Transactions tanımlanırsa işlemi geri alma imkanı olacaktır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Data Dictionary-Veri sözlüğü: Sık kullandığınız alanları Data Dictionary' de tanımlayarak bu alanlara ait özellikleri, bu alan için kullanılacak kontrolü belirleyebilirsiniz. Böylece bu alandan tekrar kullanmak istediğinizde, alan özelliklerini yeniden ayarlamanıza gerek kalmadan, daha önce tanımladığınız özelliklerin geçerli olmasını kolayca sağlayabilirsiniz. Dictionary tanımları Database Explorer programındaki Dictionary kısmından tanımlanabilmektedir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Veritabanı Kavramları Client/Server-İstemci/Sunucu: Çok sayıda bilgisayarın erişeceği veri tabanı dosyaları için yerel veritabanlarını kullanmak işleri zorlaştırır. Çok sayıda bilgisayarın erişebileceği veri tabanları için veritabanı sunucuları kullanılır. Veritabanındaki bilgiler bu sunucuda (server) bulunur ve diğer bilgisayarlar (client) veri isteklerini bu bilgisayara bildirerek gerekli bilgileri bundan alır ve gerekli değişiklikleri bildirirler. Bu tür veritabanlarında bir çok işi server tarafındaki sunucu yapar. Clientler ise gerekli istekleri buna bildirirler. Bu yapıda hem ağ trafiği azalır hem de sorun çıkma ihtimali daha azdır. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Data Controls elemanları ile Çalışma Data controls bileşen grubunda yer alan elemanların çoğu genellikle bir tek veri alanıyla bağlantı sağlar. Bu kontrollerin bir çoğu temsil ettiği alan üzerindeki bilgilerin değiştirilmesine imkan verir. 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Data Controls elemanları ile Çalışma 20.09.2018 Karacabey MYO - Necdet SEVİNÇ

Data Controls elemanları ile Çalışma 20.09.2018 Karacabey MYO - Necdet SEVİNÇ