DELPHİDE VERİ TABANI VE FORMLAR




Indir 46.42 Kb.
TitleDELPHİDE VERİ TABANI VE FORMLAR
Date conversion31.12.2012
Size46.42 Kb.
TypeBelgeleme
Sourcehttp://meser.home.anadolu.edu.tr/depo/onemli/Delphi e-book/103213-k-19Z-s-20041170.doc




DELPHİDE VERİ TABANI VE FORMLAR

Delphide Formlar

DELPHI’DE FORMLARLA ÇALIŞMAK
Windows 98 tabanlı programlar genellikle pencere içinde çalışırlar. Delphi literatüründe bu
çalışma pencereleri form olarak adlandırılırlar. Bir delphi programı genellikle bir veya
birkaç formun birbirine bağlanması ile oluşur. Bu yazıda formların özellikleri, türleri ve
kendileri hakkında bilinmesi gereken önemli bilgilerle birlikte, ilave olarak formlar arasında
bilgi transferinin nasıl yapılacağı ve formların birbirine nasıl bağlanacağı konuları üzerinde
duracağım.
Başlamadan önce sizlere delphi ile çalışırken ihtiyacınız olabilecek ve işinizi daha
kolaylaştıracak bazı ip uçları vermeye çalışayım. Ayrıca başlangıçta dikkat ettiğinizde
projelerinizin ileriki dönemlerinde işinizi kolaylaştıracak bazı bilgileri de burada
bulacaksınız.
Öncelikle bir projeye başlamadan önce, bu projeyle ilgili bütün dosyaları içinde tutacağınız
bir klasör açın. Ben genellikle belki gözümden bir şey kaçar diye bu klasörü kök dizinde
açıyorum. Çünkü proje bittiğinde kullanıcılara dağıtılması gerekir. Kullanıcıları da sizin
kullandığınız klasörü kullandırmaya yönelirseniz oluşabilecek bazı hataları daha ortaya
çıkmadan önlemiş olursunuz. Bu sitede üzerinde çalışacağımız bütün örnekler için C: sürücüsünün kökünde oluşturduğum ve adı WORK olan bir dizin kullanacağım. Eğer projenizde veritabanı dosyaları kullanacaksanız bu dosyalarınızın program kaynak dosyaları ile karışmaması için çalışma dizininizin içinde ( benimki C:\WORK) DATA diye bir dizin oluşturmanız yararınıza olur. Ben genellikle 1024x768 çözünürlükte çalışıyorum. Eğer ekran kartınız müsaade ediyorsa sizde en az bu çözünürlükte çalışmaya özen gösterin. Aslında 1024x768 uygun bir çözünürlüktür, bu çözünürlükte çalışırken form için kullanabileceğiniz alan 800x600 ebadında bir form için yeterlidir. Ve genellikle kullandığınız formlar için en fazla 800x600 boyutlarını kullanın. Çünkü programınızı kullanan herkesin yüksek çözünürlükleri destekleyebilecek bir ekran kartı veya zevki olmayabilir.
Kendiniz için bazı kurallar koyun. Mesela formlarınızın isimleri Delphi’nin standart
isimlerinden Form1, Form2, ... gibi isimleri kullanmak yerine her zaman bu formlarınıza
aklınıza kolay gelebilecek isimler koyun. Formlarınıza Frm ile başlayan isimler koymanız
uygun olur. Bunu kendiniz için bir standart haline getirdiğinizde ilerleyen dönemlerde
işlerinizin daha da kolaylaştığını göreceksiniz.
Eğer mümkünse ana form üzerine açılan formlarınızın boyutu ana formunuzdan daha küçük olsun.

Delphi’de Çok Formlu Uygulamalar
Tek bir form ve birkaç bileşenle tamamen işlevsel uygulamalar geliştirilmesi mümkün olsa da, birden fazla forma sahip olan uygulamalara çok daha fazla rastlanır. Aslında pratik olarak
delphi uygulamalarınızı geliştirebilmeniz için iki farklı form tekniği kullanır. Bunlardan
birincisine örnek olarak Microsoft Word uygulamasında olduğu gibi ana bir pencere çerçevesi
içinde bu pencere tarafından oluşturulmuş birden fazla pencerenin var olabileceği MDI olarak adlandırılan formlar vardır. İkinci form şekli ise Ana form tarafından oluşturulan ancak ana form içinde yer almayan birden fazla formların kullanıldığı uygulamalardır. Birkaç örnek olarak Paint, WordPad, Notepad gibi uygulamaları gösterebiliriz. Bu yazımızda ikinci
tekniği kullanacağız . Bir programın içinde bir çok form vardır. Bu formlardan bir tanesini
uygulama çalıştığında görüntüye gelen form oluşturur. Bu form ana form olarak nitelendirilirse diğer formlar bu ana formdan türerler.
Şimdi yazacağımız uygulamada bir ana form ve bu ana form tarafından oluşturulacak 3 tane
form olacak. Bunun için Delphi’yi çalıştırın ve karşınıza gelen Form1 formuna ilave olarak
üç tane daha form ilave edin. Şimdi ilk olarak neye dikkat etmemiz gerektiğine bakalım.
Project | Options menüsünü çalıştırdığınızda karşınıza Project Options penceresi gelir.
Bu pencerenin bizim programımız için görünümü aşağıdaki gibiydi.

Yukarıdaki görüntüye dikkat ettiğinizde ilk göze çarpan Main form olarak Form1’in tanımlı
olduğudur. Bunun anlamı programı çalıştırdığınızda sadece Form1 görüntüye gelecek.
Auto-create forms başlığı altında ise program çalıştığında otomatik olarak yaratılacak
formların listesini görüyoruz. Bizim tanımladığımız diğer formlar program çalıştığında
görüntüye gelmediği halde otomatik olarak yaratılıyor. Bize düşen sadece gerektiğinde
bu formları görüntüye getirecek komutu gerekli yere yazmaktır. Ancak otomatik olarak
yaratılan formların sayısı arttığı müddetçe bu formların hafızada kapladıkları toplam
alan oldukça yüksek bir değere ulaşır. Bu doğru bir mantık değildir.

program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.Run;
end.

Yukarıdaki kodlar projemizin formları oluştururken kullandığı kodlardır. Bu kodlara dikkat
ederseniz bütün formlar yaratıldıktan sonra uygulama çalıştırılıyor. Dolayısı ile bütün
formların oluşturulması programın ilk çalışma anını uzatıyor.
Program çalışırken görünen formun dışındaki formlar hafızada yaratılmış şekilde durduğunda
bu formların görüntüye getirilip kapatılması (gizlenmesi) son derece hızlı olur ancak bu
aşırı hız hafıza problemini de beraberinde getirmektedir. Ana formumuz Form1 olduğuna göre diğer formları Available forms bölümüne aktarmamız daha mantıklıdır. Böylece programımız çalıştığında sadece Form1 yaratılacak ve görüntülenecek. Diğer formlar ise ihtiyaç duyulduklarında yaratılmak ve görüntülenmek için hazır durumda bekleyecekler. Bu şekilde kurulan bir yapıda hafıza tasarrufu daha rahat yapılabilir. Gerekli düzenlemeyi yaptıktan sonraki Project Options penceresinin görünümü ve projenin kaynak kodu aşağıdaki gibi olur.

program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Proje kodunun son haline dikkat ettiğimizde program çalışmadan önce sadece Form1
oluşturulmuş. Form1 isimli forma diğer üç formla bağlantı kurabilmek için üç tane button yerleştirdim. Ana form olarak kullandığım formun görünümü aşağıdaki gibidir.
Button2’ye basıldığında Form2, Button3’e basıldığında Form3, Button4’e basıldığında Form4
görüntülenecek. Button1’i programı kapatmak için kullanacağız. Bunun için Button1’in üzerine Kapat yazdım.
İlk olarak Kapat buttonunun görevini hazırlayalım. Bir pencereyi kapatmanın birçok yolu vardır. Eğer kapatılan pencere ana form olarak tanımlıysa bu aynı zamanda programın çalışmasının sona ermesine sebep olur. Bunun için gerekli kodu Kapat button’unun onclick olayına yazdım. Kod aşağıdaki gibidir.

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;

Application.Terminate satırına sadece Close veya Form1.Close yazmak da aynı şeyi yapıyor.
Bunun sebebi ana pencereyi kapatmakla uygulamayı sonlandırmanın aslında aynı şey olduğudur.
Şimdi Button2 düğmesine Form2’yi görüntüye getirecek kodu yazalım. Ama daha önce Form2 formuna da bir kapat button’u yerleştirip bu button’un onClik olayına Form2.Close veya sadece Close yazalım ki uygulamayı çalıştırıp Form2’yi görüntülediğimizde tekrar kapatabilelim. Button2 düğmesinin onClick olayına aşağıdaki kodları sırayla yazalım ve her kodun ne anlama geldiğini görelim.

