全國計(jì)算機(jī)等級考試二級Delphi輔導(dǎo)講義 155

字號:

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