15.6.1 字段部件
字段部件在應(yīng)用程序中始終是不可見的部件。在程序運行過程中是如此,在程序設(shè)計階段也是如此,但是它在應(yīng)用中起著非常重要的作用,可以說它是所有數(shù)據(jù)瀏覽部件從數(shù)據(jù)庫表中顯示、編輯數(shù)據(jù)的基礎(chǔ)。這是因為字段部件直接對應(yīng)著數(shù)據(jù)庫表中的字段,瀏覽和修改表中的數(shù)據(jù)必須要通過字段部件,同時字段部件所擁有的屬性可以用來說明數(shù)據(jù)庫表中對應(yīng)的字段的數(shù)據(jù)類型、當前的字段值、顯示格式、編輯格式等,字段部件的事件如OnValidate可以用來設(shè)定輸入字段值時進行有效性檢驗。
數(shù)據(jù)庫表的每一列在應(yīng)用程序中都有其對應(yīng)的一個字段部件,在缺省情況下,當TTable或TQuery的Active屬性被置為False或調(diào)用close方法時,與表中各列對應(yīng)的字段部件也隨即消失,要想為應(yīng)用程序創(chuàng)建永久性的字段部件,我們必須要在程序設(shè)計階段使用字段編輯器(Fields Editor)來創(chuàng)建。使用字段編輯器創(chuàng)建永久性字段的好處是:我們在程序代碼中利用永久性字段部件可以更加有效、方便、可靠地訪問數(shù)據(jù)庫表中記錄的各字段值,在任何時候我們都可以以同樣的字段順序、固定的字段顯示表中的記錄,即使數(shù)據(jù)庫表的結(jié)構(gòu)已發(fā)生了變化。當然如果在數(shù)據(jù)庫表中與字段部件對應(yīng)的字段已經(jīng)不存在時,應(yīng)用程序就不能正常地執(zhí)行下去了,Delphi會彈出一個錯誤信息框,告訴用戶表中的字段已經(jīng)不存在了。
15.6.1.1 字段部件的屬性及應(yīng)用
字段部件具有很多的屬性,通過設(shè)置字段部件有關(guān)的屬性,可以控制字段對象在數(shù)據(jù)瀏覽部件中的顯示方式、字段值能否被修改等。特別是對于用字段編輯器創(chuàng)建的永久性的字段部件,我們在程序設(shè)計階段便可以在Object Inspector中方便地選取字段部件, 進行有關(guān)屬性的設(shè)置。
字段部件的主要屬性如表15.6所示,該表中列出的屬性只是字段部件的部分屬性,它主要用來控制字段對象的顯示方式。
表15.6 字段部件的主要屬性
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
屬性名 功 能
───────────────────────────────
Alignment 說明字段值在數(shù)據(jù)瀏覽部件中顯示時的對齊方式:
左對齊、右對齊、居中三種方式。
───────────────────────────────
Calculated 說明字段是否是計算字段,屬性值為True時,該
字段是計算字段、字段值可以根據(jù)表中其它字段
的值計算得出。
───────────────────────────────
Currency 等于true時,以貨幣格式顯示數(shù)值,等于False時,
不以貨幣格式顯示數(shù)值型數(shù)據(jù)。
───────────────────────────────
DisplayFormat 用于說明字段值在數(shù)據(jù)瀏覽部件中的顯示格式
───────────────────────────────
DisplayLabel 字段在網(wǎng)格(TDBGrid部件)中顯示時,為字段指定
顯示標題。
───────────────────────────────
DisplayNidth 字段在網(wǎng)格(TDBGrid部件)中顯示時,為字段指定
顯示寬度,單位是字符數(shù)。
───────────────────────────────
EditFormat 說明字段在數(shù)據(jù)瀏覽部件中的編輯輸入格式
───────────────────────────────
EditMask 在進行字段值的編輯輸入時,限定輸入字段值的
過濾條件(即字段值的范圍)。
───────────────────────────────
FieldName 該字段部件對應(yīng)實際數(shù)據(jù)庫表中的字段的名字
───────────────────────────────
Index 該字段部件在數(shù)據(jù)集所有字段部件中的順序號
───────────────────────────────
MaxValue 說明可以為該字段輸入最大的數(shù)值
───────────────────────────────
MinValue 說明可以為該字段輸入最小的數(shù)值
───────────────────────────────
Name 字段部件的名字
───────────────────────────────
ReadOnly 等于true時,只能讀取該字段的字段值,不能修改;
等于False時,可以對該字段的字段值進行讀寫。
───────────────────────────────
Size 說明字段的大小,單位是字符數(shù)
───────────────────────────────
Visible 為True時,該字段可以在TBDBGrid部件中顯示;
為False時,該字段不能在TDBGrid部件中顯示
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表15.6中的屬性并不是所有類型的字段部件都擁有的,如一個TStringField類型的字段部件是沒有Currency、MaxValue、MinValue和DisplayFormat屬性的,一個TFloatField類型的字段部件是沒有Size屬性的。
對于布爾型屬性,在設(shè)計過程中的Object Inspector中雙擊該屬性,該屬性的值將會在True和False之間來回切換,其他屬性需要用戶輸入屬性值或從下拉式列表框中選取屬性值。所有的屬性都可以通過程序代碼進行設(shè)置。大多數(shù)屬性可以獨立地設(shè)置,只有DisplayFormat,EditFormat和EditMask是相互聯(lián)系的。在設(shè)置它們的屬性值時一定要確保相互協(xié)調(diào)。
利用EditMask屬性為字段設(shè)定編輯模式:
為字段部件設(shè)置一定的EditMask屬性值,當編輯輸入該字段的字段值時,用戶只能根據(jù)EditMask設(shè)定的編輯模式進行編輯或輸入字段值。在為EditMask屬性設(shè)置屬性值時可以用手動方式也可以用輸入模式編輯器來完成,當為某字段部件設(shè)置EditMask屬性時,雙鼠標雙擊EditMask屬性便可以打開輸入模式編輯器(Input Mask Editor) 。例如在為Customer.DB表的Phone字段設(shè)定編輯模式時,首先在Object Inspector中選取與Phone字段對應(yīng)的Table1Phone字段對象,然后雙擊EditMask屬性,打開輸入模式編輯器。
字段輸入模式編輯器
在字段輸入模式編輯中可以選擇一種輸入模式,而且在TestInput編輯框中輸入字段值進行檢驗。
因為TStringField類型的字段部件沒有DisplayFormat屬性,但是可以把EditMask屬性當DisplayFormat屬性使用。
設(shè)定字段的顯示和編輯格式:
Delphi本身為某些類型的字段對象提供了設(shè)定其顯示和編輯格式的例程,并且為字段部件的DisplayFormat和EditFormat屬性指定了缺省值,例如對于與浮點型數(shù)值字段對應(yīng)的TFloatField類型的字段部件,而且該字段部件的Currency屬性設(shè)置為True 時,字段值1234.56的顯示格式為$1234.56,編輯格式是1234.56。表15.7是Delphi提供了設(shè)置字段顯示和編輯格式的例程。
表15.7 字段格式例程
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
例 程 名 運用的字段對象
─────────────────────────────
FormatFloat TFloatField,TCurrencyField
FormatDateTime TDateField,TTimeField,TDateTimeField
FormatInteger TIntegerField,TSmallIntField,TWordField
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
上述這些用于設(shè)定日期時間類型、數(shù)值型以及貨幣型字段的顯示和編輯格式的例程,都是按國際上通行格式來設(shè)定相應(yīng)類型字段的格式的,用戶可以自己設(shè)置字段部件的DisplayFormat和EditFormat屬性,來設(shè)定適合自己使用的格式,還可以為有關(guān)字段對象的OnGetText和OnSetText事件編寫代碼來設(shè)定字段的顯示和編輯格式。
[1] [2] [3] 下一頁
|