procedure TForm1.Button2Click(Sender: TObject);
begin
Form2:=TForm2.Create(Form1); //1 Form1 ifadesi yerine Application yazabilirsiniz.
Form2.Showmodal; //2
Form2.Free; //3
end;

Öncelikle Form2’yi görüntüye getirmek için yaratılması lazım. (1) numaralı satır Form2’yi
yaratıyor parantez içindeki (Form1) ifadesi ise Form2’nin kim tarafından yaratıldığını
gösteriyor. Bizim örneğimizde Form2’yi Form1 yarattığı için buraya Form1 yazdım. Bu parametreye genelde fazla dikkat edilmez ancak çok önemlidir. Mesela yaratılan ikinci formun kendisini oluşturan formun ekrandaki pozisyonu ne olursa olsun tam ortasına gelmesini istiyorsak Form2’nin Position özelliğini poDesigned değil de poOwner FormCenter yaparsak istediğimiz olur. Form1’i çalışma modunda iken istediğiniz yere taşıyın Button2’ye basmanız Form2’yi tam Form1’in ortasında gösterir.
İkinci numaralı satırda Form2’yi modal olarak görüntüledik. Bunun anlamı Form2 kapatılmadan önce, Form2’yi oluşturan formun disable durumda olacağıdır. Yani daha başka bir ifade ile Form2 kapatılmadan Form1’deki hiçbir görsel bileşen kullanılamaz.
Üçüncü satırda ise Form2 modal olarak gösterildikten sonra Form2’nin kapatılmasını takiben
onu hemen hafızadan silmemizi sağlayan Free komutu kullandık. Bu komutu kullanmadığımızda program gene çalışır ama her seferinde oluşturulan form hafızadan atılmadığı için hafıza sürekli şişer.
Button2’nin onClick olayına yukarıdaki komutları yazdıktan sonra programı çalıştırmak
istediğinizde aşağıdaki gibi bir mesaj görüntüye gelir. Bu mesajın tam karşılığı sudur. “
Form1 formu Unit2 içinde tanımlanmış olan Form2’ye gönderme yapıyor fakat bu sizin USES listenizde yok. Eklemek ister misiniz ? ” bu soruya Yes cevabını verdiğinizde Unit1’in uses listesine Unit2 eklenir. Tekrar çalıştırdığınızda ise program çalışır.
Şimdi Form3’ü görüntüleyelim. Ancak bu formu görüntülerken formu tıpkı bir diyalog kutusuymuş gibi kullanalım. Bunun için Form3’e bir Label bileşeni ekleyelim ve üç tane de düğme koyalım. Bu düğmelerin Kind özelliğini sırasıyla bkYes, bkNo ve bkCancel yapalım. Formun boyutunu uygun bir düzeye getirdiğimizde aşağıdaki görüntü oluşur. İsterseniz her düğme için Caption ifadesine Evet, Hayır ve Vazgeç yazabilirsiniz.
Asıl dikkat etmemiz gereken düğmelerin Kind ve ModalResult özellikleridir. Kind özelliğine
daha önceden tanımlı değerleri yerleştirdiğinizde ilgili düğme bir bitbtn bileşeni ise düğmeye
bir resim de ilave edilir. Ayrıca ModalResult değeri de düğmenin kind’iyle (kind=tür) aynı
değeri gösterecek şekilde değişir. Bu üç düğme için kod yazmadığımız halde üç düğme de Form3 formunu kapatır. Çünkü Form3’ü modal olarak göstereceğiz ve modal olarak gösterilen bir formda ModalResult değeri mrNone’den farklı bir değer aldığında form kapatılır ve değer geri gönderilir. Şimdi Form1 üzerindeki button3 için kodları yazalım.

procedure TForm1.Button3Click(Sender: TObject);
Var Sonuc : Integer;
begin
{1} Form3:=TForm3.Create(Form1);
{2} Form3.Label1.Caption:='Bu bilgi Form1den geldi';
{3} Sonuc:=Form3.ShowModal;
{4} Case Sonuc of
{5} mrYes : ShowMEssage('Pencere Yes düğmesi ile kapandı');
{6} mrNo : ShowMEssage('Pencere No düğmesi ile kapandı');
{7} mrCancel : ShowMEssage('Pencere Cancel düğmesi ile kapandı');
{8} End;
{9} Form3.Free;
end;
Birinci satırda form3 form1 tarafından yaratılıyor. ( gösterime hazır hale geliyor). İkinci
satırda Form3’te yar alan Label1’e bir bilgi atanıyor. Üçüncü satırda form3 modal olarak
görüntüleniyor ve formun kapandığında gönderdiği ModalResult değeri sonuc degişkenine
aktarılıyor. 4,5,6,7 ve 8 numaralı satırlarda Sonuc içine gelen değer kontrol edilip
pencerenin kapanış şekli görüntüleniyor ve dokuzuncu satırda form3 hafızadan atılıyor.
Not : Form3’ün borderstyle özelliğini bsDialog yaparsanız maksimize ve minimize düğmeleri
de ortadan kalkacaktır.
Son olarak Form4’ü görüntüleyeceğiz. Ancak Form4 içine bazı bileşenler ekledim. Form4’ün
görünümü aşağıdadır. Düğmelerin birinin Kind’ini bkOk diğerininkini de bkCancel yaptım.
Bu formu görüntüye getireceğiz ve bu formu hafızadan silmeden önce Edit1 bileşeni içerisindeki
ifadeyi Form1’e geçireceğiz.
Bu işlemi yapmak için gerekli kodu Button4’ün onClick olayına aşağıdaki gibi yazdım. Yazılan
kodu biraz incelerseniz Form4 içindeki Edit1 bileşeninin değerini Form4’ü Free ile hafızadan
atmadan hemen önce aldım.
procedure TForm1.Button4Click(Sender: TObject);
begin
Form4:=TForm4.Create(Form1);
If Form4.ShowModal = mrOk Then ShowMessage('Form4.Edit1 içeriği:'+Form4.Edit1.Text);
Form4.Free;
end;
Bu örnekte formları birbirine nasıl bağladığımızı ve değer geçişlerini nasıl yaptığımızı
öğrendik. Programın bitmiş şeklini buraya tıklayarak alabilirsiniz.

Formlarla İlgili Birkaç İpucu ve Not
ActiveControl Bileşeni

Bir formun ActiveControl bileşeni, ilgili form aktif durumda olduğunda; form üzerinde yer
alan bileşenlerden hangisinin seçili durumda olacağını gösterir. Eğer ActiveControl’de
gösterilen bileşen bir düğme ise form üzerinde herhangi bir yerde Enter tuşuna basmakla
ActiveControl olarak belirlenmiş düğmeye basmak aynı anlama gelir.
Kod Yazarak Bir Bileşeni Aktif Hale Getirmek
Kod yazarak form üzerindeki bir bileşeni seçili duruma getirebilirsiniz. Bunun için Tform
nesnesinin SetFocus nesnesini kullanabilirsiniz. Bu komutu kayıt ekleme düğmesine bastığınızda klavye imlecinin ilk giriş alanına konumlanmasını sağlayabilirsiniz. Bunun için yazmanız gereken kodun bir örneği şu şekildedir. SetFocus:=DBEdit1;
Başlık Çubuğunda Sistem Saatinin Gösterilmesi
Formunuza ait başlık çubuğunda sistem saatini görüntüye getirebilirsiniz. Bunun için
Formunuza bir Timer bileşeni ekleyin. Bu bileşenin Interval özelliği görüntüdeki saatin
yenilenme aralığını belirler ve 1000 değeri yaklaşık olarak 1 saniyeye karşılık gelir.
Formunuzun ana Var bölümünde hdc tipinde ve dc isminde bir değişken tanımlanmalı. Bunu
unutmayın. Timer bileşeninin onTimer olayına, formunuzun ise onCreate ve onClose olayına
gerekli kodları yazıp programı çalıştırdığınızda başlık çubuğunuzun tam ortasında saniyesi
olan bir saat göreceksiniz. Unit’in komple kodu aşağıdadır.
( Kaynak : Melsoft Pufler.Doc)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Mask, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
MaskEdit1: TMaskEdit;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
public
end;
var
Form1: TForm1;
dc:hdc;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
dc:=getwindowdc(handle);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
releasedc(handle,dc);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var thetime: array[0..80] of char;
begin
strpcopy(Thetime,timetostr(time));
canvas.font.color:=clred;
textout(dc,width div 2,5,thetime,strlen(thetime));
end;
end.

