使用DBComboBox而不是CombBox的好处?

Raf*_*afe 3 sql delphi components combobox

所以我正在搞乱Delphi 2009中的一个新项目,可以删除到表单上的默认组件用于访问数据,包括SQLConnection,DataSource和SQLQuery.如果我向查询组件添加一个简单的选择,请说:

select name from customers
Run Code Online (Sandbox Code Playgroud)

然后在表单上删除一个DBComboBox并将其与DataSource链接我在组合框中得到一条记录.在使用谷歌一半和一小时来弄清楚我做错了什么之后,看起来你必须手动为项目添加一些代码,这些代码循环遍历数据集并将所有记录添加到下拉框中.就像是:

while not SQLQuery.eof do
begin
  DBComboBox.items.add(SQLQuery.fieldbyname('name').asstring);
  SQLQuery.next;
end; 
Run Code Online (Sandbox Code Playgroud)

这实际上是有效的,但是你会在下拉列表中找到一个列表,你无法从中选择任何东西.无论结果如何,但我想知道为什么如果你必须手动将查询结果添加到它中,你甚至会使用DBComboBox?在我看来,如果它没有自动使用查询结果填充db组合框,那么我们也可能使用像tcombobox这样的非数据感知组件.

我想我问的是为什么它会这样工作?数据感知拖放控件的目的不是最小化实际编写的代码量和加速开发吗?有没有一种我想念的方法可以让这更容易?

Rob*_*edy 11

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

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

这些都包含在帮助中: