圖在CustomerFrom1窗體中放置三個(gè)部件
14.1.2 設(shè)置部件的屬性
為了使TDBGrid部件能夠顯示數(shù)據(jù)庫表Customer.DB中的客戶信息,我們必須修改窗體三個(gè)部件相關(guān)的屬性,這些屬性的設(shè)置如表14.1所示。
表14.1 CustomerFrom1窗體中三個(gè)部件的屬性設(shè)置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
屬 性 屬 性 值
──────────────────────────────
DataSource1.AutoEdit False
DataSource1.DataSet Table1
Table1.DatabaseName DBDEMOS
Table1.TableName CUSTOMER.DB
Table1.Active True
DBGrid1.DataSource DataSource1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
這里要注意的是:DBDEMOS是Delphi缺省安裝時(shí)C:\Delphi\DEMO\DB\MASTAPP目錄的別名,而且數(shù)據(jù)庫表Customer.DB存在該目錄下,用戶在使用這一例子時(shí),請注意這兩項(xiàng)設(shè)置都是正確的。另外 Datasource1.Dataset,Table1.TableName和DBGrid1.Datasource屬性都有下拉式列表框允許用戶從可能的值列表中選擇它們的值,這樣能方便我們進(jìn)行屬性的設(shè)置,而且不容易出錯(cuò)。
Datasouuce1.AutoEdit屬性設(shè)置為False是為了防止用戶修改數(shù)據(jù)庫表中的數(shù)據(jù),在下面的討論中我們將詳細(xì)地進(jìn)行說明。
Table1.Active設(shè)置為True時(shí),Delphi會(huì)打開Table1.TableName所指定的數(shù)據(jù)庫表。如果這個(gè)數(shù)據(jù)庫表不存在(或表中什么也沒有,即空表), Delphi 會(huì)彈出出錯(cuò)信息并且Table1.Active變成False。當(dāng)Table1.Active被設(shè)置成True之后,Table1 部件的一些屬性就不能再修改了,如Table1.DatabaseName和Table1.Tablename屬性。若要修改它們,必須首先要將Table1.Active屬性設(shè)置為False,然后再進(jìn)行修改,否則,Delphi會(huì)彈出錯(cuò)誤信息“Cannot perform this operation on an open database”。當(dāng)看到這個(gè)錯(cuò)誤信息時(shí),只需把Table1.Active置成False,完成相關(guān)的修改后,再把 Table1. Active 屬性設(shè)置為True。
當(dāng)我們把DBGrid1.DataSource的值設(shè)置成DataSource1時(shí),Delphi會(huì)把Customer.DB中的數(shù)據(jù)填充到DBGrid1部件中,并且可以用DBGrid1中的滾動(dòng)條來瀏覽數(shù)據(jù)庫表中的所有記錄。
14.1.3 運(yùn)行程序
保存文件,命名代碼單元為Cust.pas,命名工程名為CustPRJ.DPR,然后按F9編譯并運(yùn)行程序。程序執(zhí)行之后,我們可以使用滾動(dòng)條或鍵盤移動(dòng)鍵在字段和記錄間移動(dòng)。但不能修改表中的數(shù)據(jù),因?yàn)镈atasouc1.AutoEdit1屬性已被設(shè)置為False。
Cust程序中的三個(gè)部件都有各自的特殊用途,三個(gè)部件的相關(guān)屬性在內(nèi)部相互聯(lián)系生成最終的應(yīng)用程序。TTable部件連接磁盤上的實(shí)際數(shù)據(jù)庫表和應(yīng)用程序中其他部件的通道。TTable部件具有打開和關(guān)閉、讀取、更新以及其他處理磁盤數(shù)據(jù)庫文件的方法。
TDatasource部件是連接TTable部件和數(shù)據(jù)瀏覽部件如TDBGrid部件的橋梁。 TDBGrid部件用于顯示數(shù)據(jù)庫表中的數(shù)據(jù)信息,它為應(yīng)用程序提供一個(gè)直觀的界面。圖14.2闡述了這三個(gè)部件之間的關(guān)系。
Cust程序中三個(gè)部件之間的內(nèi)部關(guān)系
TDBGrid 部件的奇妙之處在于它知道如何去獲取數(shù)據(jù)庫表中的下一條或前一條記錄,我們使用滾動(dòng)條或箭頭鍵便可以完成這項(xiàng)任務(wù)。TDBGrid部件不知道如何增加、刪除和修改記錄。如果想讓 Cust 程序能夠修改數(shù)據(jù)庫表中的記錄,只要把 Datasource1 部件的AutoEdit屬性設(shè)置成True ,并重新編譯和運(yùn)行程序就可以達(dá)到目的。 使用箭頭鍵, 把DBGrid的高亮度條定位到某一個(gè)字段上,然后鍵入新值,該字段中的值將被鍵入的新值所取代,并且當(dāng)移動(dòng)到另一條記錄時(shí),健入的信息會(huì)自動(dòng)寫入數(shù)據(jù)庫表中。如果想放棄所做的改動(dòng),只需在離開該字段前按一下Escape鍵。
如果想在表中增加新記錄,可以把高亮度條移到網(wǎng)格底端的空白記錄上并輸入新記錄的有關(guān)字段值。也可以在用戶指定的某一條記錄的后面插入一條新記錄,只要把高亮度條定位到指定的記錄上,按Ins鍵,使可以在該記錄的后面插入新記錄。
刪除某一條記錄時(shí),把高亮度條定位在想刪除的記錄的任何字段上,按Ctrl+ del鍵,這時(shí)會(huì)出現(xiàn)保護(hù)信息,我們可以確認(rèn)是否真的想刪除該項(xiàng)記錄。
TDBGrid為用戶提供了較完備的功能,用于控制是否編輯、增加或刪除記錄。若想禁止對數(shù)據(jù)庫表作任何修改,設(shè)置TDBGrid部件的Readonly屬性為 True , 并設(shè)置 Option.dgEDiting為False(這將為我們提供一個(gè)只讀的數(shù)據(jù)庫表瀏覽器而不是數(shù)據(jù)庫編輯器,但它隱含著增加、編輯和刪除記錄的能力)。TDBGrid部件的這些屬性和Option屬性其它選項(xiàng)的各種不同組合可以讓我們很方便地對數(shù)據(jù)庫表進(jìn)行有效的瀏覽、編輯等操作。
如果我們經(jīng)常使用像電子表格那樣的界面來顯示和編輯數(shù)據(jù)記錄,TDBGrid 部件便是一個(gè)很方便的工具,但那并不是最友好的用戶界面,如果想擁有更優(yōu)美更直觀的界面,我們還可以使用單獨(dú)的數(shù)據(jù)瀏覽部件來顯示數(shù)據(jù)庫表中各個(gè)字段的值,并利用TDBNavigator部件控制對數(shù)據(jù)庫表的存取。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |