【问题标题】:Benefit of using DBComboBox over CombBox?使用 ComboBox 优于 ComboBox 的好处?
【发布时间】:2011-04-06 00:44:33
【问题描述】:

所以我在 Delphi 2009 中搞砸了一个新项目,并且可以拖放到表单上以访问数据的默认组件包括 SQLConnection、DataSource 和 SQLQuery。如果我向查询组件添加一个简单的选择,例如:

select name from customers

然后在表单上放置一个 DBComboBox 并将其与 DataSource 链接起来,我在组合框中得到了一条记录。在使用谷歌半小时来找出我做错了什么之后,看起来您必须手动将一些代码添加到您的项目中,该代码循环遍历数据集并将所有记录添加到下拉框中。比如:

while not SQLQuery.eof do
begin
  DBComboBox.items.add(SQLQuery.fieldbyname('name').asstring);
  SQLQuery.next;
end; 

这实际上是可行的,但是您会在下拉列表中看到一个列表,您实际上无法从中选择任何内容。不管结果如何,尽管我想知道如果您必须手动将查询结果添加到 DBComboBox 中,为什么还要使用它?在我看来,如果它没有自动使用查询结果填充 db 组合框,那么我们还不如使用非数据感知组件,如 tcombobox。

我想我要问的是为什么它会这样工作?数据感知拖放控件的目的不是最大限度地减少实际编写代码的数量并加快开发速度吗?有没有我想念的方法可以让这更容易?

【问题讨论】:

    标签: delphi combobox components sql


    【解决方案1】:

    DbCombox 是标准组合框组件的 dbaware 版本。

    【讨论】:

      【解决方案2】:

      我认为您想要TDBLookupComboBox,因为它允许您从列表来自数据集的项目列表中查找。

      在TDBComboBox中,列表只是一个手动填充数据的TStrings。

      --杰罗恩

      【讨论】:

        【解决方案3】:

        TDBComboBox 没有从数据库中获取其值列表;它从数据库中获取其当前值。将其链接到数据集中的字段,当您更改活动记录时,组合框的当前值将更改。改变组合框的当前值,对应字段的值也会改变。

        如果您还想从数据库中获取值列表,请使用 TDBLookupComboBox。

        这些都包含在帮助中:

        【讨论】:

        • 感谢 Rob,这说明了这一点。完全不相关,但是当我为另一个项目(在 c# 中)安装 MS Visual Studio 时,我的帮助文件不知何故被消灭了.. 还没有弄清楚如何取回我的 Delphi 帮助文件。但这是另一个线程的讨论。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-18
        • 1970-01-01
        • 2012-12-16
        • 2017-05-14
        相关资源
        最近更新 更多