Makale dizimizin bu bölümünde Table öğesinin Field altsınıfının özelliklerine değineceğiz. TField Özelliği ile verilere nasıl erişebiliriz ve Field özelliğini Fields Editor ile nasıl değişirebiliriz bu sorulara yanıt arayacağız. Ayrıca FieldsEditor ile tanımlanan TField Öğelerinin DisplayFormat, CustomConstraint, ConstraintErrorMessage, DefaultExpression, DisplayLabel, EditFormat özelliklerine göz atacağız.
Field öğesi tüm veritabanı kontol nesnelerinin bir alt sınıfıdır. Bu nesne ile alanlara kullanıcının DBComponent öğelerini kullanmasını beklemeden direkt olarak erişebiliriz.Veri Alanlarına Erişmek için iki yöntemimiz bulunmak ta. Bunlardan biri kodla sahalara direkt erişimi sağlar.Fields özelliği bir dizi olduğu için her sahaya bir sıra numarası karşılık gelir.Bunlar sıfırdan başlayıp kullanılan tablodaki saha sayısının bir eksiğine kadar tanımlıdır. Aşağıdaki örneğe bakacak olursak:
Table1.fields[0].AsInteger;
Yukarıdaki örnekte table1'in ilk alanına Integer'miş gibi erişebileceğimizi gösterir.Bu bileşenin hangi sırada olduğunu bilmiyorsak:
Table1.fieldbyName('CustNo').AsInteger;
Yukarıdaki örnekteki gibi kullanabiliriz.Bu şekilde sahamızın tablodaki sırası ne olursa olsun sahanın adını vererek o sahaya erişebiliriz.
Aşağıdaki örneğimizde Fields özelliğinin nasıl kullanılacağına değindik. Bu örnekte edit1'e yazılan bir ifade Fields özelliği ile tablonun birinci sahasına iletiliyor.
procedure TForm1.Edit1Enter(Sender: TObject);
begin
table1.edit;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
Table1.ApplyRange;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text<>'' then Table1.Fields[0].AsInteger:=strtoint(Edit1.text)
else
Table1.Fields[0].AsInteger:=0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then key:=#0;
end;
begin
table1.edit;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
Table1.ApplyRange;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text<>'' then Table1.Fields[0].AsInteger:=strtoint(Edit1.text)
else
Table1.Fields[0].AsInteger:=0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then key:=#0;
end;
Burada yabancı olunan edit ve ApplyRange yordamlarıdır. Edit üzerinde bulunulan kayıdı düzenlemeizi sağlayan bir yordamdır. ApplyRange ise Bu değişikliği uygulayan yordamdır.
Alternatif olarak Table nesnesinin fields editor seçeneğini kullanarak da verilere erişebiliriz. Bunun için Table nesnesinin üzerini çift tıklamalıyız Karşımıza yandaki gibi bir menü çıkacak. Bu menüyü sağ tıkladığımızda iseAdd Fields, New Field, Add All Fields adında üç adet komut göreceksiniz. Bu komutlardan Add All Fields; tabloda var olan tüm sahaları FieldsEditör ekranına ekler. Add Fields komutu ise; tıklandığında; açılan ekrandan mümkün olan sahalardan birini ekleyebilir. New Field Özelliğine ise daha sonra değinilecektir.Sahalar eklendikten sonra otomatik olarak kullanılan nesne ile o sahanın isminin bileşkesi olarak isimlendirilir. Yani eğer table1 nesnesini kullanarak CustNo sahasın eklemiş iseniz; eklenen alanın adı Table1CustNo olacaktır.
Eklenen her Fields sahasının object inspectorda yayınlanmış bir kaç özelliği vardır. Eklenene sahanın özelliklerini değiştirmek için Fields Editorden değiştireceğiniz sahayı seçip Object Inspectorda özelliklerinin görüntülenmesini sağlamalısınız.
TField Öğesinin Özellikleri:
DisplayFormat:Display format özelliği sahanın tipine göre değişiklik gösterir.Bunlar NumericField ve DateTimeField tipleridir.
NumericField:Numeric Field tipine sahip olan bir Field öğesinin Display Format özelliği sayısal sahaların veri girişine müsait olan DBComponent öğelerinde nasıl görüntüleneceğini belirler. Display format özelliği çeşitli özel tanımlama karakterleri içeren bir string değişkendir.Bu değişkende bulunabilecek olan özel karakterler ve anlamları aşağıdaki tabloda verilmiştir.
Biçimlendirme Karakterleri
|
Kullanım Şekli
|
0
|
Hane tutucu. Sahada bulunan sayısal verilerin hanesel gösterimini sağlar. Eğer tanımlanan "0" kadar sayı yoksa eşleşmeyen sayı miktarı kadar 0 atanır.
|
#
|
Hane tutucu. Sahada bulunan sayısal verilerin hanesel gösterimini sağlar. Eğer tanımlanan "#" kadar sayı yoksa eşleşmeyen sayı miktarı kadar boşluk atanır.
|
.
|
Ondalık sayı ayıracı. Biçim katarındaki ilk nokta karakteri ondalık sayı ayıracının yerini gösterir. Diğeer nokta karakterleri yoksayılır. Aktüel karakter ondalık sayı ayıracı olarak kullanılır. Bu Windows'un kontrol panelindeki ülke ayarlarında tanımlı olan ondalık ayıracı olur.
|
,
|
Binler basamağı ayıracı. Eğer biçim katarı bir yada birden çok virgül işareti taşıyorsa çıktı basamaklar halinde görüntülenecek demektir Virgül karakterinin yeri ve sayısı binler basamağının ayrılma yöntemini değiştirmez. Windows'un kontrol panelindeki ülke ayarlarında tanımlı olan binlik ayıracı çıktıda kullanılır.
|
E+
|
Bilimsel İşaretleme.Eğer biçim katarında "E+","E-","e+","e-"katarlarından herhangi birini içeriyorsa,sayı bilimsel işaretleme kullanılarak biçimlendirilir. 4'den fazla 0 karakteri tanımlayan üstün içinde minimum hane sayısını tespit etmek için "E+","E-","e+","e-" kullanılır. "E+" ve "e+" biçimleri pozitif üstler için çıktıda bir artı işaretinin , negatif üstler içinse bir eksi işaretinin görüntülenmesini sağlar. "E-" ve "e-" biçimleri sadece üst negatif olduğunda bir eksi işaretinin görüntülenmesini sağlar.
|
'xx' ve "xx"
|
Tekli yada çiftli tırnakla çevrilen karakterler olduğu gibi görüntülenir. Bu karakterlerin biçimlemeye hiç bir etkisi yoktur.
|
;
|
Biçim katarı içinde bulunan pozitif negatif ve sıfır değerleri için ayrı ayrı tanımlanan biçimleri birbirinden ayırmak için kullanılır
|
soldaki "0"'ların yeri biçim katarında ondalık noktadan önce ve sağdaki "0"'ların yeri biçim katarında ondalık noktadan sonra her zaman çıktı katarında bulunan hanelerin dağılımı belirlenir.
Biçimlendirilen sayıların ondalık kesimleri eğer beirlenen biçime uymuyorlarsa beilrnene biçim doğrultusunda yuvarlanır. Ondalık sayı ayıracının sağ tarafında "0" yada "#" karakterlerinden hiç biri yoksa değer en yakın doğal sayıya tamamlanır.
Eğer biçimlendirilen sayının ondalık sayı ayıracının solunda hane yer tutucularının miktarından (# ve 0) daha fazla hanesi varsa ekstra haneler ilk hane yer tutucudan önce görüntülenir.Aşağıdaki tabloda bu formatların kullanımına birer örnek verilmiştir.
Biçim
|
Sayı
|
Çıktı
|
Açıklama
|
#.##
|
312.2
|
312.2
|
Ondalık sayının sağındaki ekstra haneler biçim karakterinden önce gösteriliyor
|
#.00
|
2.5
|
2.50
|
Saha her zaman iki ondalık hane gösterir. Bu yüzden ekstra bir sıfır konulur.
|
00.##
|
.006
|
00.01
|
ondalık ayıracının solundaki boş kalan sahalar "0" ile doldurulur ve üç haneli olan sayı en yakın iki haneli sayıya yuvarlanır.
|
Pozitif negatif ve sıfır değerlerine faklı biçimler oluşturmak için biçim katarı birden üçe kadar noktalı virgülle ayrılmış değerler içermelidir.
Eğer biçim katarında bir bölüm var ise:Tüm değerler aynı şekilde biçimlendirilir.
İki Bölüm var ise:İlk bölüm pozitif ve sıfır değeri için biçimlendirilir. İkinci bölüm ise negatif değerleri için biçimlendirilir.
Eğer üç bölüm var ise: İlk bölüm pozitif değerler için, ikinci bölüm sıfır değeri için,üçüncü bölüm ise negatif değerler için biçimlendirilir.
Eğer sıfır yada negatif değerler için oluşturulan bölümler boş ise yada noktalı virgül ile sonlandırılmamışlarsa pozitif değerler için kullanılan biçim geçerlidir.
Eğer pozitif değerler için geçerli olan bölüm boşsa değer; genel kayan noktalı sayılar biçimi kullanılarak 15 işaretli hane ile gösterilir.Genel kayan noktalı biçimi ondalık ayıracının solunda 18'den fazla hane kullanabilir. Biçim katarı bilimsel işaretleme tanımlayamaz.
Not: DisplayFormat özelliği sadece sahaların veri gösterimini tanımlamak için kullanılır. Bu AsString özelliği kullanılan bir sayısal saha katarının geçerliliğine etkimez.
DateTimeField:DateTimeField tipine sahip olan bir Field öğesinin Display Format özelliği tarih sahaların veri girişine müsait olan DBComponent öğelerinde nasıl görüntüleneceğini belirler. Display format özelliği çeşitli özel tanımlama karakterleri içeren bir string değişkendir.Bu değişkende bulunabilecek olan özel karakterler ve anlamları aşağıdaki tabloda verilmiştir.
Eğer DisplayFormat'a bir katar atanmamışsa değer Windows'un kontrol panelinde tanımlanan varsayılan değerlere göre biçimlendirilir.
Biçimlendirme Karakterleri
|
Kullanım Şekli
|
c
|
Tarih ShortDateFormat genel değişkeni tarafından verilen biçimi kullanır, LongDateFormat genel değişkeni tarafından verilen biçimi izler. Eğer kesirli değeri sıfırsa zaman gösterilmez
|
d
|
Gün; başında sıfır olmayan bir sayı olarak tanımlanır.(1-31)
|
dd
|
Gün; başında sıfır olabilen bir sayı olarak tanımlanır.(01-31)
|
ddd
|
Gün ShortDayNames genel değişkeni tarafından verilen bir kısalma olarak tanımlanır.(Sun-Sat) Bu kısaltma windowsun genel ayarlarına göre değişir.
|
dddd
|
Gün LongDayNames genel değişkeni tarafından verilen bir değer olarak tanımlanır. (Sunday-Saturday) Bu değerler Windows'un genel ayarlarına göre değişir.
|
ddddd
|
ShortDateFormat değişkeni tarafından verilen biçimi kullanır.
|
dddddd
|
LongDateFormat değişkeni tarafından verilen biçimi kullanır.
|
m
|
Ay;başında sıfır olmayan bir sayı olarak tanımlanır.(1-12)
|
mm
|
Ay;başında sıfır olabilen bir sayı olarak tanımlanır.(01-12)
|
mmm
|
Ay;ShortMonthNames genel değişkeni tarafından verilen bir kısalma olarak tanımlanır.(Jan-Dec) Bu kısaltma windowsun genel ayarlarına göre değişir.
|
mmmm
|
Ay; LongMonthNames genel değişkeni tarafından verilen bir değer olarak tanımlanır. (January-December) Bu değerler Windows'un genel ayarlarına göre değişir.
|
yy
|
Yıl iki haneli sayı olarak tanımlanır(00-99)
|
yyyy
|
Yıl dört haneli sayı olarak tanımlanır(0000-9999)
|
h
|
Saat; başında sıfır olmayan bir sayı olarak tanımlanır.(0-23)
|
hh
|
Saat; başında sıfır olabilen bir sayı olarak tanımlanır.(00-23)
|
n
|
Dakika; başında sıfır olmayan bir sayı olarak tanımlanır.(0-59)
|
nn
|
Dakika; başında sıfır olabilen bir sayı olarak tanımlanır.(00-59)
|
s
|
Saniye; başında sıfır olmayan bir sayı olarak tanımlanır.(0-59)
|
ss
|
Saniye; başında sıfır olabilen bir sayı olarak tanımlanır.(00-59)
|
t
|
Zaman;ShortTimeFormat genel değişkeni tarafından verilen bir değer olarak tanımlanır.
|
tt
|
Zaman;LongTimeFormat genel değişkeni tarafından verilen bir değer olarak tanımlanır.
|
/
|
Tarih ayıracı
|
:
|
saat ayıracı
|
'xx' ve "xx"
|
Tekli yada çiftli tırnakla çevrilen karakterler olduğu gibi görüntülenir. Bu karakterlerin biçimlemeye hiç bir etkisi yoktur.
|
Biçim tanımlayıcıları istenilen şekilde yazılabilir.Büyük yada küçük harf kullanılması sonucu değiştirmez.
Eğer Biçim parametresi boşsa değerler c formatı verilmiş gibi biçimlendirilirler.
CustomConstaint:Sahanın değerinde herhangi bir uygulama tanımlı sınırı SQL tanımlamaları ile tanımlar.
CustomConstraint sahalara girilecek olan değerlerin sınırlarını belirler. Bu geçerli bir SQL string'i olmalıdır.Fakat bu sorgu bir tabloya değilde bir Field öğesine yaılacağı için where select vb. terimler dışında AND NOT OR IS <>= gibi terimler kullanılarak tanımlanırlar.Örnek vermek gerekirse Custno sahasının boş ve 1000 den küçük olammasını istiyorsak şu şekilde bir tanımlama yapabiliriz:
(CustNo IS NOT NULL) and (value>1000)
ConstaintErrorMessage: CustomConstaint sahası tanımlandığında eğer yanlış bir giriş yapılmışsa ConstaintErrorMessage sahasındaki hata görüntülenir aynı zamanda bir istisna oluşur. Eğer sahaya yanlış girilen bir verinin neden yanlış olduğunu kullanıcıya anlatmak istiyorsanız ConstaintErrorMessage sahasını boş bırakmamalısınız.
DefaultExpression:Eğer bir sahaya varsayılan bir değer vermek istiyorsanız bu özelliği kullanmalısınız.Eğer sahanız boş geçilmemesi gereken bir saha ise yada atadığınız değer bu saha için çok kullanılan bir değerse bu özelliği kullanmak veritabanına girişlerinizde büyük bir hız sağlayacaktır.Bu özelliğe vereceğiniz değerler aşağıdaki gibi tırnak işareti içinde olmalıdır.
'12:00:00'
DisplayLabel:Bir tablodan bir saha eklediğinizde ve bunu bir grid ile göstermek istediğinizde tanımlanan sahanın etiketi tabloda tanımlanmış adı ile geçerli olacaktır. Bu ise insanı rahatsız eden bir görüntüdür. Çünkü eğer bir sahaya XyDF gibi bir ad verdiyseniz bu sahanın ne işe yarayacağını çözmek bir hayli zor olacaktır. Bunun için DisplayLabel özelliğini kullanarak bu tabloya bağlanılan, tüm etiket gösterme özelliğine sahip olan kontrollerin saha etiketleri, tanımladığıınz bu özellik olacaktır.
EditFormat: Edit format özelliği bir sayısal sahanın düzenlenirken değerin nasıl biçimlendirileceğini tanımlarEdit format özelliği çeşitli özel tanımlama karakterleri içeren bir string değişkendir.Bu değişkende bulunabilecek olan özel karakterler ve anlamları aşağıdaki tabloda verilmiştir.
Biçimlendirme Karakterleri
|
Kullanım Şekli
|
0
|
Hane tutucu. Sahada bulunan sayısal verilerin hanesel gösterimini sağlar. Eğer tanımlanan "0" kadar sayı yoksa eşleşmeyen sayı miktarı kadar 0 atanır.
|
#
|
Hane tutucu. Sahada bulunan sayısal verilerin hanesel gösterimini sağlar. Eğer tanımlanan "#" kadar sayı yoksa eşleşmeyen sayı miktarı kadar boşluk atanır.
|
.
|
Ondalık sayı ayıracı. Biçim katarındaki ilk nokta karakteri ondalık sayı ayıracının yerini gösterir. Diğeer nokta karakterleri yoksayılır. Aktüel karakter ondalık sayı ayıracı olarak kullanılır. Bu Windows'un kontrol panelindeki ülke ayarlarında tanımlı olan ondalık ayıracı olur.
|
,
|
Binler basamağı ayıracı. Eğer biçim katarı bir yada birden çok virgül işareti taşıyorsa çıktı basamaklar halinde görüntülenecek demektir Virgül karakterinin yeri ve sayısı binler basamağının ayrılma yöntemini değiştirmez. Windows'un kontrol panelindeki ülke ayarlarında tanımlı olan binlik ayıracı çıktıda kullanılır.
|
E+
|
Bilimsel İşaretleme.Eğer biçim katarında "E+","E-","e+","e-"katarlarından herhangi birini içeriyorsa,sayı bilimsel işaretleme kullanılarak biçimlendirilir. 4'den fazla 0 karakteri tanımlayan üstün içinde minimum hane sayısını tespit etmek için "E+","E-","e+","e-" kullanılır. "E+" ve "e+" biçimleri pozitif üstler için çıktıda bir artı işaretinin , negatif üstler içinse bir eksi işaretinin görüntülenmesini sağlar. "E-" ve "e-" biçimleri sadece üst negatif olduğunda bir eksi işaretinin görüntülenmesini sağlar.
|
'xx' ve "xx"
|
Tekli yada çiftli tırnakla çevrilen karakterler olduğu gibi görüntülenir. Bu karakterlerin biçimlemeye hiç bir etkisi yoktur.
|
;
|
Biçim katarı içinde bulunan pozitif negatif ve sıfır değerleri için ayrı ayrı tanımlanan biçimleri birbirinden ayırmak için kullanılır
|
Pozitif negatif ve sıfır değerlerine faklı biçimler oluşturmak için biçim katarı birden üçe kadar noktalı virgülle ayrılmış değerler içermelidir.
Eğer biçim katarında bir bölüm var ise:Tüm değerler aynı şekilde biçimlendirilir.
İki Bölüm var ise:İlk bölüm pozitif ve sıfır değeri için biçimlendirilir. İkinci bölüm ise negatif değerleri için biçimlendirilir.
Eğer üç bölüm var ise: İlk bölüm pozitif değerler için, ikinci bölüm sıfır değeri için,üçüncü bölüm ise negatif değerler için biçimlendirilir.
Eğer sıfır yada negatif değerler için oluşturulan bölümler boş ise yada noktalı virgül ile sonlandırılmamışlarsa pozitif değerler için kullanılan biçim geçerlidir.
Eğer pozitif değerler için geçerli olan bölüm boşsa değer; genel kayan noktalı sayılar biçimi kullanılarak 15 işaretli hane ile gösterilir.Genel kayan noktalı biçimi ondalık ayıracının solunda 18'den fazla hane kullanabilir. Biçim katarı bilimsel işaretleme tanımlayamaz.
Not: EditFormat özelliği sadece sahaların düzenlenirken nasıl görüneceğini tanımlamak için kullanılır. Bu AsString özelliği kullanılan bir sayısal saha katarının geçerliliğine etkimez.