數(shù)據(jù)瀏覽組件_第1頁
數(shù)據(jù)瀏覽組件_第2頁
數(shù)據(jù)瀏覽組件_第3頁
數(shù)據(jù)瀏覽組件_第4頁
數(shù)據(jù)瀏覽組件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第7章章數(shù)據(jù)瀏覽組件數(shù)據(jù)瀏覽組件7.1數(shù)據(jù)瀏覽組件概述 大多數(shù)的數(shù)據(jù)瀏覽組件是從標(biāo)準(zhǔn)組件中演變過來的,它們具有一些相似的特性,如DBGrid組件和StringGrid組件,DBEdit和Edit組件,DBListBox和ListBox等等,只是數(shù)據(jù)瀏覽組件是專門用于顯示和編輯數(shù)據(jù)庫中記錄的字段信息而已。大部分的數(shù)據(jù)瀏覽組件都且有數(shù)據(jù)感知能力,所謂數(shù)據(jù)感知能力是指在應(yīng)用程序期間,當(dāng)數(shù)據(jù)瀏覽組件通過TDatasource組件和數(shù)據(jù)集 組件連接到一個數(shù)據(jù)庫時,便可觀看到數(shù)據(jù)庫中的數(shù)據(jù)信息,也就是說在程序設(shè)計(jì)階段便可以看到應(yīng)用程序運(yùn)行之后的效果。 7.1.1 共同的屬性數(shù)據(jù)控制組件具有一些共同的屬性

2、,用于連接的TDatasource組件和TField組件。1Datasource屬性說明數(shù)據(jù)瀏覽組件連接的數(shù)據(jù)源組件TDatasource,數(shù)據(jù)瀏覽組件是從TDatasource組件中獲取數(shù)據(jù)的。2DataField屬性說明數(shù)據(jù)瀏覽組件對應(yīng)數(shù)據(jù)庫表中實(shí)際的字段名稱。該屬性的值其實(shí)是TDataSource連接的數(shù)據(jù)集組件TTable或TQuery組件中的字段組件的名字。 7.1.2 顯示和編輯數(shù)據(jù)的一般步驟顯示和編輯數(shù)據(jù)的一般步驟是:(1)把一個數(shù)據(jù)集放到表單或數(shù)據(jù)模塊上,設(shè)置好其與數(shù)據(jù)庫連接的屬性,如對TTable,DatabaseName屬性指定要訪問的數(shù)據(jù)庫,設(shè)置TableName屬性指定

3、要訪問的表。(2)把一個TDataSoure組件放到表單或數(shù)據(jù)模塊上,設(shè)置好DataSet屬性指定數(shù)據(jù)集。(3)把一個數(shù)據(jù)感知組件(如TDBGrid)放到表單上,設(shè)置DataSource屬性。(4)設(shè)置數(shù)據(jù)感知組件的DataField屬性指定要顯示的字段。有的數(shù)據(jù)感知組件以數(shù)據(jù)庫的一個或幾個字段作為工作內(nèi)容,如TDBText和TDBEdit;而有的數(shù)據(jù)感知組件以整個數(shù)據(jù)集為工作內(nèi)容,如TDBGrid和TDBNavigator。對于后者,不需要設(shè)置DataField屬性。(5)把數(shù)據(jù)集的Active屬性設(shè)為True,馬上就能看到數(shù)據(jù)。 7.1.3 編輯和更新數(shù)據(jù)除了TDBNavigator構(gòu)件外

4、,其他數(shù)據(jù)控件都是用來顯示和編輯數(shù)據(jù)的。這里要介紹怎樣編輯數(shù)據(jù)。要使用戶能編輯數(shù)據(jù),數(shù)據(jù)集必須進(jìn)入dsEdit狀態(tài)。如果TDataSource的AutoEdit屬性設(shè)為False,用戶不能直接編輯數(shù)據(jù),除非程序調(diào)用Edit函數(shù)。要使用戶能夠在數(shù)據(jù)控件中修改數(shù)據(jù),必須把數(shù)據(jù)控件的ReadOnly屬性設(shè)為False。如果ReadOnly屬性設(shè)為True,數(shù)據(jù)控件中顯示的數(shù)據(jù)就是只讀的。一般情況下,TDataSource構(gòu)件的Enabled屬性設(shè)為True。如果這個屬性設(shè)為False,數(shù)據(jù)控件就無法顯示數(shù)據(jù),更不能修改數(shù)據(jù)。如果數(shù)據(jù)集構(gòu)件的ReadOnly屬性設(shè)為True,數(shù)據(jù)集就是只讀的,用戶在數(shù)

