2008-10-28 70 views
4

我正在使用Delphi 6,並且我想要一個帶有多選的數據庫綁定列表框。我發現了三種列表框:TListBox,TDBListBoxTDBLookupListBox在Delphi 6中綁定到數據庫的多選列表框

至於我能理解,TListbox不綁定到數據庫。 TDBListBoxTDBLookupListBox不能被多選。

有沒有辦法讓多選列表框綁定到數據庫?

回答

3

與數據綁定組件的問題是,他們依靠數據源和數據源只有一個光標。這可能是爲什麼。

順便說一下,你需要改變數據嗎?否則,您可以從數據集中填充正常的列表框。甚至使用不可見的數據列表框並將內容複製到正常的列表框。

3

據我所知。
標準是您提供的列表中有一堆值,其中1代表當前記錄。
除非你有一個多值字段(針對最佳實踐),否則我無法看到你如何多選...

或者你可能想要的其實是一個子表?

+0

我想爲表格創建一個過濾器,並且列表框是過濾條件之一。我想用數據庫中的表格填充列表框。 – Blue 2008-10-28 19:44:47

0

在你有兩種不同的方式綁定到數據的選項TDbLookupListBox;首先您可以將列表綁定到數據集(ListSource/ListField/KeyField),然後您可以將選定項綁定到另一個數據集(DataSource,DataField)中的字段。想要將項目列表綁定到數據集,然後手動管理多個選擇,沒有任何概念錯誤,但是我認爲在沒有創建子類化和啓用所需的控件樣式的情況下,當前實現並不可行。

1

DevExpress TcxDBListBox支持多選。我使用綁定到數據庫的多選下拉複選框,這很好。

這些組件具有您可以實現的轉換爲和從您的列表轉換的方法; EditValueToStates和StatesToEditValue。雖然我存儲的數據未經過標準化(我存儲了分號分隔的版本號列表),但我在該字段上創建了全文搜索索引,並以分號作爲分隔符,現在我仍然可以執行優化搜索在那個領域。

0

根據弗朗索瓦您的意見,我會用一個正常的TListBox和編寫代碼來所有不同值插入到列表中,然後自己處理多選擇值。 Jeremy的解決方案也可行,DevExpress Express Quantum Grid有一個很好的過濾系統,甚至可以爲您節省一些其他的編程。

1

您可以創建一個從TCustomListBox下降自己的自定義列表框組件,添加一個數據源屬性列表,並用作容器來保存選定值其他屬性,如字符串列表。然後,您可以使用按鈕單擊將更改發佈到數據庫。

1

如果你撥弄一些的TDBGrid中的選項,並限制其顯示的列,可以使一些看起來完全就像一個列表框。嘗試將Options屬性設置爲[dgTitles,dgTabs,dgRowSelect,dgAlwaysShowSelection,dgCancelOnExit,dgMultiSelect]並從那裏開始工作。