如何通过Delphi代码精确获取ComboBox的当前选中项的值?

2026-04-10 17:562阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计328个文字,预计阅读时间需要2分钟。

如何通过Delphi代码精确获取ComboBox的当前选中项的值?

我正在尝试使用LiveBindings构建TLookupComboBox的功能。在VCL表格上,我放置了一个普通的TComboBox。我还有一个数据集,其中包含id和text两列的行。然后,我使用LiveBindings编辑器创建了一个。

我正在尝试使用LiveBindings构建类似TLookupComboBox的东西.

我在VCL表单上放置了一个普通的TComboBox.我还有一个数据集,其中包含两个字段id和text的行.

然后我使用LiveBindings编辑器创建了一个TBindSourceDB和一个TBindingsList.

如何通过Delphi代码精确获取ComboBox的当前选中项的值?

它只有一个绑定:

object BindingsList1: TBindingsList Methods = <> OutputConverters = <> UseAppManager = True Left = 244 Top = 229 object LinkFillControlToField1: TLinkFillControlToField Category = 'Quick Bindings' Control = ComboBox1 Track = True FillDataSource = BindSourceDB1 FillValueFieldName = 'id' FillDisplayFieldName = 'text' AutoFill = True BufferCount = -1 FillExpressions = <> end end

如您所见,我有FillValueFieldName和FillDisplayFieldName的不同字段.

LiveBindings设计器如下所示:

ComboBox中填充了字段文本中的值,所以我认为我正确设置了它.

如何从代码中获取SelectedValue?

我可以在视觉上将值绑定到TLabel,然后我可以读取TLabel.Caption,但肯定有更简单的方法吗?

PS:我不想将值存储在DB中,否则我只想使用TDBLookupComboBox.

编辑:我曾尝试使用TPrototypeBindSource,但没有明显的方法从代码访问字段.我还尝试使用第二个TBindSourceDB和一个有效的TClientDataSet,但感觉就像使用大锤来破解坚果一样.

您可以通过相应的TLinkFillControlToField访问所选值:

procedure TForm1.ComboBox1Change(Sender: TObject); var SelectedValue: Integer; begin if TryStrToInt(LinkFillControlToField1.BindList.GetSelectedValue.AsString, SelectedValue) then DoSomethingWith(SelectedValue); end;

本文共计328个文字,预计阅读时间需要2分钟。

如何通过Delphi代码精确获取ComboBox的当前选中项的值?

我正在尝试使用LiveBindings构建TLookupComboBox的功能。在VCL表格上,我放置了一个普通的TComboBox。我还有一个数据集,其中包含id和text两列的行。然后,我使用LiveBindings编辑器创建了一个。

我正在尝试使用LiveBindings构建类似TLookupComboBox的东西.

我在VCL表单上放置了一个普通的TComboBox.我还有一个数据集,其中包含两个字段id和text的行.

然后我使用LiveBindings编辑器创建了一个TBindSourceDB和一个TBindingsList.

如何通过Delphi代码精确获取ComboBox的当前选中项的值?

它只有一个绑定:

object BindingsList1: TBindingsList Methods = <> OutputConverters = <> UseAppManager = True Left = 244 Top = 229 object LinkFillControlToField1: TLinkFillControlToField Category = 'Quick Bindings' Control = ComboBox1 Track = True FillDataSource = BindSourceDB1 FillValueFieldName = 'id' FillDisplayFieldName = 'text' AutoFill = True BufferCount = -1 FillExpressions = <> end end

如您所见,我有FillValueFieldName和FillDisplayFieldName的不同字段.

LiveBindings设计器如下所示:

ComboBox中填充了字段文本中的值,所以我认为我正确设置了它.

如何从代码中获取SelectedValue?

我可以在视觉上将值绑定到TLabel,然后我可以读取TLabel.Caption,但肯定有更简单的方法吗?

PS:我不想将值存储在DB中,否则我只想使用TDBLookupComboBox.

编辑:我曾尝试使用TPrototypeBindSource,但没有明显的方法从代码访问字段.我还尝试使用第二个TBindSourceDB和一个有效的TClientDataSet,但感觉就像使用大锤来破解坚果一样.

您可以通过相应的TLinkFillControlToField访问所选值:

procedure TForm1.ComboBox1Change(Sender: TObject); var SelectedValue: Integer; begin if TryStrToInt(LinkFillControlToField1.BindList.GetSelectedValue.AsString, SelectedValue) then DoSomethingWith(SelectedValue); end;