5、據(jù)控件中所作的修改不能寫到數(shù)據(jù)集中。除了TDBGrid構(gòu)件外,當(dāng)用戶修改了一個字段的值,還需要把輸入焦點(diǎn)移走,新的數(shù)據(jù)才寫到數(shù)據(jù)集中。在移走輸入焦點(diǎn)之前,用戶隨時可以按ESC鍵取消修改。在TDBGrid構(gòu)件建立的柵格中,當(dāng)用戶修改了一個字段的值,還需要把輸入焦點(diǎn)移到另一條記錄上,新的數(shù)據(jù)才寫到數(shù)據(jù)集中。 7.1.4 禁止和允許數(shù)據(jù)刷新當(dāng)程序正在遍歷整個數(shù)據(jù)集或者搜索一個特定的記錄時,應(yīng)當(dāng)暫時禁止數(shù)據(jù)控件刷新數(shù)據(jù),這樣能加快遍歷或搜索的速度,防止屏幕總是在閃爍。調(diào)用數(shù)據(jù)集的DisableControls可以暫時禁止連接這個數(shù)據(jù)集的數(shù)據(jù)控件刷新數(shù)據(jù)。DisableControls函數(shù)通常在循環(huán)操作

6、前調(diào)用。等循環(huán)結(jié)束后,程序應(yīng)當(dāng)立即調(diào)用數(shù)據(jù)集構(gòu)件的EnableControls函數(shù)重新允許刷新數(shù)據(jù)。為了確保最后總是能恢復(fù)刷新,建議采用Try.Finally結(jié)構(gòu)。這樣,即使在循環(huán)中出現(xiàn)異常,也可以保證總能調(diào)用EnableControls。下 面 的 代 碼 演 示 了 怎 樣 調(diào) 用DisableControls和EnableControls函數(shù):CustTable.DisableControls;TryCustTable.First; While not CustTable.EOF DoBegin.CustTable.Next;End;FinallyCustTable.EnableCont

7、rols;End; 7.2數(shù)據(jù)瀏覽組件數(shù)據(jù)瀏覽組件7.2.1 DBGrid組件DBGrid組件主要用于將數(shù)據(jù)源的信息顯示在網(wǎng)格中,它以行和列組成的柵格顯示數(shù)據(jù)庫中的數(shù)據(jù)。要使其顯示數(shù)據(jù)庫中的數(shù)據(jù),只要設(shè)置好Datasource屬性即可。1 基本屬性DBGrid組件的基本屬性如表7-2所示: 屬性功能Columns設(shè)置網(wǎng)格(DBGrid)中列的特性DataSource指定DataSource組件DefaultDrawing是否顯示網(wǎng)格中單元的內(nèi)容EditorMode是否進(jìn)入編輯狀態(tài)Fields顯示網(wǎng)格中的所有列名FieldCount返回網(wǎng)格中列的總數(shù)Options設(shè)置網(wǎng)格的一些特性ReadOnl

8、y決定網(wǎng)格是否可以修改SelectField返回當(dāng)前所選擇的列(1)ColumnsColumns屬性是用來讀取和設(shè)置網(wǎng)格中列的特性的。它可以在設(shè)計(jì)階段由Columns editor對話框設(shè)定,也可以在應(yīng)用程序運(yùn)行時動態(tài)地設(shè)置。在設(shè)計(jì)階段,如果已經(jīng)建立了TDBGrid 組件與數(shù)據(jù)集的聯(lián)系,并且此數(shù)據(jù)集處于打開狀態(tài),則單擊對象觀察器的Columns屬性框會激活Columns editor對話框。(2)DataSourceDataSource屬性指明了TDBGrid組件的數(shù)據(jù)源。 (3)ReadOnly設(shè)置ReadOnly屬性值為True來防止用戶更改數(shù)據(jù)集中的數(shù)據(jù),設(shè)置ReadOnly屬性值為Fa