Başlık Çubuğuna Bir Button Eklenmesi

Formunuzun başlık çubuğunda genelde üç tane düğme vardır. Bunlar kapat, Tamekran ve
önceki boyut düğmesi bulunur. Bunların hemen sol tarafına bu düğmeler gibi yeni bir
düğme eklemek için gerekli kodlar aşağıda verilmiştir.
( Kaynak : Melsoft Pufler.Doc)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Mask, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
MaskEdit1: TMaskEdit;
procedure FormResize(Sender: TObject);
private
CaptionBtn : TRect;
procedure DrawCaptButton;
procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPaint;
procedure WMNCActivate(var Msg : TWMNCActivate); message WM_NCACTIVATE;
procedure WMSetText(var Msg : TWMSetText); message WM_SETTEXT;
procedure WMNCHitTest(var Msg : TWMNCHitTest); message WM_NCHITTEST;
procedure WMNCLButtonDown(var Msg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
public
{ Public declarations }
end;
var
Form1: TForm1;
dc:hdc;
implementation
const
htCaptionBtn = htSizeLast + 1;
{$R *.DFM}
procedure TForm1.DrawCaptButton;
var
xFrame,yFrame,xSize,ySize : Integer;
R : TRect;
begin
//Form eni ve boyu
xFrame := GetSystemMetrics(SM_CXFRAME);
yFrame := GetSystemMetrics(SM_CYFRAME);
//Başlık butonlarının eni ve boyu
xSize := GetSystemMetrics(SM_CXSIZE);
ySize := GetSystemMetrics(SM_CYSIZE);
//Yeni butonun yeri
CaptionBtn := Bounds(Width - xFrame - 4*xSize + 2,yFrame + 2, xSize - 2, ySize - 4);
//Forma ait DC 'yi kullanarak,
//üzerine çizim yapılacak tuvali bul
Canvas.Handle := GetWindowDC(Self.Handle);
Canvas.Font.Name := 'Symbol';
Canvas.Font.Color := clBlue;
Canvas.Font.Style := [fsBold];
Canvas.Pen.Color := clYellow;
Canvas.Brush.Color := clBtnFace;
try
DrawButtonFace(Canvas, CaptionBtn, 1, bsAutoDetect, False, False, False);
R := Bounds(Width - xFrame - 4 * xSize + 2,
yFrame + 3, xSize - 6, ySize - 7);
with CaptionBtn do
Canvas.TextRect(R, R.Left + 2, R.Top - 1, 'W');
finally
ReleaseDC(Self.Handle, Canvas.Handle);
Canvas.Handle := 0;
end;
end;
procedure TForm1.WMNCPaint(var Msg : TWMNCPaint);
begin
inherited;
DrawCaptButton;
end;
procedure TForm1.WMNCActivate(var Msg : TWMNCActivate);
begin
inherited;
DrawCaptButton;
end;
procedure TForm1.WMSetText(var Msg : TWMSetText);
begin
inherited;
DrawCaptButton;
end;
procedure TForm1.WMNCHitTest(var Msg : TWMNCHitTest);
begin
inherited;
with Msg do
if PtInRect(CaptionBtn, Point(XPos - Left, YPos - Top)) then
Result := htCaptionBtn;
end;
procedure TForm1.WMNCLButtonDown(var Msg : TWMNCLButtonDown);
begin
inherited;
if (Msg.HitTest = htCaptionBtn) then
ShowMessage('Hoops... yeni butona bastın');
end;
procedure TForm1.FormResize(Sender: TObject);
begin
//Başlık çubuğunun yeniden çizilmesini sağla
Perform(WM_NCACTIVATE, Word(Active), 0);
end;
end.


Pencerenin Taşınması
Windows pencereleri, ekran üzerinde başlıklarından tutularak taşınırlar. Pencere alanından
tutularak da taşınabilmeleri için, WM_NCHITTEST mesajının yakalanıp, yordamının değiştirilmesi gerekir. Gerekli kod aşağıda gösterilmiştir.

type
TForm1 = class(TForm)
public
procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHitTest;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if M.Result = htClient then M.Result := htCaption;
end;




Veri Tabanı

 

Veritabanı

Borland Delphi'de Veri Tabanı
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 ile Veritabanı Hazırlanması


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 dBASE for Windows'u seçin ve Ok tuşuna tıklayın.Veri tabanındaki alanları tanımlayabilmemiz 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ütunada 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.

Wizard Kullanılarak Veritabanı Hazırlanması


Borland Delphi bize bir kolaylık daha sunmuştur.DataBase Form Wizard'ı kullanarak veri tabanınızı hazırlayabilirsiniz.Şimdi adım adım Wizard kullanararak Tablomuzu oluşturalım.

İlk önce Delphi programını çalıştırınız.Bundan sonra File menüsünden New menüsüne tıklayın.Açılan pencerede Business kısmına geçiniz.Burada DataBase Form Wizard'ı seçip Ok tuşuna basınız.Karşımıza Database Form Wizard penceresi çıkar.

Bundan sonra ; Eğer tek tablonuz varsa Create a simple Form ' u işaretleyin. Eğer birden fazla tabloyu ilişikli şekilde göstermek istiyorsanız Create a Master / detail Form düğmesini seçin sonra Next tuşuna basınız.çıkan formda kullanılacak tabloyu belirleyeceğiz.Eğer bir DBF dosyası varsa onun bulunduğu dizine giderek seçebilir veya Driver or Alias Name kutusunda DataBase Explorer ile düzenlenmiş veri tabanından biri seçilebilir.Biz Örnek olarak Borland Shared / Data dizinindeki animals.dbf'yi seçeceğiz.

animals.dbf seçildikten sonra Next tuşuna basınız. Çıkan pencerede >> tuşuna basarak bütün alanları seçeceğiz.Alanları seçtikten sonra Next tuşuna basın.Çıkan pencerede alanları yatay ( horizantal),düşey ( Vertically ) veya in a Grid şeklinde mi sıralanacağını belirleyip Next tuşuna tıklayınız.En son çıkan pencerede Finish tuşuna basınız.Böylece tablomuzu otomatik olarak oluşturmuş olduk.

Veritabanı Bileşenleri


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 DataBase Name ve Table Name'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 Table Name kısmındaki ComboBox'tan animals.dbf' 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şiklendirelim.

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 kontrolleride 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 animals.dbf'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.

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.

DBEdit :DBText ile aynıdır, ek olarak veriler üzerinde değişiklik yapılabilir.Bunlarda Data Source özelliği Data Source1 kısmına ilişiklenir ve DataField özelliğindede ilgili kısım seçilir.

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şin 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.




Ado Connection ile Veri tabanına Bağlantı

 

Merhabalar,
Bu dökümanımda sizelere Delphi ‘ de ADO veri tabanı bileşeni için kullanılan Adoconnection bileşeni ile veri tabanına bağlantı kurmayı anlatmaya çalışacağım.
İlk olarak Formumuza ADO Panalinden Adoconnection ekliyoruz. Daha sonra sıra ile aşağıdaki işlemleri takip ederek ADO ile Access veri tabanına bağlantımızı Oluşturuyoruz

1) Adoconnection Nesnemize çift tıklarız.


