Delphi XE3:DBLookupCombo Dropdown副作用

时间:2013-06-07 08:06:19

标签: database delphi combobox lookup delphi-xe

我们正在将D6应用程序移植到XE3。

在D6中,我继承了一个复杂的代码,它在任何地方使用共享数据集和数据源。

这在D6中运作良好。

在我们运行XE3版本之后,我们经历了查找组合框的更改。

在下拉列表中,他们会重置其他下拉列表的键值(程序中的任何位置)!

如果两个下拉列表用于数据集,并且如果我单击第一个向下按下它,然后选择,则向下键入第二个键值变为NULL;反向 - 如果我点击第二个,第一个键值变为NULL ......

这个程序是全球性的,所以我需要找到快速解决方案。

可能有人有关于这个“bug”(或“feature”?:-))的任何信息,或者他/她手中有解决方案?

感谢您的回答!

2 个答案:

答案 0 :(得分:0)

这是故意的。请查看TCustomDBLookupComboBox.ListLinkDataChanged;Vcl.DBCtrls的实施情况。你会发现评论:

  { Fix for Defect# 204311, Non-bound control should clear when list datasource changes }

答案 1 :(得分:0)

解决方案:将数据集放在数据模块上。为每个表单实例化,因此每个表单都使用单独的数据集实例。确保在实例化后将数据模块的名称设置为空字符串,或者在使用数据集连接表单的数据源时,Delphi流系统仍将使用第一个正确命名的实例。

当数据模块采用表单的uses子句(接口或实现无关紧要)时,IDE仍将通过Object Inspector为您提供组件。

您需要将数据库连接放在您只实例化一次(可能是自动)的不同数据模块上。