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