Ve karşımıza çıkan bu ekranda Build… butonunu tıklarız



Ve karşımıza çıkan bu tabloda veri tabanımıza ne ile bağlanacaksak seçeneğimizi işaretledikten sonra ileri>> butonunu tıklarız.


Daha sonra karşımıza çokan bu nesnede :
1. Veri kaynağını belirtin bölümünden Bağlantı dizesi kulanı seçip oluştur diyoruz.



Daha sonra karşımıza çıkan bu ekranda ise makine veri kaynağı bölümünden varsa bağlantımızı seçiyoruz (Biz ilk defa oluşturuğumuz için yok kabul ediyoruz) yoksa yeni butonuna tıklıyoruz.



Bu ekranda kullanıcı veri kaynağı işaretli bırakıp devam ediyoruz.


ve beklide en can alıcı nokta diyebileceğimiz yer. Burada veri tabanı tipimizi seçiyoruz ben burada MS Access Driver’ i seçip devam ediyorum ve bundan bir sonraki pencerede driverimi son tuşu ile onaylayıp şu ekrana geliyorum:



Bu ekranda veri kaynağı yazan bölüma kendimiz bir isim tanımlıyoruz. Bu isimin ne olacağı size kalmış. Ve daha sonra SEÇ butonundan veri tabanımızı seçiyoruz ve bu işlemlerden sonra aktif hale gelecek olan tamam butonuna tıklıyoruz.
Ve daha sonra karşımıza çıkan ekranlardan kontrol amaçlı bağlantıyı sına diyoruz



