我正在尝试构建类似的东西TLookupComboBox
使用LiveBindings。
我已经放置了一个普通的TComboBox
在 VCL 形式上。我还有一个数据集,其中一些行具有两个字段id
and text
.
然后我使用 LiveBindings 编辑器创建一个TBindSourceDB
and a 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
and FillDisplayFieldName
.
LiveBindings 设计器如下所示:
组合框填充了字段中的值text
,所以我认为我设置正确。
我怎样才能得到SelectedValue
从代码?
我可以直观地将值绑定到TLabel
然后我就可以读到TLabel.Caption
,但肯定有更简单的方法吗?
PS:我不想将值存储在数据库中,否则我只会使用TDBLookupComboBox
.
Edit:我尝试过使用TPrototypeBindSource
,但是没有明显的方法来从代码访问字段。我也尝试过使用第二个TBindSourceDB
与一个TClientDataSet
这确实有效,但感觉就像用大锤敲碎坚果一样。
您可以通过相应的访问选定的值TLinkFillControlToField
:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
SelectedValue: Integer;
begin
if TryStrToInt(LinkFillControlToField1.BindList.GetSelectedValue.AsString, SelectedValue) then
DoSomethingWith(SelectedValue);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)