delphi ders notlari

16
DELPHI DERS NOTLARI Delphi‟yi açtığınızda karşınıza ana form, Component Palet ve Object Inspector (özellikler ve olaylar penceresi) gelir. FORM Form yazdığımız programlar için kullanıcı arabiriminin oluşturulduğu bir nesnedir diyebiliriz. COMPONENT PALET Bu palet üzerinde Delphi‟de kullanacağımız kontroller (nesneler) bulunur. Bunlar programlarımız için arabirim oluşturmakta kullandığımız form üzerine yerleştirilir. OBJECT INSPECTOR Visual dillerde ve dolayısıyla Delphi‟de her kontrolün özellikleri vardır. Bu kontrollerin özelliklerine program tasarlanırken Object Inspector denilen pencereden ulaşılır. Bu pencerede görüldüğü gibi iki sekme bulunmaktadır. Bunlardan birisi properties yani özellikler, diğeri ise events yani olaylardır. Form üzerinde hangi nesne seçiliyse Object Inspector o nesnenin özelliklerini gösterir. Mesela yandaki şekilde Object Inspector Form1 nesnesinin özelliklerini göstermektedir. DELPHI'DE KULLANILAN DOSYA TĠPLERĠ .pas Her unitin kaynak kodlarını içeren dosyalardır. Delphi'de oluşturulan formlara ait kodlar da PAS uzantılı dosyalarda saklanır. .dfm Form Dosyalarıdır. Delphi'de oluşturulan formlar ve üzerindeki kontrollere ait bilgiler bu uzantıdaki dosyalara kaydedilir. .dsk Projemize ait masa üstü ayarları bu dosyaya kaydedilir. Hangi formun açık olduğu, ekrandaki koordinatları gibi bilgiler bu dosyada tutulur. .dof Project / Options diyalog penceresindeki ayarları içeren dosya. .exe Çalıştırılabilir program dosyası. Application projeleri çalıştırıldığında onlara ait EXE dosya, projeye verilen isimle otomatik olarak oluşturulmaktadır. .dcu Derlenmiş unit dosyaları bu uzantı ile kaydedilir. Bir uygulamayı çalıştırdığımız zaman ilk önce unitler derlenir ve EXE hale getirilir. .dpr Proje Kaynak Dosyası. Delphi'deki projeler bu tür dosyalara kaydedilir. .res Derlenmiş Binary Kaynak ( Resource ) Dosyaları. Windows tarafından standartlaştırılan bu formattaki dosyalarda resim, ikon, kursor gibi bilgiler bulunur.

Upload: mercink

Post on 26-Jun-2015

3.355 views

Category:

Documents


19 download

DESCRIPTION

DELPHI DERS NOTLARI

TRANSCRIPT

Page 1: DELPHI DERS NOTLARI

DELPHI DERS NOTLARI

Delphi‟yi açtığınızda karşınıza ana form, Component Palet ve Object Inspector (özellikler ve olaylar penceresi)

gelir.

FORM

Form yazdığımız programlar için kullanıcı arabiriminin oluşturulduğu

bir nesnedir diyebiliriz.

COMPONENT PALET

Bu palet üzerinde Delphi‟de kullanacağımız kontroller (nesneler) bulunur. Bunlar programlarımız için arabirim

oluşturmakta kullandığımız form üzerine yerleştirilir.

OBJECT INSPECTOR

Visual dillerde ve dolayısıyla Delphi‟de her kontrolün özellikleri vardır. Bu

kontrollerin özelliklerine program tasarlanırken Object Inspector denilen pencereden

ulaşılır. Bu pencerede görüldüğü gibi iki sekme bulunmaktadır. Bunlardan birisi

properties yani özellikler, diğeri ise events yani olaylardır. Form üzerinde hangi

nesne seçiliyse Object Inspector o nesnenin özelliklerini gösterir. Mesela yandaki

şekilde Object Inspector Form1 nesnesinin özelliklerini göstermektedir.

DELPHI'DE KULLANILAN DOSYA TĠPLERĠ

.pas Her unitin kaynak kodlarını içeren dosyalardır. Delphi'de oluşturulan formlara ait kodlar da PAS

uzantılı dosyalarda saklanır.

.dfm Form Dosyalarıdır. Delphi'de oluşturulan formlar ve üzerindeki kontrollere ait bilgiler bu uzantıdaki

dosyalara kaydedilir.

.dsk Projemize ait masa üstü ayarları bu dosyaya kaydedilir. Hangi formun açık olduğu, ekrandaki

koordinatları gibi bilgiler bu dosyada tutulur.

.dof Project / Options diyalog penceresindeki ayarları içeren dosya.

.exe Çalıştırılabilir program dosyası. Application projeleri çalıştırıldığında onlara ait EXE dosya, projeye

verilen isimle otomatik olarak oluşturulmaktadır.

.dcu Derlenmiş unit dosyaları bu uzantı ile kaydedilir. Bir uygulamayı çalıştırdığımız zaman ilk önce unitler

derlenir ve EXE hale getirilir.

.dpr Proje Kaynak Dosyası. Delphi'deki projeler bu tür dosyalara kaydedilir.

.res Derlenmiş Binary Kaynak ( Resource ) Dosyaları. Windows tarafından standartlaştırılan bu formattaki

dosyalarda resim, ikon, kursor gibi bilgiler bulunur.

Page 2: DELPHI DERS NOTLARI

> STANDARD SAYFASI: Standart sayfası, bir uygulama geliştirirken en sık kullanacağımız etiket, metin

kutusu ve menü gibi bileşenleri içerir.

MainMenu: Bir forma ana menü ve menü başlıkları eklemek için

PopupMenu: Form ve kontrollerde, kullanıcı sağ fare butonunu tıkladığında çıkacak menüler oluşturmak için.

Label: Başlıklar gibi, kullanıcının erişemeyeceği, pencereli olmayan kontroller oluşturmak için.

Edit: Kullanıcının tek satırdan oluşan bir metin girerek üzerinde değişiklik yapacağı bir alan sunmak için.

Memo: Kullanıcının birden fazla satırdan oluşan bir metin girerek üzerinde değişiklik yapacağı bir alan sunmak

için.

Button: Kullanıcının seçebileceği veya herhangi bir işlemi gerçekleştireceği bir düğme sunmak için.

CheckBox: Evet/Hayır, Doğru/Yanlış ve Var/Yok gibi iki seçeneği temsil etmek için. Onay kutuları birbirinden

bağımsız çalışır.

RadioButton: Çoktan seçmeli ihtimalleri sunmak için. Seçim düğmeleri genellikle grup kutuları ile birlikte

kullanılır.

ListBox: Kullanıcının içinden bir ya da daha fazla öğe seçebileceği bir liste göstermek için.

ComboBox: Bir metin kutusuyla liste kutusunun işlevlerini birleştirmek için.

ScrollBar: Bir liste veya formun görünebilir kısmını değiştirme yöntemi sunmak için.

GroupBox: Bir form üzerinde ilgili bileşenleri gruplamak için.

RadioGroup: Bir form üzerindeki seçim butonlarını gruplamak için.

Panel: SpeedButton gibi diğer bileşenleri bir araç çubuğu üzerinde gruplandırmak için.

> ADDITIONAL (EK) SAYFASI: Komut butonları ve şekiller gibi ek bileşenler yer alır.

BitBtn: Sadece tıklanabilen ve üzerinde bir bitmap resim yer alabilen bir düğme sunmak için.

SpeedButton: Yine resimli ve tıklanabilen, ancak bir düğme grubu olarak da çalışabilen düğmeler oluşturmak

için.

MaskEdit: Kullanıcının sadece geçerli karakterler girmesi için veri görüntüsünü formatlamak için.

StringGrid: Yazıları sütun ve satırlara yerleştirmek için bir alan sunar.

DrawGrid: Metinsel olmayan bilgileri sütun ve satırlara göstermek için bir alan teşkil eder.

Image: Bir bitmap, ikon veya metafile göstermek için.

Shape: Geometrik şekiller vermek çizmek için. Elips, dikdörtgen veya köşeleri yuvarlatılmış dikdörtgen.

Bevel: Yükseltilmiş ya da çukur görüntüsü verebilen dikdörtgenler ya da çizgiler sunmak için.

ScrollBox: Kaydırılabilen (ve formdan daha küçük) bir görüntü alanı sunmak için.

> WIN32 SAYFASI: Windows95'in arabirimi ile uyumlu olan yeni bileşenler ve eski bileşenleri güncelleşmiş

sürümleri vardır.

TabControl: Bir dizi not defteri ayrımı sunmak için.

PageControl: Birden fazla sayfaya sahip diyalog kutuları oluşturan bir dizi ayrı not defteri sayfası sunmak için.

TreeView: Hiyerarşik bir öğeler listesi sunmak için.

ListView: Bir öğe listesini metin, ikon, ya da bu ikisinin bileşeni olarak gösteren için.

HeaderControl: Kullanıcının çalışma esnasında boyutlandırabileceği dizi sütun başlığı sunmak için.

RichEdit: Hemen hemen sınırsız uzunlukta değişik metin formatlı bir memo elemanı sunmak için.

StatusBar: Bir formun alt tarafında, çok bölümlü ve güncellenebilir bir durum çubuğu sunmak için.

TrackBar: Kaydırma çubuğuna benzeyen, ancak görünür işaretler bulunan, kayan bir numerik kontrol sunmak

için.

ProgressBar: Arka planda gelişen bir sürecin ilerleyişini gösteren bir çubuk göstermek için.

UpDown: Kullanıcının bir metin kutusu içindeki değeri hızla artırıp eksiltmesini sağlamak için.

Hotkey: Kullanıcının Shift, Alt, Ctrl kombinasyonları gibi bir klavye kısayolu tanımlamasını sağlamak için.

Page 3: DELPHI DERS NOTLARI

> DATA ACCESS (VERĠ ERĠġĠMLĠ) SAYFASI: Data Access sayfası, veritabanı uygulamaları geliştirirken

kullanabileceğiniz verilere erişimimizi sağlayan bileşenleri içerir.

DataSource: Bir sorgu veya tablo ile, uygulamalarınızda veri bilinçli kontroller arasında ilişki kurmak için.

Table: Bir veritabanı tablosunu Delphi uygulamasına bağlamak için.

Query: Yerel veritabanı ya da uzak SQL hizmet birimine bir sorgu yapılandırmak ve çalıştırmak için.

> DATA CONTROLS (VERĠ KONTROLLERĠ) SAYFASI: Veritabanı uygulamaları geliştirirken, Data

Access sayfasındaki bileşenlerle uygulamanıza eklediğiniz verileri kullanıcıya sunan, veri bilinçli elemanlar

Component Palette'in bu sayfasında yer alırlar.

DBGrid: Uygulamanızın içinde verileri gösterebileceği bir ağ sunmak için.

DBNavigator: Kullanıcılara uygulamanız tarafından gösterilen kayıtlar içinde dolaşma ve onları değiştirme

imkânı vermek için.

DBLabel: Label bileşenlerin veri bilinçli türü.

DBEdit: Edit bileşeninin veri bilinçli türü.

DBMemo: Memo bileşeninin veri bilinçli türü.

DBImage: Image bileşeninin veri bilinçli türü.

DBListBox: ListBox bileşeninin veri bilinçli türü.

DBComboBox: ComboBox bileşeninin veri bilinçli türü.

DBCheckBox: CheckBox bileşeninin veri bilinçli türü.

DBRadioGroup: RadioGroup bileşeninin veri bilinçli türü.

DBLookupListBox: Değerleri ikinci bir tablodan alınan bir liste kutusu sunmak için.

DBLookupComboBox: Değerleri ikinci bir tablodan alınan bir açılır liste kutusu sunmak için.

DBRichEdit: RichEdit bileşeninin veri bilinçli türü.

DBCtrlGrid: Çoklu kayıt gösterme ağı sunmak için.

> DIALOGS (DIYALOGLAR) SAYFASI: Standart Windows ortak diyaloglarını uygulamalarınızda

kullanmanızı sağlayan bileşenler bu sayfada yer alır.

OpenDialog: Windows Open ortak diyalogunu uygulamada kullanmak için.

SaveDialog: Windows Save ortak diyalogunu uygulamada kullanmak için.

FontDialog: Windows Font ortak diyalogunu uygulamada kullanmak için.

ColorDialog: Windows Color ortak diyalogunu uygulamada kullanmak için.

PrintDialog: Windows Print ortak diyalogunu uygulamada kullanmak için.

PrinterSetupDialog: Windows Printer Setup ortak diyalogunu uygulamada kullanmak için.

FindDialog: Windows Find ortak diyalogunu uygulamada kullanmak için.

ReplaceDialog: Windows Replace ortak diyalogunu uygulamada kullanmak için.

> SYSTEM (SĠSTEM) SAYFASI: Zamanlayıcılar, dizin ve dosyalar, multimedya cihazları ve OLE-DDE gibi

sistem seviyesindeki işlemleri gerçekleştiren bileşenler, System sayfasında toplanmıştır.

Timer: Belirli bir enterval sonraki bir işlem yapmak için.

PaintBox: Form üzerinde üstüne çizim yapılacak dikdörtgen bir alan sunmak için.

FileListBox: İçinde bulunulan dizindeki dosyaları göstermek ve çalışma esnasında izlenmelerini sağlamak için.

DirectoryListBox: İçinde bulunulan sürücüdeki dizinleri göstermek ve çalışma esnasında izlenmelerini

sağlamak için.

DriveComboBox: İçinde bulunulan sürücüyü göstermek ve kullanıcının seçim yapmasını sağlamak için.

Page 4: DELPHI DERS NOTLARI

FORMLAR

Formlar, bir Delphi uygulamasının merkezini teşkil eden arabirimlerdir. Görsel olan yada olmayan tüm eleman

yada bileşenler, formların üzerine yerleştirildiklerinde kullanılabilirler. Formlar kullanıcı adına bir pencere

diyalog kutusu ya da bir bilgi giriş ekranı olarak kullanabilir.

Delphi‟yi başlatıldığında standart ayarlara sahip boş bir form otomatik olarak gelir. Yeni uygulama geliştirmek

için bu form başlangıç noktası olarak kullanılır yada yeni bir form seçilerek veya oluşturarak da çalışılabilir.

Formların Özellikleri

Windows uyumlu programlarda olduğu gibi bu formda da başlık çubuğu, sağ üst köşesinde Ekranı Kapla ve

Simge Durumuna Küçült düğmeleri bulunmaktadır. Formun sol üst köşesinde ise Denetim Menüsüne ait

düğme bulunur. Tek tıklama ile Denetim menüsü açılır. Burada Simge Durumuna Küçült, Ekranı kapla gibi

komutlar bulunur. Kapat komutuyla form kapatılır. Tekrar açmak için View menüsünden Project Manager

komutu yardımıyla projedeki Form ve Unit‟ler tekrar görüntülenebilir. Form hazırlanırken fare ile boyut ve

konum için ayarlar yapabilir. Formlarla ilgili olarak anlatılacak olanlar 3 gruba ayrılabilir. Formun özellikleri

belirlemede kullanılan, Properties’dir. Formların hemen hemen bütün özellikleri Object Inspector

penceresinden ayarlanabilir. İkinci sırada formlara uygulanabilen olaylardan bahsedilebilir. Son olarak da

metodlar vardır. Örneğin; formun üzerine TextOut ( ) metodu ile bir bilginin yazılması.

Formların boyutları, aktif olduğu sırada ekrandaki yeri, rengi, kenar çizgileri, başlığı gibi özellikleri söz

konusudur. Forma ait olan ve formun hazırlanması ile birlikte otomatik olarak tanımlanan ve form hakkında

bilgi içeren bu değişkenlere Delphi dahilinde Properties adı verilmektedir. Bu değişkenlerin çoğunun içeriği

tasarım anında Object Inspector penceresinden değiştirilebilir. Bazı özellikleri ise ancak çalışma anında

program kodu ile değiştirmek mümkündür. Yeni formların bazı özellikleri vardır ki bunları çalıştırma anında

değiştirmek mümkün değildir. Bunlar ancak tasarım anında değiştirilebilir. Çalışma anında formların

özelliklerini değiştirmek, bir değişkene değer atamaya benzer.

Formların maksimize, minimize gibi özelliklerinde değişiklikler için BorderIcons özelliğinden yararlanılır. Bir

dizi şeklinde tanımlanmıştır. Object Inspector‟da bu özelliğin önünde bir (+) işareti bulunur. Buraya fare ile çift

tıklama yaparsak bu alt özelliğe 4 özellik daha eklenir. Bu özelliklerden False diğerine aktarıldığında icon‟lar

soluk olarak görüntülenir veya hiç görüntülenmezler.

Çalışma anında formun boyutunu kullanıcının değiştirmesini önlemek için BorderStyle özelliğinde değişiklik

yapılması gerekir. Formlar için seçilebilecek 4 değişik çizgi tipi vardır. Formun sınırları çizgi ile belirlenmek

istenmiyorsa bsNone atanması gerekir. Bu durumda hem başlık bilgisi hem de düğmeler kaybolur. BsDialog

seçilirse maximize ve minimize özellikleri kaldırılır. BorderStyle özelliği program kodu yazılarak

değiştirilemez.

Formların başlık bilgisi Caption özelliğinde saklanır. Adı ise name özelliğindedir. Name özelliği formu temsil

eden özelliktir ve program kodu yazılarak değiştirilemezler. Formun genişliği Width, yüksekliği ise Height

özelliğinde saklanır. Formun ekrandaki konumu ise Left ve Top özelliklerinde saklanır. Top; formun ekranın

üst kenarına olan uzaklığı, Left ise ekranın sol kenarından pixel cinsinden uzaklığıdır.

Formların denetim menüsünü açarken tıkladığı bir icon vardır. Bu icon Delphi tarafından atanır. Bu iconu tüm

projelerde geçerli olacak şekilde Project menüsünden Option komutunu verip gelen Project optionun dialog

kutusundaki Application sekmesinden değiştirebilir. Fakat üzerinde çalışılan formda bu değişikliği yapmak için

formun icon özelliğinden yararlanılır.

Windows uyumlu programlarda fare işareti bulunduğu ortama göre yapılabilecek işlemleri işaret etmek üzere

şekil değişikliğine uğramaktadır. Bu etkiyi nesneye ait Cursor özelliği verebilir. Fare işaretini temsil eden 17