9、lse允許用戶使用網(wǎng)格編輯數(shù)據(jù)集中的數(shù)據(jù)。(4)OptionsOptions中包含了一系列規(guī)定TDBGrid顯示和編輯操作屬性的選項(xiàng)。 2 基本事件表7-4列出了TDBGrid組件的主要事件。 事件含義OnCellClick在單擊網(wǎng)格中的單元格時觸發(fā) OnColEnter當(dāng)焦點(diǎn)移動到網(wǎng)格中的另一個單元格時觸發(fā)OnColExit當(dāng)一個單元格即將失去焦點(diǎn)時觸發(fā)OnColumnMoved當(dāng)網(wǎng)格中的一列發(fā)生移動時觸發(fā)OnEditButtonClick在單擊網(wǎng)格中一個字段的編輯按鈕時觸發(fā)OnTitleClick在單擊網(wǎng)格中一個字段的標(biāo)題時觸發(fā)7.2.2 DBNavigator組件DBNavigator的

10、運(yùn)用非常簡單,只要設(shè)置好其DataSource屬性即可。下面例子演示其基本用法。 例例7-1 DBNavigator組件的用法。組件的用法。 7.2.3 DBText和DBEdit組件TDBText組件是用來顯示數(shù)據(jù)集里當(dāng)前記錄中一個特定字段的值,用TDBText組件顯示的字段值是只讀的,如果要編輯數(shù)據(jù)請用DBEdit組件。7.2.4 DBMemo組件TDBMemo組件主要用于顯示和編輯數(shù)據(jù)庫表中的大二進(jìn)制(BLOB)類型的字段值。TDBMemo組件能夠顯示多行文本,也允許用戶在其中輸入和修改多行文本信息,1ReadOnly屬性這是布爾型屬性,為True時,用戶只能在TDBMemo組件中顯示B

11、LOB型文本信息,如Paradox和dBASE數(shù)據(jù)庫表中的備注型字段。當(dāng)為False時,用戶在TDBMemo 組件中不僅可以顯示BLOB文本信息而且還允許用戶編輯修改其中的文本信息。2MaxLength屬性該屬性是整數(shù)型屬性,設(shè)置該屬性的值用于限制用戶向TDBMemo 組件中輸入字符的個數(shù)。若設(shè)置該值為0時,表示輸入字符的個數(shù)沒有限制。3SCrollBar屬性說明TDBMemo組件是否顯示滾動條。4WordWrap屬性說明在TDBMemo組件中輸入文本信息時,輸入到右邊界時,是否自動換行。 5Alignment屬性說明文本信息在TDBMemo組件中的對齊方式,有三種可選值:taLeftJust

12、ify、taCenter和taRightJustify。其含義分別是左對齊,居中和右對齊。在運(yùn)行過程中,用戶對TDBMemo組件中顯示的文本信息是不能夠進(jìn)行剪切、拷貝和粘貼操作的,要想具備這些功能,用戶必須編程調(diào)用CutToClipboard、CopyToClipboard 和PasteFromClipboard方法分別來實(shí)現(xiàn)剪切,拷貝和粘貼操作。6AutoDisplay屬性因?yàn)門DBMemo組件中包含著大量的文本信息。應(yīng)用程序在運(yùn)行過程中要顯示其中的信息需要花費(fèi)很多的時間,特別是當(dāng)用戶移動記錄指針時,都要更新TDBMemo組件中顯示的信息,這樣會大大減慢程序的運(yùn)行速度。為此Delphi為TD

13、BMemo組件設(shè)定了AutoDisplay屬性,用來控制是否自動顯示表中的備注型字段。當(dāng)AutoDisplay設(shè)置為False時,在TDBMemo組件中只顯示其對應(yīng)表中的字段名而不顯示字段中的文本信息,用戶如果想瀏覽字段中的文本信息,用鼠標(biāo)左鍵雙擊TDBMemo組件的內(nèi)部即可;當(dāng)設(shè)置AutoDisplay屬性為True時,在TDBMemo組件中會自動地顯示其對應(yīng)數(shù)據(jù)庫表中的字段值。 7.2.5 DBImage組件TDBImage組件是用來顯示和編輯當(dāng)前記錄中的BLOB類型的圖形字段的。TDBImage組件除了可以在窗體中顯示數(shù)據(jù)集里的圖形數(shù)據(jù),還允許用戶通過粘貼板對圖形數(shù)據(jù)進(jìn)行編輯操作。在應(yīng)用

14、程序運(yùn)行時,用戶可以通過標(biāo)準(zhǔn)的windows快鍵Ctrl+X、Ctrl+C和Ctrl+V對圖形數(shù)據(jù)進(jìn)行剪切、復(fù)制和粘貼操作。在轉(zhuǎn)向其他記錄前按Esc鍵可以返回該數(shù)據(jù)庫圖形的初始狀態(tài)。要使DBImage組件顯示數(shù)據(jù)庫中的圖像,只要設(shè)置好DataSource和DataField屬性即可;AutoDisplay屬性同DBMemo組件。另外DBImage組件有一個LoadPicture方法,用于把圖象數(shù)據(jù)顯示到DBImage組件中,但如果AutoDisplay屬性設(shè)為True時就不需要調(diào)用這個過程。 例7-2 DBImage、DBMemo組件的用法 7.2.6 DBListBox和DBComboBox

