Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

DELPHİ COMPONENT LIBRARY KULLANMA

Benzer bir sunumlar


... konulu sunumlar: "DELPHİ COMPONENT LIBRARY KULLANMA"— Sunum transkripti:

1 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. Karacabey MYO - Necdet SEVİNÇ

2 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. Karacabey MYO - Necdet SEVİNÇ

3 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. Karacabey MYO - Necdet SEVİNÇ

4 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. Karacabey MYO - Necdet SEVİNÇ

5 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. Karacabey MYO - Necdet SEVİNÇ

6 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. Karacabey MYO - Necdet SEVİNÇ

7 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. Karacabey MYO - Necdet SEVİNÇ

8 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 Karacabey MYO - Necdet SEVİNÇ

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

10 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. Karacabey MYO - Necdet SEVİNÇ

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

12 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. Karacabey MYO - Necdet SEVİNÇ

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

14 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. Karacabey MYO - Necdet SEVİNÇ

15 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. Karacabey MYO - Necdet SEVİNÇ

16 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; Karacabey MYO - Necdet SEVİNÇ

17 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); Karacabey MYO - Necdet SEVİNÇ

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

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

20 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. Karacabey MYO - Necdet SEVİNÇ

21 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. Karacabey MYO - Necdet SEVİNÇ

22 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 Karacabey MYO - Necdet SEVİNÇ

23 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’; Karacabey MYO - Necdet SEVİNÇ

24 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. Karacabey MYO - Necdet SEVİNÇ

25 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. Karacabey MYO - Necdet SEVİNÇ

26 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; Karacabey MYO - Necdet SEVİNÇ

27 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. Karacabey MYO - Necdet SEVİNÇ

28 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. Karacabey MYO - Necdet SEVİNÇ

29 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. Karacabey MYO - Necdet SEVİNÇ

30 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. Karacabey MYO - Necdet SEVİNÇ

31 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. Karacabey MYO - Necdet SEVİNÇ

32 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. Karacabey MYO - Necdet SEVİNÇ

33 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. Karacabey MYO - Necdet SEVİNÇ

34 Ö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; Karacabey MYO - Necdet SEVİNÇ

35 Ö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; Karacabey MYO - Necdet SEVİNÇ

36 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. Karacabey MYO - Necdet SEVİNÇ

37 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. Karacabey MYO - Necdet SEVİNÇ

38 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. Karacabey MYO - Necdet SEVİNÇ

39 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. Karacabey MYO - Necdet SEVİNÇ

40 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. Karacabey MYO - Necdet SEVİNÇ

41 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. Karacabey MYO - Necdet SEVİNÇ

42 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. Karacabey MYO - Necdet SEVİNÇ

43 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. Karacabey MYO - Necdet SEVİNÇ

44 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. Karacabey MYO - Necdet SEVİNÇ

45 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; Karacabey MYO - Necdet SEVİNÇ

46 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|*.*'; Karacabey MYO - Necdet SEVİNÇ

47 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. Karacabey MYO - Necdet SEVİNÇ

48 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'; Karacabey MYO - Necdet SEVİNÇ

49 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. Karacabey MYO - Necdet SEVİNÇ

50 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. Karacabey MYO - Necdet SEVİNÇ

51 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 Karacabey MYO - Necdet SEVİNÇ

52 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; Karacabey MYO - Necdet SEVİNÇ

53 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. Karacabey MYO - Necdet SEVİNÇ

54 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; Karacabey MYO - Necdet SEVİNÇ

55 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. Karacabey MYO - Necdet SEVİNÇ

56 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. Karacabey MYO - Necdet SEVİNÇ

57 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; Karacabey MYO - Necdet SEVİNÇ

58 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 Karacabey MYO - Necdet SEVİNÇ

59 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. Karacabey MYO - Necdet SEVİNÇ

60 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. Karacabey MYO - Necdet SEVİNÇ

61 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 Karacabey MYO - Necdet SEVİNÇ

62 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; Karacabey MYO - Necdet SEVİNÇ

63 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. Karacabey MYO - Necdet SEVİNÇ

64 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. Karacabey MYO - Necdet SEVİNÇ

65 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. Karacabey MYO - Necdet SEVİNÇ

66 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. Karacabey MYO - Necdet SEVİNÇ

67 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. Karacabey MYO - Necdet SEVİNÇ

68 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; Karacabey MYO - Necdet SEVİNÇ

69 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. Karacabey MYO - Necdet SEVİNÇ

70 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. Karacabey MYO - Necdet SEVİNÇ

71 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; Karacabey MYO - Necdet SEVİNÇ

72 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. Karacabey MYO - Necdet SEVİNÇ

73 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; Karacabey MYO - Necdet SEVİNÇ

74 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; Karacabey MYO - Necdet SEVİNÇ

75 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. Karacabey MYO - Necdet SEVİNÇ

76 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. Karacabey MYO - Necdet SEVİNÇ

77 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. Karacabey MYO - Necdet SEVİNÇ

78 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) Karacabey MYO - Necdet SEVİNÇ

79 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. Karacabey MYO - Necdet SEVİNÇ

80 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. Karacabey MYO - Necdet SEVİNÇ

81 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) Karacabey MYO - Necdet SEVİNÇ

82 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. Karacabey MYO - Necdet SEVİNÇ

83 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. Karacabey MYO - Necdet SEVİNÇ

84 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. Karacabey MYO - Necdet SEVİNÇ

85 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'); Karacabey MYO - Necdet SEVİNÇ

86 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; Karacabey MYO - Necdet SEVİNÇ

87 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. Karacabey MYO - Necdet SEVİNÇ

88 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; Karacabey MYO - Necdet SEVİNÇ

89 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. Karacabey MYO - Necdet SEVİNÇ

90 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. Karacabey MYO - Necdet SEVİNÇ

91 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. Karacabey MYO - Necdet SEVİNÇ

92 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. Karacabey MYO - Necdet SEVİNÇ

93 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. Karacabey MYO - Necdet SEVİNÇ

94 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. Karacabey MYO - Necdet SEVİNÇ

95 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. Karacabey MYO - Necdet SEVİNÇ

96 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: Karacabey MYO - Necdet SEVİNÇ

97 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. Karacabey MYO - Necdet SEVİNÇ

98 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. Karacabey MYO - Necdet SEVİNÇ

99 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. Karacabey MYO - Necdet SEVİNÇ

100 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. Karacabey MYO - Necdet SEVİNÇ

101 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. Karacabey MYO - Necdet SEVİNÇ

102 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. Karacabey MYO - Necdet SEVİNÇ

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

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

105 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. Karacabey MYO - Necdet SEVİNÇ

106 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. Karacabey MYO - Necdet SEVİNÇ

107 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. Karacabey MYO - Necdet SEVİNÇ

108 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; Karacabey MYO - Necdet SEVİNÇ

109 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. Karacabey MYO - Necdet SEVİNÇ

110 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. Karacabey MYO - Necdet SEVİNÇ

111 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. Karacabey MYO - Necdet SEVİNÇ

112 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); Karacabey MYO - Necdet SEVİNÇ

113 Ö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. Karacabey MYO - Necdet SEVİNÇ

114 Ö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; Karacabey MYO - Necdet SEVİNÇ

115 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. Karacabey MYO - Necdet SEVİNÇ

116 İ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. Karacabey MYO - Necdet SEVİNÇ

117 İ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. Karacabey MYO - Necdet SEVİNÇ

118 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. Karacabey MYO - Necdet SEVİNÇ

119 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. Karacabey MYO - Necdet SEVİNÇ

120 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. Karacabey MYO - Necdet SEVİNÇ

121 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. Karacabey MYO - Necdet SEVİNÇ

122 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. Karacabey MYO - Necdet SEVİNÇ

123 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. Karacabey MYO - Necdet SEVİNÇ

124 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. Karacabey MYO - Necdet SEVİNÇ

125 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. Karacabey MYO - Necdet SEVİNÇ

126 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. Karacabey MYO - Necdet SEVİNÇ

127 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. Karacabey MYO - Necdet SEVİNÇ

128 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. Karacabey MYO - Necdet SEVİNÇ

129 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. Karacabey MYO - Necdet SEVİNÇ

130 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. Karacabey MYO - Necdet SEVİNÇ

131 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. Karacabey MYO - Necdet SEVİNÇ

132 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. Karacabey MYO - Necdet SEVİNÇ

133 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. Karacabey MYO - Necdet SEVİNÇ

134 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. Karacabey MYO - Necdet SEVİNÇ

135 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. Karacabey MYO - Necdet SEVİNÇ

136 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. Karacabey MYO - Necdet SEVİNÇ

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

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


"DELPHİ COMPONENT LIBRARY KULLANMA" indir ppt

Benzer bir sunumlar


Google Reklamları