adet sabit değer vardır. crDefault normal fare görünümü temsil eder ve varsayılan olarak seçilidir.

Page 5: DELPHI DERS NOTLARI

Formları kullanılmaz duruma getirmek için Enable özelliğine False değerinin ataması gerekir. Bu özellik

varsayılan olarak True değerini içerir. Tasarım anında formu kullanılmaz duruma getirmek pek anlamlı bir

işlem değildir. Fakat çalışma anında bazı durumlarda bu durum istenebilir. Bir diğer özellik Hint özelliğidir.

Bunun görevi ipucu görüntülemektir. Fare ile nesne üzerine gelindiğinde bir süre sonra ne iş yaptığına dair bir

metin görüntülenir. Hint özelliğinden yararlanmak için iki işlem yapılmaktadır. İlk olarak False değeri içeren

ShowHint özelliğine True değerini aktarmak, ikinci olarak Hint adlı özelliğe görüntülenecek metni girmek

gerekir.

Formlara Uygulanan Olaylar

Seçili durumda olan form veya nesne için tanımlı olan olayları görmek için Object Inspector penceresinin

Events başlıklı sekmesine tıklamak yeterlidir. Delphi tarafından herhangi bir nesne için önceden tanımlı olan

olaylardan biri meydana geldiği zaman, yapılmak istenen işlemleri belirlemek için PAS uzantılı UNIT dosyası

içinde bir yordam hazırlanır. Ardından bu yordamın adı Object Inspector‟da ilgili yere yazılır. Bir olayı

tanımlamak için Object Inspector penceresinin Events sekmesinde ilgili yere çift tıklama yapılması yeterlidir.

Form üzerine tıklama yapıldığı zaman Click, çift tıklama yapıldığı zaman ise DblClick, Close metodu ile form

kapatıldığı zaman ise OnClose olayı meydana gelir. Form tıklandığı zaman ise FormClick olayı meydana

gelir.

OnCreate olayı: Delphi projelerine dahil edilen bütün formlar, proje çalıştırıldığında otomatik olarak

hazırlanıp belleğe yüklenmektedir. OnCreate olayı bu anda meydana gelir. FormCreate yordamını kalıbını

hazırlamak için tasarım anında form üzerinde çift tıklamanız yeterlidir.

Üzerinde çalışılan projede sadece bir form varsa, formun belleğe yüklenmesi ve silinmesi gibi sorunlarla

ilgilenilmesine gerek yoktur. Çünkü proje çalıştırıldığında form otomatik olarak hazırlanır ve sonra aktive

edilip ekrana getirilir. Projenin çalışması bitince formda otomatik olarak bellekten silinir. Fakat projede birden

fazla form söz konusu ise formların aktive edilmesi ve pasif duruma getirilmesi programcının işi olmuş olur.

Projeye dahil edilmiş bir formu ekrana getirmek için Show metodundan yararlanılır. Formlar show metodu ile

ekrana getirilirken Activate olayı meydana gelir. Bu olay meydana geldiği zaman, söz konusu forma ait unitte

FormActivate adında bir yordam varsa işletilir. Aktif durumda olan bir form varken ikinci bir form ekrana

getirildiğinde daha önceki form pasif duruma gelir. Bu sırada Deactive olayı meydana gelir. Çalışma sona

erdirilen bir form bellekten silinir. Bu durumda ise Destroy olayı meydana gelir.

Close Olayı : Formun kapatılması sırasında meydana gelir. OnClose olarak ifade edilir. Kapatılan form Show

metoduyla tekrar ekrana getirilebilir. Bu olaya ait yordama Action diye bir parametre gönderilir. Action

parametresine caFree sabit parametresi aktarılırsa form kapatılır, caMinimize değeri aktarılıp form simge

durumuna getirilebilir. Aynı şekilde caHide parametresiyle form ekranda gizlenebilir.

ReSize Olayı : Çalışma anında formun boyutunda yapılan değişikliklerle Resize olayı meydana gelir. Çalışma

sırasında formların boyutlarında değişiklik yapılıp yapılamayacağı BorderStyle değişkeninin içeriğine bağlıdır.

KeyPress Olayı : Çalışma anında klavyenin yön ve kontrol (Ctrl, Alt, Shift) tuşları dışında herhangi bir tuşa

basılması halinde OnKeyPress olayı meydana gelir. KeyPress olayı için Delphi tarafından düzenlenen yordam,

basılan tuşun kendisi parametre olarak gönderilir.

KeyDown ve KeyUp Olayları : KeyDown ve KeyUp olayları işlevleri bakımından KeyPress olayına

benzeseler bile bazı farklılıklar vardır. KeyDown olayı tuşa basıldığı anda, KeyUp ise tuş bırakıldığı anda

meydana gelir. Basılan tuşun Ascii kodu Key adlı değişkene aktarılır. Shift adındaki 3. Parametre ise bu olay

meydana geldiği zaman Shift, Ctrl ve Alt tuşlarından birinin basılı durumda olup olmadığı konusunda bilgi

içerir. KeyDown olayı sırasında Shift tuşu basılı ise ssShift, Ctrl tuşu basılı ise ssCtrl, Alt tuşu basılı ise ssAlt

değeri döner.

MouseDown Olayı : Bu olay çalışma anında formun üzerinde farenin herhangi tuşuna basılması halinde

meydana gelir. Bu olayı temsil eden FormMosueDown yordamı 4 parametreye sahiptir. Button adlı 2.

Parametre MouseDown olayının meydana geldiği sırada farenin hangi tuşuna basıldı bilgisini bildirir. Farenin

Page 6: DELPHI DERS NOTLARI

sol tuşu ile bu olay meydana geldiyse button parametresine mbLeft, sağ tuş ise mbRight, her iki tuşa birlikte

basılmışsa mbMiddle değeri aktarılır.

MouseUp Olayı : Kullanıcının farenin basılı olan tuşunu bıraktığı sırada gerçekleşir. MouseUp yordamı 3

parametreye sahiptir. Bu olaydan form veya başka bir nesne üzerinde fare ile taşıma veya boyut değişiklik

yapılan uygulamalarda yararlanılmaktadır.

Formlara Uygulanan Metodlar

Her şeyi ile nesne yönelimli bir program geliştirme aracı olan Delphi ile geliştirilen uygulamaların en temel

