我在 Delphi XE5 中编写 FMX 城市应用程序时遇到了数据源和 TListBox 同步错误。它可以正常工作,直到有一个组合一个或多个项目的组标题。ListBox
选择组中( ListItemStyle
= )的第一项MetropolisUI
会导致其从列表中消失(它变得不可见,这不会影响数据集本身)。
object LinkListControlToField1: TLinkListControlToField
Category = 'Quick Bindings'
DataSource = BindSourceDB1
FieldName = 'name2'
Control = ListBox1
FillExpressions = <
item
SourceMemberName = 'photo_mini'
ControlMemberName = 'Icon'
end
item
SourceMemberName = 'diagnosis_short'
ControlMemberName = 'Description'
end
item
ControlMemberName = 'Title'
CustomFormat = 'self.owner.name1.text+" "+self.owner.name2.text'
end>
ListItemStyle = 'MetropolisUI'
AutoBufferCount = False
FillHeaderExpressions = <>
FillBreakFieldName = 'ward'
FillHeaderCustomFormat = '"Ward "+ward.text'
FillBreakGroups = <>
end
end
我用来重现错误的以下简化项目以不同的方式起作用,但问题的问题几乎相同。我们只需要一个带有PrototypeBindSource1: TPrototypeBindSource;
(生成文字和整数字段)的表单,BindingsList1: TBindingsList; ListBox1: TListBox;
这Edit1: TEdit;
是 LiveBindings 链接:
object BindingsList1: TBindingsList
Methods = <>
OutputConverters = <>
Left = 20
Top = 5
object LinkListControlToField1: TLinkListControlToField
Category = 'Quick Bindings'
DataSource = PrototypeBindSource1
FieldName = 'ContactName1'
Control = ListBox1
FillExpressions = <>
AutoBufferCount = False
FillHeaderExpressions = <>
FillHeaderFieldName = 'UIntField1'
FillBreakGroups = <>
end
object LinkControlToField1: TLinkControlToField
Category = 'Quick Bindings'
DataSource = PrototypeBindSource1
FieldName = 'ContactName1'
Control = Edit1
Track = False
end
项目的选择与 DataSource (DataSet) 中所选记录的 id 不对应。似乎 LiveBindings 引擎同步了所选记录的ItemIndex
属性,TListBox
但不是真实的。id
有没有解决问题的正确方法?