delphi完美經典–第十八章

來源:互聯網
上載者:User

第18章資料感知組件

一、TDBText組件

用來以唯讀、一次一條記錄的方式,顯示DataSet中的某一欄位值。因同樣繼承自TCustomLabel,TDBText組件除了資料感知功能外,與標準組件TLabel幾乎一模一樣。

DataField:設定或取得對應到資料來源的欄位名稱。

DataSource:設定或取得TDBText元件連線到哪一個DataSet的資料來源。

二、TDBEdit組件

與TDBText類似,用來顯示單一記錄的單一欄位;不同的是,只要資料庫允許,它可編輯修改對應的欄位。繼承自TCustomMaskEdit,與TEdit、TMaskEdit有很多共性。

DataField和DataSource:同上。

Field:設定或取得欄位值。

ReadOnly:True可避免資料來源的資料被改變。設為False並不保證資料可被更改,資料來源允許更改時,如TQuery的RequestLive設為True,同時ReadOnly設為False,資料來源的對應欄位值才能被改變。

Clear方法:清除組件內容。同樣的,被清除的內容是否儲存回資料來源,必須由資料來源允許寫入與目前DataSet的狀態決定。

三、TDBMemo組件

與TMemo同繼承自TCustomMemo,因此,除了資料感知功能外,與標準TMemo也幾乎一樣。TDBMemo主要用來顯示、串連較長的文字欄位。

AutoDisplay:用來設定或取得是否自動顯示欄位資料。設為False時,僅顯示欄位名稱,雙擊才顯示欄位資料。Delphi7中未發現設為False起作用。

LoadMemo方法:用來調入TDBMemo的內容。

四、TDBImage組件

用來顯示或提供修改資料來源的大型二進位欄位資料(BLOB),與TDBMemo類似,除非真的有此需求,否則,應避免使用這樣的組件,因它比較耗用系統資源。

五、TDBListBox組件

用來顯示或提供列表讓使用者可以通過列表選擇輸入資料。當DataSet允許修改時,改變清單項目會直接更新DataSet中的欄位值。

Items屬性。

六、TDBComboBox組件

用來顯示或提供下拉式菜單,讓使用者可通過下拉式菜單選擇輸入資料。當DataSet允許修改時,改變清單項目會直接更新DataSet中的欄位值。

Items屬性。

AutoComplete:當使用者於TDBComboBox文本列表輸入文字時,會從Items中找出符合的項目,並自動完成未輸入的文字。

AutoDropDown:當使用者以鍵盤開始輸入時,會自動下拉式功能表。

Style:決定TDBComboBox的外觀與行為。其值如下:

Ø 
csDropDown:可接受使用者輸入文字,且各項高度相同。

Ø 
csDropDownList:與csDropDown相同,但無文本輸入列表。

Ø 
csOwnerDrowFixed:無文本輸入列表,項目高度由ItemHeight決定。

Ø 
csOwnerDrawVariable:無文本輸入列表,允許各項目不同高度。

Ø 
csSimple:沒有下拉式表徵圖(倒三角形),但允許輸入文字。

OnMeasureItem:在一個csOwnerDrawVariable狀態的TDBComboBox的下拉式菜單,需再次重畫顯示時觸發。

七、TDBLookupList與TDBLookupComboBox組件

TDBLookupList用來即時顯示另一個DataSet的相對應欄位值。舉例說明下:資料庫中的兩個表:

對圖1:左側是TDBGrid控制項,顯示的是表1的資料;右側是TDBLookupList控制項。要想達到這個目的:在TDBGrid中選擇任意一項時,TDBLookupList中顯示TDBGrid選中行對應的學號所關聯的姓名欄位。反之也成立。

DataField和DataSource:DataSource用來指定跟隨哪一個DataSource變動。上例中,DataSource應與TDBGrid的DataSource相同。

KeyField(關聯欄位):指定ListSource和DataSource的關聯欄位。

ListField(要顯示的關聯欄位):指定ListSource顯示的欄位名稱。ListField通常會設定多個欄位,這也是TDBLookupList控制項的最大特色,同時顯示多個相關欄位,方便使用者輸入。ListField的各欄位名稱間,使用分號隔開。

ListFieldIndex:當ListField設定多個欄位時,ListFieldIndex用來指定其顯示的欄位字串(SelectedItem),對DBLookupList來說,除非明確調用SelectedItem屬性,只要關聯欄位、DataField等設定妥當,ListFieldIndex沒什麼用。

ListSource(關聯資料來源):用來提供顯示欄位的資料來源。

八、TDBNavigator組件

ConfirmDelete:設定刪除操作是否需以對話方塊詢問。

VisibleButtons:VisibleButtons集合類型用來設定TDBNavigator組件各按鈕是否顯示,預設全部顯示。

SetBounds方法:一次設定TDBNavigator組件的Left、Top、Width與Height屬性。

BeforeAction和OnClick事件:OnClick發生在按鈕按下後,其對應的操作已完成。如,按下刪除按鈕,OnClick觸發時,刪除操作早已完成。不同於OnClick,BeforeAction觸發在按鈕對應的操作正要發生時,因此,常用此事件,處理詢問或控制操作是否繼續。

Abort和Exit:在BeforeAction中用Abort可阻止指定操作(比如刪除)執行,Exit無此作用。

九、TDBGrid組件

Columns:此屬性對應到TDBGrid由DataSource取得的欄位資料。它是TColumn的集合。TColumn允許對欄位資料設定顯示名稱、欄位寬度、文字對齊、底色、字型等。

常用屬性:

Options:由一組集合常量設定TDBGrid的外觀及行為。其可能值如下:

Ø 
dgEditing:允許編輯。當Options包含dgRowSelect時,dgEditing失效。

Ø 
dgAlwaysShowEditor:點選網格立即進入編輯模式,當不設定dgAlwaysShowEditor時,必須按[Enter]或[F2]才能編輯。Options包含dgEditing且不包含dgRowSelect時,此屬性才起作用。

Ø 
dgRowSelect:是否允許整列顯示。若允許,則dgEditing和dgAlwaysShowEditor失效。

dgIndicator:是否顯示記錄指標符號。即

Ø  圖中黑三角。

Ø 
dgColumnResize:同時控制欄寬能否改變、欄位是否允許移位。

Ø 
dgRowLines和dgColLines:垂直/水平的列間是否顯示網格間隔線。

Ø 
dgAlwaysShowSelect:即使焦點不在網格,網格仍被選取。

SelectedField:設定或取得目前被選取的網格所在的Field。

SelectedIndex:設定或取得被選取網格的欄位索引值,當整列選取時,返回0。

SelectedRows:用來記錄所有被選取的記錄行。此屬性必須在Options包含dgRowSelect和dgMultiSelect時有效。

常用事件:

OnCellClick:編輯模式不會觸發。

OnDrawColumnCell和OnDrawDataCell:重繪時觸發。OnDrawColumnCell用來取代OnDrawDataCell,所有不要兩個同時設定。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.