bileşenleri olan formlar ve formlara dahil edilen nesnelerdir. Uygulamalara dahil edilen her nesnenin varsayım

olarak bazı özellikleri bulunmaktadır. Bir nesne için anlatılması en önemli plan konulardan biri de üzerinde

işlem yapmaya yarayan metodlardır.

Show Metodu: Formların görüntülenmesi için kullanılan bir metoddur. Projede bir tek form var ise Show

metoduna ihtiyaç duyulmayabilir. Fakat projede birden fazla form var ise proje çalıştığında sadece biri

görüntülenir ve formların görüntülenmesini program kodunda show metodunu kullanarak programcının

görüntülemesi gerekmektedir. Daha önce ekranda görüntülenmesine rağmen pasif durumda olan veya hide

metodu ile gizlenmiş formlar show metodu ile tekrar ekrana getirilebilirler.

Close ve Hide Metodları : Close metodu ile daha önce ekrana getirilmiş formlar kapatılabilir. Fakat projede

birden fazla form var ise önce formun adı belirtilmelidir. Hide metodu ile formlar masa üstünden kaldırılıp

gizlenir. Tekrar görüntülenmesi için show metodu kullanılır. Ekrana tekrar getirilen form orijinal görünümünü

korur.

EDĠT KONTROLÜ

Metin kutusu (Edit) Component Palette araç çubuğunda standart sekmesinde bulunmaktadır. Genel olarak bilgi

girişi yapmak için kullanılır. Edit nesnesine girilen veya atanan bilgi Text özelliğinde tutulur ve varsayım

olarak “Edit1” bilgisi atanır. Birçok nesnede bulunan Caption özelliği edit nesnesinde yoktur. İlk metin

kutusundan diğerine geçmek için Tab tuşuna basabilir veya fare ile üzerine tıklanabilir.

AutoSelect : Kullanıcı Tab tuşunu kullanarak öğemizin üzerine geldiğinde, yazının seçili gelmesini sağlar

AutoSize : Bileşenin yüksekliğinin yazıya göre ayarlanmasını sağlar.

CharCase : Bileşene girilen yazının harflerinin nasıl girileceğini ayarlar. (Küçük, büyük normal)

Color : Bileşenin arka plan rengini belirler.

Cursor : Bileşenin üzerine geldiğinde farenin alacağı şekli belirler.

Enabled : Bileşenin aktif olmasını sağlar.

Font : Yazı tipini belirler.

Height : Bileşenin yüksekliğini belirler. („AutoSize‟ özelliği „True‟ ise etkisizdir).

Hint : İpucu girilmesini sağlar.

Left : Bileşenin yatay olarak yerini belirler

MaxLength : Girilebilecek metnin maksimum uzunluğunu belirler

Name : Bileşenin ismini belirler

PasswordChar : Bileşenimizi şifre girişi için kullandığımızda işe yarar.

PopupMenu : Yan menüyü belirler.

ReadOnly : Bileşenimizi sadece okunabilir yapabiliriz.

ShowHint : İpucunun ekranda görüntülenmesini sağlar.

Text : Pencere açıldığında bileşende görülecek olan yazıdır.

Top : Bileşenin dikey olarak yeri belirtilir.

Width : Bileşenin enini belirler.

Page 7: DELPHI DERS NOTLARI

BORLAND DELPHI'DE VERĠ TABANI

Veri Tabanı Dosyası, Delphi ile birlikte gelen Borland Database Desktop ile tasarlanabilir. Bunun dışında

Visual Dbase, Dbase for Windows, Paradox, Dbase VI, Access gibi veri tabanı programları da desteklenir.

Şimdi Database Desktop programı ile veritabanı hazırlamaya başlayalım.

DATABASE DESKTOP ĠLE VERĠTABANI HAZIRLANMASI

Delphi ile gelen Database Desktop programını çalıştırın. Daha sonra tablo hazırlayacağız. Bunun için File-

New-Table menüsüne tıklayınız. Açılan pencere'de Paradox 7‟yi seçin ve Ok tuşuna tıklayın. Veri tabanındaki

alanları tanımlayabilmeniz için pencere açılacaktır. Açılan bu penceredeki sütunlar aşağıdaki özellikleri belirtir.

1) Field Name: Bu sütuna alanın ismi yazılır. ( Örneğin Adı Soyadı vb. )

2) Type: Bu alana girilecek olan bilginin tipini giriyoruz. Aşağıda bu tipleri belirteceğim.

2-1) Character: Bu alana girilen bilgi harflerden veya rakamlardan veya her ikisinin karışımından

olabilir.

2-2) Number: Bu alana girilen bilgi sadece rakamlardan ibarettir.

2-3) Date: Tarih bilgileri bu tipte tanımlanır.

2-4) Logical: Evet - Hayır, Açık - Kapalı gibi sadece iki durumdan oluşan olaylar bu tipte tanımlanır.

2-5) Memo: Uzun metinler bu tipte tanımlanır.

2-6) Binary: Resim, ses gibi özel alanlar bu tipte tanımlanır.

3) Size: Bu sütuna da karakter sınırı yazılır. ( Örneğin 10 yazıldığında ; 10 karaktere kadar klavyeden

giriş yapılır. )

Not: Sütunlara bilgiler girildikten sonra, Save As tuşuna basılarak oluşturduğumuz Tablo kaydedilir.

VERĠTABANI BĠLEġENLERĠ

Data Access kısmındaki kontroller program çalıştığında ekranda gözükmeyen bileşenlerdir. Bu bileşenler Data

Controls kısmındaki kontroller ile görüntülenecek veriler için veritabanları ile köprü vazifesi görürler.

TTable: En önemli özellikleri DataBaseName ve TableName'dir. Database Name'e BDE içinde tanımladığımız

alias verilebilir. Örneğin: Formumuza Data Access kısmından 1 tane TTable yerleştirelim. Bunun Database

kısmına DBDEMOS aliasını seçelim. Daha sonra TableName kısmındaki ComboBox'tan country.db' yi

seçelim.

DataSource: Verilerin Data Controls kısmındaki bileşenler yardımıyla görüntülenmesi için Table, Query gibi