15、組件TDBListBox構(gòu)件能夠用列表框顯示一組數(shù)據(jù),用戶可以從中選擇一個數(shù)據(jù)。當(dāng)用戶瀏覽記錄時,程序?qū)⒆詣釉诹斜砜蛑兴阉髋c字段的值匹配的項(xiàng)。當(dāng)用戶在列表框中選擇了某個項(xiàng),程序就自動把當(dāng)前記錄的該字段的值改為列表框中選擇的值。當(dāng)然,要使修改有效還必須調(diào)用Post函數(shù)。要在設(shè)計(jì)期設(shè)置列表框中顯示的項(xiàng),可以單擊Items屬性邊上的省略號按鈕打開一個字符串列表編輯器,然后輸入一些字符串。TDBComboBox與TDBListBox構(gòu)件用法基本相同,不同的是TDBComboBox運(yùn)行允許用戶輸入值,而TDBListBox只能在列表項(xiàng)中選取,不能輸入值。Items屬性用于設(shè)置列表中要顯示的一組數(shù)據(jù)。在設(shè)

16、計(jì)期,可以單擊Items屬性邊上的省略號按鈕打開一個字符串列表編輯器,然后輸入一些字符串。DropDownCount屬性用于設(shè)置當(dāng)用戶下拉組合框時不需要加滾動欄就能顯示的項(xiàng)的個數(shù),缺省是8,表示用戶下拉組合框時如果項(xiàng)的個數(shù)超過8個才加上滾動欄。如果實(shí)際的項(xiàng)數(shù)還沒有DropDownCount屬性指定的值多,下拉的組合框的高度自動縮小。 例7-3 DBListBox組件的用法。 7.2.7 TDBCheckBox 組件 TDBCheckBox構(gòu)件可以認(rèn)為是TCheckBox構(gòu)件的數(shù)據(jù)感知版本,用于處理布爾類型的字段。例如,可以用一個復(fù)選框來表示客戶是否已付帳。TDBCheckBox構(gòu)件實(shí)際上是把字

17、段的值與預(yù)設(shè)的兩個字符串比較,這兩個字符串分別由ValueChecked和ValueUnChecked屬性指定。如果字段的值與ValueChecked屬性指定的字符串匹配,就選中復(fù)選框。如果字段的值與ValueUnchecked屬性指定的字符串匹配,就不選中復(fù)選框。注意:ValueChecked屬性和ValueUnchecked屬性所指定的字符串不能相同。一般情況下,ValueChecked屬性設(shè)為“True”、“Yes”之類的字符串,但也可以是其他任意的字符串,甚至是一組字符串,彼此之間要用分號隔開,例如:DBCheckBox1.ValueChecked := True;Yes;On;上述情

18、況下,當(dāng)字段的值只要與其中一個字符串匹配,就選中復(fù)選框。要說明的是,ValueChecked屬性指定的字符串是大小寫敏感的。一般情況下,ValueUnchecked屬性設(shè)為“False”、“No”之類的字符串,但也可以是其他任意的字符串,甚至是一組字符串,彼此之間用分號隔開。如果字段的值既不與ValueChecked屬性指定的字符串匹配,也不與ValueUnchecked屬性指定的字符串匹配,復(fù)選框就變灰。TDBCheckBox 組件除了顯示當(dāng)前記錄的相應(yīng)字段值外,還可以編輯修改當(dāng)前記錄的相應(yīng)字段值。 7.2.8 TDBRadioGroup 組件 TDBRadioGroup與TRadioGro

19、up構(gòu)件一樣,首先要設(shè)置Items屬性指定單選分組框中要顯示哪些項(xiàng)。Items屬性是一個典型的TStrings對象,每一個字符串對應(yīng)著單選分組框中的一個按鈕。當(dāng)用戶瀏覽記錄時,如果字段的值與單選分組框中的某個按鈕的標(biāo)簽匹配,就選擇這個按鈕。反過來,當(dāng)用戶在單選分組框中選擇一個按鈕,程序就用這個按鈕的標(biāo)簽賦值給DataField屬性指定的字段。如果不想使按鈕的標(biāo)簽與字段的值匹配,可以另外指定其他字符串,這就要用到Values屬性。Values屬性也是一個TStrings對象,用于指定一組字符串。當(dāng)用戶在單選分組框中選擇一個按鈕,程序就用Values屬性中的一個字符串賦值給DataField屬性指

