加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何从代码中获取ComboBox的SelectedValue?

发布时间:2020-12-15 09:12:38 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用LiveBindings构建类似TLookupComboBox的东西. 我在VCL表单上放置了一个普通的TComboBox.我还有一个数据集,其中包含两个字段id和text的行. 然后我使用LiveBindings编辑器创建了一个TBindSourceDB和一个TBindingsList. 它只有一个绑定: object
我正在尝试使用LiveBindings构建类似TLookupComboBox的东西.

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

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

它只有一个绑定:

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读