ve bu ekrandaki bağlantı sınamasında olumlu cevap aldıysak, bağlantımızı sorunsuz oluşturmuşuz demektir.
Tabi veritabanına ulaştık, şöyle bir sorun var: Siz veri tabanınıza şifre vermediniz ama siz projenizi her çalıştırdığınızda yada veri tabanınıza bağlandığınızda size şifre soruyor. Bunun için küşük bi işlem yapmanız yeterli olacaktır. Adoconnection nesnemiz seçili iken Delphi>ObjectInspector>Loginprompt>False Konumuna getiriyoruz ve artık hiçbir zaman bize şifre sormayacaktır.

Adoconnection Nesnesinin Faydası
- Table nesnesi yada adoquery nesnesi kullanırken sürekli bağlantı oluşturmak yerine bağlantıyı birkez oluşturup aynı form üzerinde kullanmanıza yara.
- Bu nesneyi datamodule formu içinde oluşturursanız ve bir veri tabanı kullanırsanız veri tabanına bağlantı için başka hiçbir ayar yapmanıza gerek kalmayacaktır.


Soru1: Peki biz Adotable yada Adoquery nesnemizi nasıl bu connectiona bağlayabiliriz?
Cevap: Her bu iki nesneninde ObjecInspector menüsündeki connection sekmesinden bağlantınızın olduğu adoconnection’u seçmeniz yeterli olacaktır.


Soru2: Ben datamodule’ de adoconnectionumu oluşturdum fakat formda adotable nesnemin objectınspector menüsünde connection sekmesine bu datamoduledeki adoconnection nesnesi gelmiyor. Bu neden olabilir?
Cevap: Bunun için bağlantıyı kullanacağız formunuzun en üstündeki uses bölümüne bu datamodulenin uniti eklemeniz yetecektir.

Add document to your blog or website

Similar:

DELPHİDE VERİ TABANI VE FORMLAR iconTemel kavramlar, veri tabanı organizasyonunun amaçları. Veri tabanı sisteminin genel yapısı. Veri modelleri: hiyerarsik, ağ, ilişkisel ve nesneye dayalı veri

DELPHİDE VERİ TABANI VE FORMLAR iconBu ders ile öğrenciye; veri tabanı tasarlamak, oluşturmak, sorgulama yapmak, veri tabanı yönetimsel fonksiyonlarını kullanmak yeterlilikleri kazandırılacaktır

DELPHİDE VERİ TABANI VE FORMLAR iconBu ders ile öğrenciye; veri tabanı tasarlamak, oluşturmak, sorgulama yapmak, veri tabanı yönetimsel fonksiyonlarını kullanmak yeterlilikleri kazandırılacaktır

DELPHİDE VERİ TABANI VE FORMLAR iconBu ders ile öğrenciye; veri tabanı tasarlamak, oluşturmak, sorgulama yapmak, veri tabanı yönetimsel fonksiyonlarını kullanmak yeterlilikleri kazandırılacaktır

DELPHİDE VERİ TABANI VE FORMLAR icon1 Veri tabanı, veri tabanı yönetim sistemleri ile ilgili temel kavramlar ve bileşenleri 2

DELPHİDE VERİ TABANI VE FORMLAR iconVeri, bilgi, veri tabanı kavramlarını kısaca tanımlayınız?

DELPHİDE VERİ TABANI VE FORMLAR iconFiziksel Veri Tabanı Modellemesi Fiziksel Veri Tabanına Giriş

DELPHİDE VERİ TABANI VE FORMLAR iconVERİ TABANI NEDİR?

DELPHİDE VERİ TABANI VE FORMLAR iconBİL455 Veri Tabanı Lab

DELPHİDE VERİ TABANI VE FORMLAR iconVeri Tabanı Kavramı

Sitenizde bu düğmeye yerleştirin:
Belgeleme


The database is protected by copyright ©okulsel.net 2012
mesaj göndermek
Belgeleme
Main page