我正在使用Delphi 6,我想要一个带有多选的数据库绑定列表框。我找到了三种类型的List框: TListBox TDBListBox TDBLookupListBox

据我所知, TListbox 未绑定到数据库。 TDBListBox TDBLookupListBox 不能多选。

有没有办法让多选列表框绑定到数据库?

有帮助吗?

解决方案

数据绑定组件的问题在于它们依赖于数据源而数据源只有一个游标。这可能是原因。

顺便问一下,你需要更改数据吗?否则,您可以从数据集中填充正常的列表框。甚至使用不可见的数据列表框并将内容复制到普通列表框。

其他提示

据我所知。不是 标准是您在列表中提供一组值,其中1表示当前记录。
除非你有一个多值字段(针对最佳实践),否则我无法看到你如何多选......

或者您可能想要的实际上是一个子表?

DevExpress TcxDBListBox支持多选。我使用绑定到数据库的多选下拉复选框,这很好。

组件具有可以实现转换为列表和从列表转换的方法; EditValueToStates和StatesToEditValue。虽然我存储的数据没有标准化(我存储了一个以分号分隔的版本号列表),但是我在字段上创建了一个全文搜索索引,用分号作为分隔符,现在我仍然可以执行优化搜索在那个领域。

您可以创建自己的自定义列表框组件,该组件从TCustomListBox继承,并为列表添加Datasource属性,以及另一个属性(如TStrings)用作容纳选定值的容器。然后,您可以使用单击按钮将更改发布到数据库。

如果你摆弄TDBGrid的一些选项并限制它显示的列,你可以创建一个看起来很像列表框的东西。尝试将Options属性设置为[dgTitles,dgTabs,dgRowSelect,dgAlwaysShowSelection,dgCancelOnExit,dgMultiSelect]并从那里开始工作。

在TDbLookupListBox中,您可以选择将两个不同的东西绑定到数据;首先,您可以将列表绑定到数据集(ListSource / ListField / KeyField),其次,您可以将所选项绑定到另一个数据集(DataSource,DataField)中的字段。想要将项目列表绑定到数据集,然后手动管理多个选择在概念上没有任何错误,但是我认为没有子类化并启用所需的控件样式,当前实现是不可能的。

根据你对Franç ois的评论,我会使用普通的TListbox并编写代码将所有不同的值插入到列表中,然后自己处理多选值。 Jeremy的解决方案也有效, DevExpress Express Quantum Grid 有一个很好的过滤系统,甚至可能会为你节省一些其他的编程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top