以RTF格式顯示文本
TDBRichEdit構件可以認為是TRichEdit構件的數據感知版本,用於以RTF格式顯示BLOB字段中的格式化文本。它的用法類似於TDBMemo構件,也能顯示多行文本。
注意:盡管TDBRichEdit構件能夠顯示RTF格式的文本,並且提供了很強的編輯功能,但是,它本身並沒有提供用戶界面,應用程序必須設計出相應的用戶界面,才能把TDBRichEdit 構件強大的功能發揮出來。
默認情況下,TDBRichEdit構件允許用戶鍵入新的文本。如果不想讓用戶修改文本,可以把ReadOnly屬性設為True。要允許用戶在文本中插入一個制表符,應當把WantTabs屬性設為True,否則,當用戶按下Tab鍵,將把輸入焦點移走,而不是插入制表符。
要限制用戶最多可輸入的字符數,可以設置MaxLength屬性。如果這個屬性設為0,表示沒有限制。如果AutoDisplay屬性設為True,當DataFIEld屬性所指定的字段的內容改變了時,TDBRichEdit構件會自動刷新。如果AutoDisplay屬性設為False,TDBRichEdit構件上只顯示字段名,用戶必須雙擊這個構件或程序調用LoadMemo函數才能刷新數據。
顯示和編輯圖像
TDBImage構件可以認為是TImage構件的數據感知版本,它可以顯示BLOB字段的內容。TDBImage構件從數據集中檢索了圖像後,在本地以DIB格式建立一個副本。
可以調用CutToClipboard或CopyToClipboard函數把圖像剪切或復制到剪貼板中,調用 PasteFromClipboard可以從剪貼板中粘貼圖像。
如果Stretch屬性設為True,圖像將自動縮放,以適應TDBImage構件的大小,這樣就可能造成圖像變形。
如果AutoDisplay屬性設為True,當DataFIEld屬性所指定的字段的內容改變了時,TDBImage構件會自動刷新。如果這個屬性設為False,TDBImage構件上只顯示字段名,用戶必須雙擊這個構件才能刷新數據,當然也可以調用LoadPicture來刷新數據。
用列表框和組合框顯示和編輯數據
有4個特殊的數據控件可以用列表框和組合框顯示和編輯數據,它們可以認為是標准的列表框和組合框的數據感知版本。下面簡單介紹這4個數據控件:
1、TDBListBox用列表框顯示一組數據,讓用戶從中選擇一個值。
2、TDBComboBox用組合框顯示一組數據,讓用戶從中選擇一個值。
3、TDBLookupListBox用列表框顯示另一個數據集中的一組數據,讓用戶從中選擇一個值。
4、TDBLookupComboBox用組合框顯示另一個數據集中的一組數據,讓用戶從中選擇一個值。
TDBComboBox
TDBComboBox構件實際上是TComboBox構件的數據感知版本,它能以組合框的形式顯示一組數據,讓用戶從列表中選擇一個值或直接輸入一個值。
Items屬性用於設置列表中要顯示的一組數據。在設計期,可以單擊Items屬性邊上的省略號按鈕打開一個字符串列表編輯器,然後輸入一些字符串。
DropDownCount屬性用於設置當用戶下拉組合框時不需要加滾動欄就能顯示的項的個數,默認是8,表示用戶下拉組合框時如果項的個數超過8個才加上滾動欄。如果實際的項數還沒有DropDownCount屬性指定的值多,下拉的組合框的高度自動縮小。
在Style屬性設為csOwnerDrawFixed的情況下,ItemHeight屬性用於設置項的高度。
顯示另一個數據集中的數據
TDBLookupListBox構件和TDBLookupComboBox構件分別以列表框和組合框的形式顯示另一個數據集中的數據。
假設有一個表格叫OrdersTable,其中包含一個CustNo字段,用於表達客戶的編號,但OrdersTable表中除了客戶的編號外,不包含客戶的其他信息。而另一個表格假設叫CustomersTable,除了有CustNo字段外,還有諸如客戶的公司名稱、地址等信息。
TDBLookupListBox構件可以實現這樣的功能,當用戶在OrdersTable中浏覽記錄時,程序首先在CustomersTable中查找與CustNo字段匹配的記錄,如果找不到,就從列表中查找與Company字段匹配的字符串;如果找到,就選擇這一項。
用復選框處理布爾類型的字段
TDBCheckBox構件可以認為是TCheckBox構件的數據感知版本,用於處理布爾類型的字段。例如,可以用一個復選框來表示客戶是否已付帳。
TDBCheckBox構件實際上是把字段的值與預設的兩個字符串比較,這兩個字符串分別由ValueChecked和ValueUnChecked屬性指定。如果字段的值與ValueChecked屬性指定的字符串匹配,就選中復選框。如果字段的值與ValueUnchecked屬性指定的字符串匹配,就不選中復選框。注意:ValueChecked屬性和ValueUnchecked屬性所指定的字符串不能相同。
一般情況下,ValueChecked屬性設為“True”、“Yes”之類的字符串,但也可以是其他任意的字符串,甚至是一組字符串,彼此之間要用分號隔開,例如:
DBCheckBox1.ValueChecked := 'True;Yes;On';
上述情況下,當字段的值只要與其中一個字符串匹配,就選中復選框。要說明的是,ValueChecked屬性指定的字符串是大小寫敏感的。一般情況下,ValueUnchecked屬性設為“False”、“No”之類的字符串,但也可以是其他任意的字符串,甚至是一組字符串,彼此之間用分號隔開。如果字段的值既不與ValueChecked屬性指定的字符串匹配,也不與ValueUnchecked屬性指定的字符串匹配,復選框就變灰。
使用TDBGrid
TDBGrid構件以柵格的形式顯示和編輯數據集中的數據。它的外觀很大程度上取決於下面三個因素:l 一是永久的列對象。 二是永久的字段對象。 三是數據集構件的ObjectVIEw屬性將影響ADT和數組字段的顯示方式。對於TDBGrid構件來說,最重要的屬性是Columns,這是一個TDBGridColumns對象,用於管理一組TColumn對象。在設計期,可以打開一個編輯器建立永久的列對象,然後在對象觀察器中設置列對象的屬性。