20、定的字段,而不是按鈕的標(biāo)簽。 7.2.9 TDBLookupListBox和TDBLookupComboBox組件TDBLookupListBox組件以列表框的形式顯示另一個數(shù)據(jù)集中的數(shù)據(jù),該組件用于方便錄入,例如要錄入學(xué)生學(xué)號,因?yàn)閿?shù)字的學(xué)號難以記憶,而名字比較好記;因此最好能選中學(xué)生名字,自動錄入該學(xué)生的學(xué)號,這種功能可用TDBLookupListBox組件實(shí)現(xiàn)。TDBLookupListBox組件的主要屬性有DataSource、DataField、ListSource 、KeyField、ListField。其中DataSource連結(jié)要編輯的數(shù)據(jù)源,ListSource和ListFi

21、eld分別對應(yīng)要在TDBLookupListBox組件顯示出來的數(shù)據(jù)源和字段。當(dāng)在TDBLookupListBox組件中選中一行后,ListSource中當(dāng)前記錄的KeyField字段值就賦給DataSource中數(shù)據(jù)集的DataSource字段??梢?,ListSource的ListField、KeyField分別對應(yīng)學(xué)生名字與學(xué)號,而DataSource的DataField對應(yīng)學(xué)號,利用TDBLookupListBox組件可通過學(xué)生名字來錄入學(xué)號。TDBLookupComboBox組件的用法與TDBLookupListBox組件一樣,不同的是TDBLookupComboBox用組合框的形式顯

22、示另一個數(shù)據(jù)集中的數(shù)據(jù),而TDBLookupListBox組件采用列表框的形式。 7.2.10TDBRichEdit組件 TDBRichEdit組件主要是用于RichEdit文本類型字段的顯示和編輯。TDBRichEdit組件可以是多行顯示。盡管TDBRichEdit組件能夠顯示RTF格式的文本,并且提供了很強(qiáng)的編輯功能,但是,它本身并沒有提供用戶界面,應(yīng)用程序必須設(shè)計(jì)出相應(yīng)的用戶界面,才能把TDBRichEdit組件強(qiáng)大的功能發(fā)揮出來。7.3動態(tài)字段和永久字段動態(tài)字段和永久字段7.3.17.3.1理解字段對象理解字段對象數(shù)據(jù)集構(gòu)件(如TQuery、TTable)都有一個Fields屬性,這是

23、一個數(shù)組,它的每一個元素代表一個字段對象,字段對象有動態(tài)字段和永久字段兩種。缺省情況下,當(dāng)把一個數(shù)據(jù)集放到數(shù)據(jù)模塊上并且打開它時,Delphi就會為數(shù)據(jù)集中的每一個字段自動生成一個動態(tài)的字段對象。之所以說它是動態(tài)的,一方面是因?yàn)樗亲詣由傻?,另一方面是因?yàn)樗偸欠从澄锢頂?shù)據(jù)集的情況,對于不同類型的字段來說,生成的字段對象的類型也不同。如果數(shù)據(jù)集的結(jié)構(gòu)或其他信息發(fā)生變化,當(dāng)應(yīng)用程序重新打開這個數(shù)據(jù)集時,就會基于最新的結(jié)構(gòu)和信息重建所有的字段對象。動態(tài)字段對象的生存期是臨時的,當(dāng)數(shù)據(jù)集關(guān)閉時,這些字段對象也跟著消失。由此可見,動態(tài)字段對象的最大特點(diǎn)就是適應(yīng)性強(qiáng)。動態(tài)字段對象的不足之處是,要改變字

24、段的顯示屬性、數(shù)據(jù)格式,需編寫代碼。永久字段需要在設(shè)計(jì)期手工添加,永久字段對象可以在設(shè)計(jì)期設(shè)置字段對象屬性。2、運(yùn)行期訪問字段對象(1)按序號來訪問某個字段,序號是從0開始的。例如,下面的代碼把Customers表的第7個字段顯示到編輯框Edit1中:Edit1.Text:=CustTable.Fields6.AsString;下面的代碼把第7個字段的值設(shè)為編輯框Edit1中的內(nèi)容:Customers.Edit;Customers.Fields6.AsString:=Edit1.Text;Customers.Post;又如, Customers.Fields6.ReadOnly:=True;