kontrolleri mutlaka Datasource'e bağlanması gerekmektedir. Az önce formumuza Table yerleştirmiştik. Şimdi

formumuza Data Access kısmından Data Source kontrolünü yerleştirelim. Object Inspector penceresinden

Dataset özelliğini az önce koyduğumuz Table1'e ilişkilendirelim.

DbEdit: Görsel kontrollerden biridir. Data Controls' dan seçip formumuza yerleştirelim. DbGrid'in önemli

kısımlarından DataSource ve DataField'dir. Şimdi DataSource kısmında DataSource1'i seçelim. DataField

kısmından da Area 'yı seçelim. Gerekli diğer kontrolleri de yerleştirdikten sonra; Table1'i seçerek Object

Inspector'den Active kısmını True yapalım; sonra programı F9 tuşuna basarak çalıştıralım. Görüleceği gibi

country.db'ye ait bütün bilgiler ekranımızda belirdi.

DbImage: Veritabanlarına resim içeren alanların işlenmesi için kullanılır.

DbGrid: Verilerin gösterilmesi için kullanılır. Gösterilecek alanlar ayarlanabilir, verilerin fontu değiştirilebilir.

Az önceki örneğimizdeki formumuza Data Controls kısmından DbGrid yerleştirelim. Daha sonra Object

Inspector'de DataSource özelliğini DataSource1 değerini verelim. Böylece programı çalıştırdığımız zaman Grid

sütunlarında, alanlar ise satırlarında gösterildiğini göreceğiz.

DbNavigator: Veriler üzerinde güncelleme, silme, yeni kayıt ekleme, ileri - geri gitme vb. gibi işlemlerin

yapıldığı araç çubuğudur. Örneğimizde formumuza Data Controls kısmından DbNavigator yerleştirelim ve

Object Inspector kısmında Data Source özelliğini Data Source1 yapalım. Programı çalıştırdığınız zaman

istediğiniz işlemleri DbNavigator çubuğuyla yapabileceğinizi göreceksiniz. Bu çubuktaki özellikleri

inceleyelim.

Page 8: DELPHI DERS NOTLARI

First: İlk kayda gider.

Prior: Bir önceki kayda gider.

Next: Bir sonraki kayda gider.

Last: En son kayda gider.

Insert: Mevcut kayıttan önce araya bir kayıt ekler.

Delete: Mevcut kaydı siler bir sonraki kaydı görüntüler.

Edit: Mevcut kaydın değiştirilmesini sağlar.

Post: Yapılan değişiklikleri veri tabanı dosyasına yazar.

Cancel: Girilen değişiklikleri iptal eder.

Refresh: Mevcut kaydı yeniden görüntüler. Yani Güncelleme yapar.

Not: DbNavigator'ün ShowHint özelliği True yapılarak, bu düğmelerin ne işe yaradığı üzerine gelindiği zaman

yazacaktır.

DbText: Label ile aynıdır. Bağlı olduğu tablodan belirtilen alan bilgisini görüntüler. Genelde üzerinde

değişiklik yapılmayacak alanların gösterilmesinde kullanılır.

DbMemo: Birden fazla satırın veya 255 karakterden daha uzun verilerin saklanması ve gösterilmesi için

kullanılır.

DbListBox: Verilen alan değeri eğer liste içinde bulunuyorsa otomatik olarak seçilir. Bileşen listesini biz

doldurmak zorundayız.Verilen alan ile ilgili değerler otomatik olarak gelmez.

DbComboBox: TListbox ile aynıdır. Bu kontrol aracılığı ile combobox içinde bulunabilecek değerler belirlenir

ve kullanıcının bu değerlerden birisini seçmesi sağlanır. Önce DataSource özelliği ile kullanılacak tablo ve

DataField özelliği ile de comboBox'un bağlantı kuracağı alan belirlenir. DbComboBox içinde bulunacak

değerler ise bu kontrolün Items özelliği ile açılan pencereden belirlenir.

DbRadioGroup: Bir alana girilecek bilgi sayısı sınırlı ise bu kontrol kullanılır. DataSource özelliği ile

kullanılacak tablo ve DataField özelliği ile de bağlantı kurulacak alan belirlenir ve Caption ile alanın ismi

değiştirilebilir.

DbChart: DbChart kontrolü kullanılarak veri tabanımızda bulunan bilgileri grafiksel olarak ifade edebiliriz. Bu

kontrol ile birden fazla grafiği bir arada görebiliriz. Farklı veri tabanlarında bulunan bilgileri bile aynı grafik

üzerinde gösterebilmekte ve böylece farklı verilerin analizi grafiksel olarak gerçekleştirilebilmektedir.

TQuery Kontrolü ile Veri Sorgulama

Delphi'de Veri Sorgulama işlemi TQuery kontrolü ile olur. TQuery kontrolüne ait SQL özelliği; hem bir editör

olarak ve hem de doğrudan SQL komutları yazılıp çalıştırılmak suretiyle kullanılan bir özelliktir. Şimdi Query1

kontrolüyle sorgulama işlemlerine başlayalım.

Örnek: Tüm Kayıtları Listelemek

liste.db adlı veri tabanımız olsun. Bunu Query1 kontrolü ile sorgulayıp listelemek istiyoruz. Bunun için

yapmamız gerekenler şunlardır. İlk önce formumuza Data Access kısmından Query1 bileşeni ile DataSource1

bileşeni yerleştirelim. DataSource1'in Dataset özelliğini Query1 yapalım. Daha sonra Data Controls kısmından

formumuza DbGrid yerleştirelim ve Object Inspector'den DataSource özelliğini DataSource1 yapalım. Daha

sonra Query1'in DataBaseName özelliğini alias olarak tanımlanan önceden oluşturduğumuz liste.db'yi seçelim.

Sonra Query1'in SQL özelliğine gidip çıkan pencerede aşağıdaki SQL ifadesini yazalım.

SELECT * FROM liste.db

Sonra Query1'in Object Inspector'den Active özelliğini True yapalım ve programımızı F9'a basarak çalıştıralım.

DbGrid'de görüleceği gibi liste.db'deki bütün bilgiler listelenmiştir.

Page 9: DELPHI DERS NOTLARI

Örnek: Parametreye Bağlı Olarak Veri Sorgulaması

