?? 038.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第十五章 數據訪問部件的應用及編程(三)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第十五章 數據訪問部件的應用及編程(三)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第十五章 數據訪問部件的應用及編程(三)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="039.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="037.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第十五章 數據訪問部件的應用及編程(三)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p>15.6.1 字段部件 </p>
<p>字段部件在應用程序中始終是不可見的部件。在程序運行過程中是如此,在程序設計階段也是如此,但是它在應用中起著非常重要的作用,可以說它是所有數據瀏覽部件從數據庫表中顯示、編輯數據的基礎。這是因為字段部件直接對應著數據庫表中的字段,瀏覽和修改表中的數據必須要通過字段部件,同時字段部件所擁有的屬性可以用來說明數據庫表中對應的字段的數據類型、當前的字段值、顯示格式、編輯格式等,字段部件的事件如OnValidate可以用來設定輸入字段值時進行有效性檢驗。</p>
<p>數據庫表的每一列在應用程序中都有其對應的一個字段部件,在缺省情況下,當TTable或TQuery的Active屬性被置為False或調用close方法時,與表中各列對應的字段部件也隨即消失,要想為應用程序創建永久性的字段部件,我們必須要在程序設計階段使用字段編輯器(Fields
Editor)來創建。使用字段編輯器創建永久性字段的好處是:我們在程序代碼中利用永久性字段部件可以更加有效、方便、可靠地訪問數據庫表中記錄的各字段值,
在任何時候我們都可以以同樣的字段順序、固定的字段顯示表中的記錄,即使數據庫表的結構已發生了變化。當然如果在數據庫表中與字段部件對應的字段已經不存在時,應用程序就不能正常地執行下去了,Delphi會彈出一個錯誤信息框,告訴用戶表中的字段已經不存在了。 </p>
<p>15.6.1.1 字段部件的屬性及應用 </p>
<p>字段部件具有很多的屬性,通過設置字段部件有關的屬性,可以控制字段對象在數據瀏覽部件中的顯示方式、字段值能否被修改等。特別是對于用字段編輯器創建的永久性的字段部件,我們在程序設計階段便可以在Object
Inspector中方便地選取字段部件, 進行有關屬性的設置。</p>
<p>字段部件的主要屬性如表15.6所示,該表中列出的屬性只是字段部件的部分屬性,它主要用來控制字段對象的顯示方式。 </p>
<p>表15.6 字段部件的主要屬性</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>屬性名 功 能</p>
<p>───────────────────────────────</p>
<p>Alignment 說明字段值在數據瀏覽部件中顯示時的對齊方式:</p>
<p>左對齊、右對齊、居中三種方式。</p>
<p>───────────────────────────────</p>
<p>Calculated 說明字段是否是計算字段,屬性值為True時,該</p>
<p>字段是計算字段、字段值可以根據表中其它字段</p>
<p>的值計算得出。</p>
<p>───────────────────────────────</p>
<p>Currency 等于true時,以貨幣格式顯示數值,等于False時,</p>
<p>不以貨幣格式顯示數值型數據。</p>
<p>───────────────────────────────</p>
<p>DisplayFormat 用于說明字段值在數據瀏覽部件中的顯示格式</p>
<p>───────────────────────────────</p>
<p>DisplayLabel 字段在網格(TDBGrid部件)中顯示時,為字段指定</p>
<p>顯示標題。</p>
<p>───────────────────────────────</p>
<p>DisplayNidth 字段在網格(TDBGrid部件)中顯示時,為字段指定</p>
<p>顯示寬度,單位是字符數。</p>
<p>───────────────────────────────</p>
<p>EditFormat 說明字段在數據瀏覽部件中的編輯輸入格式</p>
<p>───────────────────────────────</p>
<p>EditMask 在進行字段值的編輯輸入時,限定輸入字段值的</p>
<p>過濾條件(即字段值的范圍)。</p>
<p>───────────────────────────────
</p>
<p>FieldName 該字段部件對應實際數據庫表中的字段的名字</p>
<p>───────────────────────────────</p>
<p>Index 該字段部件在數據集所有字段部件中的順序號</p>
<p>───────────────────────────────</p>
<p>MaxValue 說明可以為該字段輸入最大的數值</p>
<p>───────────────────────────────</p>
<p>MinValue 說明可以為該字段輸入最小的數值</p>
<p>───────────────────────────────</p>
<p>Name 字段部件的名字</p>
<p>───────────────────────────────</p>
<p>ReadOnly 等于true時,只能讀取該字段的字段值,不能修改;</p>
<p>等于False時,可以對該字段的字段值進行讀寫。</p>
<p>───────────────────────────────</p>
<p>Size 說明字段的大小,單位是字符數</p>
<p>───────────────────────────────</p>
<p>Visible 為True時,該字段可以在TBDBGrid部件中顯示;</p>
<p>為False時,該字段不能在TDBGrid部件中顯示</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </p>
<p>表15.6中的屬性并不是所有類型的字段部件都擁有的,如一個TStringField類型的字段部件是沒有Currency、MaxValue、MinValue和DisplayFormat屬性的,一個TFloatField類型的字段部件是沒有Size屬性的。</p>
<p>對于布爾型屬性,在設計過程中的Object Inspector中雙擊該屬性,該屬性的值將會在True和False之間來回切換,其他屬性需要用戶輸入屬性值或從下拉式列表框中選取屬性值。所有的屬性都可以通過程序代碼進行設置。大多數屬性可以獨立地設置,只有DisplayFormat,EditFormat和EditMask是相互聯系的。在設置它們的屬性值時一定要確保相互協調。</p>
<p>利用EditMask屬性為字段設定編輯模式:</p>
<p>為字段部件設置一定的EditMask屬性值,當編輯輸入該字段的字段值時,用戶只能根據EditMask設定的編輯模式進行編輯或輸入字段值。在為EditMask屬性設置屬性值時可以用手動方式也可以用輸入模式編輯器來完成,當為某字段部件設置EditMask屬性時,雙鼠標雙擊EditMask屬性便可以打開輸入模式編輯器(Input
Mask Editor) 。例如在為Customer.DB表的Phone字段設定編輯模式時,首先在Object
Inspector中選取與Phone字段對應的Table1Phone字段對象,然后雙擊EditMask屬性,打開輸入模式編輯器。 </p>
<p> 字段輸入模式編輯器 </p>
<p>在字段輸入模式編輯中可以選擇一種輸入模式,而且在TestInput編輯框中輸入字段值進行檢驗。</p>
<p>因為TStringField類型的字段部件沒有DisplayFormat屬性,但是可以把EditMask屬性當DisplayFormat屬性使用。</p>
<p>設定字段的顯示和編輯格式:</p>
<p>Delphi本身為某些類型的字段對象提供了設定其顯示和編輯格式的例程,并且為字段部件的DisplayFormat和EditFormat屬性指定了缺省值,例如對于與浮點型數值字段對應的TFloatField類型的字段部件,而且該字段部件的Currency屬性設置為True
時,字段值1234.56的顯示格式為$1234.56,編輯格式是1234.56。表15.7是Delphi提供了設置字段顯示和編輯格式的例程。 </p>
<p>表15.7 字段格式例程</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>例 程 名 運用的字段對象</p>
<p>─────────────────────────────</p>
<p>FormatFloat TFloatField,TCurrencyField</p>
<p>FormatDateTime TDateField,TTimeField,TDateTimeField</p>
<p>FormatInteger TIntegerField,TSmallIntField,TWordField</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </p>
<p>上述這些用于設定日期時間類型、數值型以及貨幣型字段的顯示和編輯格式的例程,都是按國際上通行格式來設定相應類型字段的格式的,用戶可以自己設置字段部件的DisplayFormat和EditFormat屬性,來設定適合自己使用的格式,還可以為有關字段對象的OnGetText和OnSetText事件編寫代碼來設定字段的顯示和編輯格式。</p>
<p> </p>
<p>15.6.1.2 字段部件的事件及應用</p>
<p> </p>
<p>字段部件常需處理的事件如表15.8所示</p>
<p> </p>
<p>表15.8 字段部件的事件</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>事件名 用 途</p>
<p>────────────────────────────</p>
<p>OnChange 當字段部件的字段值發生改變時,觸發該事件</p>
<p>OnGetText 當字段部件獲得字段值時,觸發該事件</p>
<p>OnSetText 當字段部件被設置字段值時,觸發該事件</p>
<p>OnValidata 當字值被修改或插入新的字段值時,對字段值</p>
<p>進行有效性檢驗時,觸發該事件</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p> </p>
<p>用戶想自己設定字段的顯示和編輯格式時,可以編寫OnGetText事件和OnSetText事件的處理過程,以達到設定字段的顯示和編輯格式。</p>
<p> </p>
<p>15.6.1.3 字段部件的類型轉換函數及使用</p>
<p> </p>
<p>字段部件具有一些內部函數用于轉換字段值的類型,對于不同的字段類型,這些轉換函數的作用是不一樣的,表15.9概括了不同類型的字段及轉換函數的作用。</p>
<p> </p>
<p>表15.9 字段部件的轉換函數</p>
<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>
<p>字段類型 AsString AsInteger AsFloat AsDatetime AsBoolean</p>
<p>────────────────────────────────────</p>
<p>TStringField 轉換成 轉換成整數 若能轉換 日期 轉換成布型</p>
<p>Stringg型 (若能轉換) 則轉換成 (若能轉換)</p>
<p>────────────────────────────────────</p>
<p>TIntegerField </p>
<p>TSmallField 字符型 整數型 浮點型 不允許 不允許轉換</p>
<p>TWordField </p>
<p>────────────────────────────────────</p>
<p>TFloatField </p>
<p>TCurrencyField 字符串型 舍入成整數 浮點型 不允許 不允許</p>
<p>TBCDField </p>
<p>────────────────────────────────────
</p>
<p>TDateField </p>
<p>TDateTimeField 字符串 不允許 浮點數 日期型 不允許</p>
<p>TTimeField </p>
<p>────────────────────────────────────
</p>
<p>TBooleanField 轉換成Time 不允許 不允許 不允許 布爾型</p>
<p>或False </p>
<p>────────────────────────────────────
</p>
<p>TBytesField </p>
<p>TVarBytesField 字符串 不允許 不允許 不允許 不允許</p>
<p>TBlobField </p>
<p>────────────────────────────────────</p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -