在許多數據表中,數據是以代碼方式存放的,如在班級編碼數據表tB03(表5.5)中,系部字段TB0309采用編碼方式存放,系部真實名稱則存放在系部編碼表TB06。使用代碼的好處是,用戶可在編碼表TB06中改變TB0602字段的系部名稱,而不會影響使用該編碼的其他數據表(如TB03)的運行6其缺點是當用戶輸人數據編碼時,必須查詢編碼所表示的含義,如“OO"代表“基礎部”、“1 O”表示“機械系"等,這給數據錄入帶來很大的麻煩。最好的方法是用戶 在程序界面中直接選擇系部名稱,而實際錄入的是系部編碼。為此,Delphi提供了DBLookup.ConboBox、DBI,ookupListBox數據界面組件,幫助用戶解決上述問題。
DBLookupConboBox組件和DBComboBox組件的功能相似,都是通過選擇下拉列表框中的數 據項來錄入當前記錄指定字段值。所不同的是,D BConboBox組件列表框中的內容是通過Items 屬性由程序員輸入的,而DBLookupConboBox組件的列表框中的內容是由數據庫編碼表提供的。 因此,DBLookupComboBox組件是沒有Items屬性的。在使用DBlookupComboBox組件編輯數據表字段值時,必須先放置兩個數據集組件(Table)。一個對應于要錄入數據的主表(如班級編碼表Table_TB03),另一個對應于數據編碼從表(如系部編碼表Table一TB06),再放人2個數據源組件:DataSource_TB03、DataSouroe_TB06,后按如下步驟設置其屬性。
1.重要屬性 (1)DataSource屬性 該屬性用于連接要編輯數據的主表數據源,如學生班級表數據源DataSource—TB03。 (2)DataField屬性 該屬性用于指定要編輯的數據字段名,如TB03中的系部編碼字段TB0309。 (3)ListSource屬性 。 該屬性用于提供連接數據編碼的從表數據源,如系部編碼數據源DataSource—TB06。 (4)KeyField屬性 該屬性用于指定數據編碼從表的關鍵字,一般為數據編碼字段,如系部數據編碼字段 TB060 1 o (5)ListField屬性 該屬性用于選擇數據表中要在列表框中顯示的字段名稱,如系部名稱TB0602。 通過上述5個屬性的設置,就能用DBLookupComboBox組件的下拉列表框錄人所需數據編 (6)DropDownAlign屬性 該屬性用于設置下拉列表框中數據項的排列 方式,可以為如下值:daLeft、daRight、daCenter,分別為左對齊、右對齊與居中對齊。 (7)DropDownRows屬性 該屬性用于設置下拉列表框默認顯示行數,如設置1 O行等o (8)DropDownWidth屬性 該屬性用于設置下拉列表框的寬度。若值為 O表示與編輯框等寬。
2.常用方法與事件
(1)CloseUp方法 若組件被下拉結束后,此時只顯示編輯框而不顯示下拉列表框,則觸發OnCloseUp事件。 (2)DropDown方法 若組件被下拉尚未結束,此時顯示下拉列表框,則觸發OnCloseUp事件。
|