procedure TForm1.Button1Click ( Sender : TObject ) ; // Button1 adlı butona kodumuzu yazıyoruz.

begin

Query1.Close ;

Query1.ParamByNAme( ' Adi ' ).AsString := Edit1.Text ;

Query1.Open ;

end ;

Örnek: Sütun Sorgulama

Bunu yaparken DataSource1 'in DataSet özelliğini Query1; Query1‟in DataBaseName özelliğini veri tabanınız

(bizim örnekte liste.db); DBGrid1 ' in DataSource özelliğini de DataSource1 yapınız.

procedure TForm1.Button1Click ( Sender : TObject ) ;

begin

Query1.SQL.Clear ;

Query1.SQL.Add(' Select adi , soyadi , adresi , maas From liste ' ) ;

Query1.Open ;

end ;

Programımızı çalıştırıp Button1'e tıkladığımız zaman DBGrid'de istediğimiz bilgilerin listelendiğini görürüz.

Örnek: Ekleme Sorgusu

Formumuza Button1 koyalım. Caption özelliğine Ekle yazalım. Ekle butonuna aşağıdaki kodları yazalım.

(formumuza Query1, DataSource1 ve DBGrid1 yerleştirilmiş varsayıyorum.)

procedure TForm1.EkleClick ( Sender : TObject ) ;

begin

Query1.SQL.Add ('INSERT into liste ' );

Query1.SQL.Add ( ' (ADI , SOYADI ) ' ) ;

Query1.SQL.Add ( 'values (" Bahadir " , " Sahin " ) ' ) ;

Query1.ExecSQL ;

end;

Not: Programı çalıştırıp Ekle butonuna bastığımız zaman, kodda yazmış olduğumuz Bahadir Sahin' i veri

tabanına ekler.

Örnek: Veri Güncellemek

Tablomuzda bulunan verilerimizi güncellemek için UPDATE'i kullanacağız. Bunun için Formumuza Button1

koyalım. Caption özelliğine Güncelle yazalım. Güncelle butonuna aşağıdaki kodları yazalım.

procedure TForm1.GuncelleClick ( Sender : TObject ) ;

begin

Query1.SQL.Clear ;

