16.1 數(shù)據(jù)瀏覽部件的基本特性
大多數(shù)的數(shù)據(jù)瀏覽部件是從標(biāo)準(zhǔn)部件中演變過來的,它們具有一些相似的特性,如TDBGrid部件和TStringGrid部件,TDBEdit和TEdit部件,TDBListBox和TListBox等等,只是數(shù)據(jù)瀏覽部件是專門用于顯示和編輯數(shù)據(jù)庫中記錄的字段信息而已。它們的使用方法以及屬性有很大的不同。在程序設(shè)計階段,當(dāng)數(shù)據(jù)瀏覽部件通過TDatasource部件和TTable部件連接到一個物理數(shù)據(jù)庫時,便可在其中觀看到數(shù)據(jù)庫中的數(shù)據(jù)信息,也就是說在程序設(shè)計階段便可以看到應(yīng)用程序運行之后的效果,這種特性給我們修改應(yīng)用程序帶來了方便。
數(shù)據(jù)瀏覽部件是通過TDatasource部件連接到TTable部件中具體的字段部件的,因而數(shù)據(jù)控制部件具有一些共同的屬性,用于連接TDatasource部件和TField部件。
Datasource屬性:說明數(shù)據(jù)瀏覽部件連接的數(shù)據(jù)源部件TDatasource,數(shù)據(jù)瀏覽部件是從TDatasource部件中獲取數(shù)據(jù)的。
DataField屬性:說明數(shù)據(jù)瀏覽部件對應(yīng)數(shù)據(jù)庫表中實際的字段名稱。該屬性的值其實是TDataSource連接的數(shù)據(jù)集部件TTable或TQuery部件中的字段部件的名字。
因此要創(chuàng)建一個應(yīng)用程序顯示和編輯數(shù)據(jù)庫表中的記錄,一般要在應(yīng)用窗體中放置一個數(shù)據(jù)集部件(TTable部件或TQuery部件)和至少一個數(shù)據(jù)源部件TDataSource部件以及多個數(shù)據(jù)瀏覽部件。其創(chuàng)建的一般步驟如下:
1.在窗體中放置上述所說的部件并連接數(shù)據(jù)集部件、數(shù)據(jù)源部件。
2.為各數(shù)據(jù)瀏覽部件設(shè)置DataSource屬性值為窗休中存在的TDataSource部件的名字。
3.設(shè)置各數(shù)據(jù)瀏覽部件的DataField屬性為數(shù)據(jù)集部件TTable或TQuery部件中存在的字段部件的名字。
在這里需要注意的是:TDBGrid部件和TDBNavigator部件是自動地訪問數(shù)據(jù)集部件中所有可以訪問的字段部件的,因此它們是沒有DataField屬性的,對于這些部件可以跳過第3步。
Enabled屬性:當(dāng)數(shù)據(jù)瀏覽部件連接到數(shù)據(jù)集部件時,它的Enabled屬性決定了數(shù)據(jù)瀏覽部件能否接受來自鼠標(biāo)、鍵盤和定時器事件的消息。當(dāng)Enabled屬性值為False時,數(shù)據(jù)瀏覽部件將變?yōu)闊o效而不能接受外界的信息。當(dāng)與數(shù)據(jù)瀏覽部件相連的TDataSource部件的Enabled屬性為False時或與數(shù)據(jù)源部件TDataSource部件相連的數(shù)據(jù)集部件TTable或TQuery部件的Active屬性為False時,數(shù)據(jù)瀏覽部件也會隨之而變?yōu)闊o效。
ReadOnly屬性:大多數(shù)的數(shù)據(jù)瀏覽部件能夠用來編輯修改與之對應(yīng)的字段,因而有ReadOnly屬性,該屬性用來控制是否可以在數(shù)據(jù)瀏覽中編輯修改字段的值。缺省情況下,該屬性的值為False,也就是說用戶可以在其中編輯修改字段的值。
當(dāng)然用戶要想通過數(shù)據(jù)瀏覽部件編輯修改數(shù)據(jù)庫表中的記錄字段時,還要受到其它因素的制約。除了數(shù)據(jù)瀏覽部件本身的ReadOnly屬性設(shè)置為False外,還要設(shè)置其相應(yīng)的字段部件和數(shù)據(jù)集部件的CanModify屬性True性;設(shè)置TDataSource部件的AutoEdit屬性為True,如果數(shù)據(jù)庫表是SQL數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫表,用戶必須要具有讀寫數(shù)據(jù)庫的權(quán)限等。當(dāng)然在實際的程序設(shè)計過程中并沒有這樣繁瑣,因為很多屬性的缺省值都是允許用戶修改表中的記錄的。
除了TDBGrid部件之外,如果通過一個數(shù)據(jù)瀏覽部件修改字段值,那么當(dāng)光標(biāo)(或焦點)離開數(shù)據(jù)瀏覽部件時,數(shù)據(jù)瀏覽部件中被修改的值就會自動地被寫回到磁盤數(shù)據(jù)庫中。若在焦點沒有離開數(shù)據(jù)瀏覽部件之前,按ESC鍵,那么Delphi會自動地放棄其對字段值的修改。在TDBGrid部件中修改表中的記錄時,只有當(dāng)焦點離開當(dāng)前的記錄時,即記錄指針移到其他記錄上時,用戶對當(dāng)前記錄的修改會被寫回磁盤上的數(shù)據(jù)庫表,在焦點沒有離開當(dāng)前記錄時,按ESC鍵,Delphi會自動放棄對當(dāng)前記錄的修改。
相關(guān)推薦:2010年9月計算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |