0

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

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

这在 D6 中运行良好。

在我们可以运行 XE3 版本之后,我们体验到查找组合框发生了变化。

在下拉菜单中,他们重置了其他下拉菜单的键值(程序中的任何地方)!

如果在数据集上使用两个下拉菜单,并且如果我单击第一个下拉它,然后选择,则第二个键值更改为 NULL;并反转 - 如果我点击第二个,第一个的键值更改为 NULL ...

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

可能有人有关于这个“错误”(或“功能”?:-))的任何信息,或者他/她有解决方案吗?

感谢您的任何回答!

4

2 回答 2

0

这是故意的。看一下TCustomDBLookupComboBox.ListLinkDataChanged;in的实现Vcl.DBCtrls。你会发现评论:

  { Fix for Defect# 204311, Non-bound control should clear when list datasource changes }
于 2013-06-07T08:51:31.397 回答
0

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

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

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

于 2013-06-07T09:38:43.980 回答