Query1.SQL.Add ( ' UPDATE liste set maas = 10000 where ADI = ' Bahadir ' ) ;

Query1.ExecSQL ;

end ;

Page 10: DELPHI DERS NOTLARI

Örnek: ADO ile Veritabanı Bağlantısı

ADOTable1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and

Settings\Administrator\Belgelerim\memur.mdb;Persist Security Info=False

ADOTable1.TableName = Personel

ADOTable1.Active = True

DataSource1.DataSet = ADOTable1

DBGrid1.DataSource = DataSource1

procedure TForm1.Button1Click(Sender: TObject);

begin

adotable1.Insert;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

adotable1.Post;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

adotable1.CancelUpdates;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

adotable1.Edit;

end;

procedure TForm1.Button5Click(Sender: TObject);

Page 11: DELPHI DERS NOTLARI

begin

adotable1.Delete;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

adotable1.First;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

adotable1.Prior;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

adotable1.Next;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

adotable1.Last;

end;

procedure TForm1.DataSource1StateChange(Sender: TObject);

var ds: string;

begin

case ADOTable1.State of

dsInactive: ds:='Kapalı';

dsBrowse : ds:='Gezinti';

dsEdit : ds:='Düzenleme';

dsInsert : ds:='Yeni kayıt ekleme';

else

ds:='Başka'

end;

Caption:='ADOTable1 durumu: ' + ds;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

if not adotable1.Locate('Adi',edit1.Text,[loCaseInsensitive,loPartialKey]) then

showmessage('Kayıt bulunamadı!');

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

if trim(edit1.Text)<>'' then begin

adotable1.Filter := 'Adi=''' + edit1.Text + '''';

showmessage('Adi=''' + edit1.Text+ '''');

adotable1.Filtered := true;

end

else

adotable1.filtered := false;

end;

Page 12: DELPHI DERS NOTLARI

Örnek: Rasgele EriĢimli Dosya Kullanımı

Type

Personel_Tipi=Record

sno: String[6];

ad: String[15];

soyad: String[15];

gorev: String[20];

kderece: String[5];

dtarihi: TDateTime;

tel: String[10];

adres: String[50];

hyili: Byte;

End;

Var

Sayac, KayitNo, KayitSayisi: LongInt;

Kayit: Personel_Tipi;

Dosya: File of Personel_Tipi;

procedure TForm1.KayitGoster;

begin

AssignFile(Dosya, 'c:\Personel.txt');

Reset(Dosya);

KayitSayisi := FileSize(Dosya);

StringGrid1.RowCount := KayitSayisi + 1;

For Sayac := 1 To KayitSayisi do begin

Seek(Dosya, Sayac-1);

Read(Dosya, Kayit);

With Kayit do

with Stringgrid1 do begin

Cells[0, Sayac] := sno;

Cells[1, Sayac] := ad;

Cells[2, Sayac] := soyad;

Cells[3, Sayac] := gorev;

Cells[4, Sayac] := kderece;

Cells[5, Sayac] := datetostr(dtarihi);

Cells[6, Sayac] := tel;

Cells[7, Sayac] := adres;

Cells[8, Sayac] := inttostr(hyili);

End;

end;

CloseFile(dosya);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do begin

ColCount :=9; RowCount :=2;

FixedCols := 0; FixedRows := 1;

Cells[0,0] := 'Sicil Nosu';

Cells[1,0] := 'Adı';

Cells[2,0] := 'Soyadı';

Page 13: DELPHI DERS NOTLARI

Cells[3,0] := 'Görevi';

Cells[4,0] := 'KD';

Cells[5,0] := 'D.Tarihi';

Cells[6,0] := 'Telefon No';

Cells[7,0] := 'Adresi';

Cells[8,0] := 'H.Yili';

end;

KayitGoster;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit1.Clear; Edit2.Clear; Edit3.Clear;

Edit4.Clear; Edit5.Clear; Edit6.Clear;

Edit7.Clear; Edit8.Clear; Edit9.Clear;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

With Kayit do begin

sno := Edit1.Text; ad := Edit2.Text; soyad := Edit3.Text;

gorev := Edit4.Text; kderece := Edit5.Text;

dtarihi := StrToDate(Edit6.Text); tel := Edit7.Text;

adres := Edit8.Text; hyili := strtointdef(Edit9.Text,0);

End;

AssignFile(Dosya, 'c:\personel.txt');

Reset(Dosya);

KayitSayisi := FileSize(Dosya);

Seek(Dosya, KayitSayisi);

Write(Dosya, Kayit);

CloseFile(Dosya);

KayitGoster;

end;

procedure TForm1.Button3Click(Sender: TObject);

var

aranan: String; cevap: Integer;

begin

If KayitNo = 0 Then begin

aranan := InputBox('Düzeltme İşlemi','Personelin adını giriniz:','');

AssignFile(Dosya, 'c:\personel.txt');

Reset(Dosya);

KayitSayisi := Filesize(Dosya);

For Sayac := 1 To KayitSayisi do begin

Seek(Dosya,Sayac-1);

Read(Dosya, Kayit);

With Kayit do

If Trim(ad) = Trim(aranan) Then begin

Edit1.Text := Trim(sno); Edit2.Text := Trim(ad);

Edit3.Text := Trim(soyad); Edit4.Text := Trim(gorev);

Edit5.Text := Trim(kderece); Edit6.Text := DateToStr(dtarihi);

Edit7.Text := Trim(tel); Edit8.Text := Trim(adres);

Edit9.Text := IntToStr(hyili);

Page 14: DELPHI DERS NOTLARI

cevap := MessageDlg('Düzenlenecek kayıt bu mu?', mtConfirmation, [mbYes, mbNo], 0);

If cevap = mrYes Then begin

Button3.Caption := 'Kaydet';

KayitNo := Sayac;

CloseFile(Dosya);

Exit; // Prosedürden çık

End;

End;

end;

CloseFile(Dosya);

ShowMessage('Aranan kayıt bulunamadı!');

end

Else begin

AssignFile(Dosya, 'c:\personel.txt');

Reset(Dosya);

With Kayit do begin

sno := Edit1.Text; ad := Edit2.Text; soyad := Edit3.Text;

gorev := Edit4.Text; kderece := Edit5.Text;

dtarihi := StrToDate(Edit6.Text); tel := Edit7.Text;

adres := Edit8.Text; hyili := Strtointdef(Edit9.Text,0);

End;

Seek(Dosya, KayitNo-1); Write(Dosya, Kayit);

CloseFile(Dosya);

KayitGoster;

KayitNo := 0;

Button3.Caption := 'Düzenle';

End;

Button1Click(Form1);

end;

procedure TForm1.Button4Click(Sender: TObject);

var

aranan: String; cevap: Integer;

begin

aranan := InputBox('Silme İşlemi','Personelin adını giriniz:','');

AssignFile(Dosya, 'c:\personel.txt');

Reset(Dosya);

KayitSayisi := Filesize(Dosya);

For Sayac := 1 To KayitSayisi do begin

Seek(Dosya,Sayac-1);

Read(Dosya, Kayit);

With Kayit do

If Trim(ad) = Trim(aranan) Then begin

Edit1.Text := Trim(sno); Edit2.Text := Trim(ad);

Edit3.Text := Trim(soyad); Edit4.Text := Trim(gorev);

Edit5.Text := Trim(kderece); Edit6.Text := Datetostr(dtarihi);

Edit7.Text := Trim(tel); Edit8.Text := Trim(adres); Edit9.Text := IntToStr(hyili);

cevap := MessageDlg('Silinecek kayıt bu mu?', mtConfirmation, [mbYes, mbNo], 0);

If cevap = mrYes Then begin

Seek(Dosya, KayitSayisi-1); Read(Dosya, Kayit); // Son kaydı oku

Seek(Dosya, Sayac-1); Write(Dosya, Kayit); // Aktif yani silinecek kaydın üzerine yaz

Seek(Dosya, KayitSayisi-1); Truncate(Dosya); // Son kaydı sil

CloseFile(Dosya);

KayitGoster;

Page 15: DELPHI DERS NOTLARI

Exit;

End;

End;

end;

CloseFile(Dosya);

ShowMessage('Aranan kayıt bulunamadı!');

Button1Click(Form1);

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Close;

end;

DĠNAMĠK BAĞLI KÜTÜPHANELER (DYNAMIC-LINK LIBRARIES)

Bir dinamik bağlı kütüphane (DLL) uygulama programları ve diğer DLL‟ler tarafından çalıştırılabilecek

yordamlar içerir. Unit‟ler gibi, DLL dosyaları da paylaşılan kaynaklar içerir. Fakat bir DLL ayrı olarak derlenir

ve çalışma esnasında programa bağlanır.

Object Pascal programlarının diğer dillerde yazılmış DLL‟leri çalıştırabileceği gibi diğer dillerde yazılmış

Windows uygulamaları da Object Pascal ile yazılmış DLL dosyaları çalıştırabilirler..

DLL Dosya OluĢturma

Bir DLL dosyanın yapısı programların yapısına benzer. Aradaki fark DLL dosyalarının program ifadesi yerine

library ifadesi ile başlamalarıdır.

Aşağıdaki örnek Min ve Max adlı iki paylaşılabilir fonksiyonu olan bir DLL örneğidir.

library MinMax;

function Min(X, Y: Integer): Integer; stdcall;

begin

if X < Y then Min := X else Min := Y;

end;

function Max(X, Y: Integer): Integer; stdcall;

begin

if X > Y then Max := X else Max := Y;

end;

exports

Min,

Max;

begin

end.

/********* DLL SONU **********/

function Max(X,Y:integer):integer;stdcall;external 'MaxMin.dll';

procedure TForm1.Button1Click(Sender: TObject);

var

s1, s2, sonuc:integer;

begin

s1:=strtointdef(edit1.text,0);

s2:=strtointdef(edit2.text,0);

sonuc:=Max(s1, s2);

edit3.text:=inttostr(sonuc);

end;

Page 16: DELPHI DERS NOTLARI

Eğer DLL dosyanın diğer programlama dilleri ile yazılmış programlarda da kullanılması isteniyorsa o zaman

ilgili fonksiyonların tanımında stdcall yazılmalıdır. Aksi halde diğer diller Object Pascal‟ın varsayılan register

tanımını desteklemeyecektir.