25、使第7個字段只讀。不過,按序號來訪問字段不是很安全,因?yàn)槿绻涘e了序號,就得不到正確的結(jié)果。因此,推薦按字段名稱來訪問字段。(2)按字段名訪問字段這就要用到FieldByName函數(shù)。要調(diào)用FieldByName函數(shù),得把字段的名稱作為參數(shù)傳遞給FieldByName函數(shù)。例如,下面的代碼把Customers表的CustNo字段顯示到編輯框Edit2中:Edit2.Text:=Customers.FieldByName(CustNo).AsString;下面的代碼把Customers表的CustNo字段設(shè)為只讀:Customers.FieldByName(CustNo).ReadOnly:=T

26、rue; 7.3.27.3.2怎樣創(chuàng)建永久字段對象怎樣創(chuàng)建永久字段對象要創(chuàng)建永久字段對象,就要用到字段編輯器。7.3.37.3.3增加和刪除永久字段增加和刪除永久字段使用永久字段對象的另一個好處是,可以增加新的字段或者替換原有的字段。Delphi允許增加以下三種類型的字段:Data用于替換原有的字段,例如,改變字段的數(shù)據(jù)類型;Calculated增加一個“計(jì)算字段”,該字段的值由OnCalcFields事件給出;Lookup增加一個“Lookup”字段, 所謂“Lookup”類型的字段,就是它的值能且只能從另一個數(shù)據(jù)集中獲取。下面介紹一下增加“Calculated”類型的字段,增加一個“Cal

27、culated”類型的字段的一般步驟是(1)雙擊一個數(shù)據(jù)集構(gòu)件(如TQuery、TTable),彈出字段編輯器窗口(2)單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“NewField”命令,彈出如圖7-13所示的“NewField”對話框。在“Name”框內(nèi)輸入字段的名稱,不能與已有字段的名稱相同;在“Type”框內(nèi)選擇字段的數(shù)據(jù)類型,在“Size”框內(nèi)指定數(shù)據(jù)長度,如果字段的類型是TStringField、TBytesField或TVarBytesField的話;在“FieldType”分組框內(nèi)選擇“Calculated”,然后單擊OK按鈕。 (3)在窗體或數(shù)據(jù)模塊上單擊數(shù)據(jù)集構(gòu)件,然后對數(shù)據(jù)集構(gòu)件的O

28、nCalcFields事件編程,在OnCalcFields事件代碼中給出計(jì)算字段的值,程序示例如下:procedure TForm1.Table1CalcFields(DataSet: TDataSet);beginDataSet.fieldbyname(myfield).asinteger:=DataSet.fieldbyname(Species No).asinteger+3;end;上例中計(jì)算字段myfield的值是字段Species No的值加3,如果沒有對OnCalcFields事件代碼中給計(jì)算字段賦值,“計(jì)算字段”的值就是空的。要刪除一個永久字段對象,首先要打開字段編輯器,然后選擇

29、要刪除的字段,按下Del鍵。對于永久字段對象來說,一旦被刪掉,應(yīng)用程序就不再能訪問它。如果以后又想恢復(fù),您只能重新創(chuàng)建一個新的永久字段對象,原先的屬性和事件句柄都丟失了。如果把所有的永久字段對象都刪掉,下次打開數(shù)據(jù)集時,就會自動創(chuàng)建動態(tài)字段對象。7.3.4 設(shè)置永久字段對象的屬性使用永久字段對象的一個優(yōu)勢是可以在設(shè)計(jì)期設(shè)置它的屬性、建立事件句柄。例如,可以設(shè)置字段的顯示寬度、它的值是否能修改。要設(shè)置永久字段對象的屬性和建立事件句柄,首先要打開字段編輯器,在字段編輯器中選擇一個字段,然后在對象觀察器中進(jìn)行有關(guān)操作。 1、設(shè)置字段的顯示和編輯屬性、設(shè)置字段的顯示和編輯屬性 要說明的是,有些屬性并不適用于某些類型的字段,例如,對于一個TStringField類型的字段來說,它就沒有Currency、MaxValue、DisplayFormat等屬性。2、字段約束您可以使用字段的ConstraintErrorMessage、CustomConstraint和HasConstraints屬性對于輸入該字段的數(shù)據(jù)施加約束。如果約束失敗 , 那 么 將 引 發(fā) 一 個 異 常 。 如 果 您 輸 入 一 個Constr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論