使用实时绑定将多个字段值分配给 FMX MetropolisUI TListBox Item.Text
Using Livebindings to Assign Several Field Values to an FMX MetropolisUI TListBox Item.Text
我正在编写一个 FMX Metropolis UI 应用程序,并尝试通过 LiveBindings 技术(使用表达式引擎)将两个字符串类型的字段值分配给 TListBox 的 Item.Title 成员。
当我按以下方式使用 TBindList 时:
object BindList1: TBindList
Category = 'Lists'
ControlComponent = ListBox1
SourceComponent = BindSourceDB1
FormatExpressions = <
item
ControlExpression = 'Text'
SourceExpression =
'FieldByName("name1").Text + " " + Field' +
'ByName("name2").Text'
end>
FormatControlExpressions = <>
ClearControlExpressions = <>
end
它将 'name1 name2' 字符串分配给成员 Text
但我无法设置 ListItemStyle := MetropolisUI
因为在 TBindList class 中没有这样的 属性
如果我用TLinkFillControlToField
object LinkFillControlToField2: TLinkFillControlToField
Category = 'Quick Bindings'
Control = ListBox1
Track = True
FillDataSource = BindSourceDB1
FillDisplayFieldName = 'name1'
AutoFill = True
BufferCount = -1
AutoBufferCount = False
FillExpressions = <>
FillHeaderExpressions = <>
FillBreakGroups = <>
end
它让我可以将 ListItemStyle
分配给 MetropolisUI
,但是我只能使用 FillDisplayFieldName
属性 访问一个字段并且没有 SourceExpression
字段分配 'FieldByName("name1").Text + " " + FieldByName("name2").Text'
给它。
我试图从 TBindList
猜测 TListBox
的 Item.Text
成员的上下文,但我没有成功。我研究了 Delphi 个样本,但没有 Metropolis TListBox,它的行为方式似乎与普通的不同。有人知道如何找到解决此问题的方法吗?
感谢@house-of-dexter 的 post 他给了一个关于 TLabel
的 鼓励我再次尝试 TLinkFillControlToField
。主要问题是可以在 Self.Owner
.
中找到字段名的上下文
object LinkFillControlToField2: TLinkFillControlToField
Category = 'Quick Bindings'
DataSource = BindSourceDB1
Control = ListBox1
Track = True
FillDataSource = BindSourceDB1
AutoFill = True
BufferCount = -1
AutoBufferCount = False
ListItemStyle = 'MetropolisUI'
FillExpressions = <
item
SourceMemberName = 'name1'
ControlMemberName = 'Title'
CustomFormat = 'Self.Owner.name1.text+" "+Self.Owner.name2.text'
end>
FillHeaderExpressions = <>
FillBreakGroups = <>
end
我正在编写一个 FMX Metropolis UI 应用程序,并尝试通过 LiveBindings 技术(使用表达式引擎)将两个字符串类型的字段值分配给 TListBox 的 Item.Title 成员。
当我按以下方式使用 TBindList 时:
object BindList1: TBindList
Category = 'Lists'
ControlComponent = ListBox1
SourceComponent = BindSourceDB1
FormatExpressions = <
item
ControlExpression = 'Text'
SourceExpression =
'FieldByName("name1").Text + " " + Field' +
'ByName("name2").Text'
end>
FormatControlExpressions = <>
ClearControlExpressions = <>
end
它将 'name1 name2' 字符串分配给成员 Text
但我无法设置 ListItemStyle := MetropolisUI
因为在 TBindList class 中没有这样的 属性
如果我用TLinkFillControlToField
object LinkFillControlToField2: TLinkFillControlToField
Category = 'Quick Bindings'
Control = ListBox1
Track = True
FillDataSource = BindSourceDB1
FillDisplayFieldName = 'name1'
AutoFill = True
BufferCount = -1
AutoBufferCount = False
FillExpressions = <>
FillHeaderExpressions = <>
FillBreakGroups = <>
end
它让我可以将 ListItemStyle
分配给 MetropolisUI
,但是我只能使用 FillDisplayFieldName
属性 访问一个字段并且没有 SourceExpression
字段分配 'FieldByName("name1").Text + " " + FieldByName("name2").Text'
给它。
我试图从 TBindList
猜测 TListBox
的 Item.Text
成员的上下文,但我没有成功。我研究了 Delphi 个样本,但没有 Metropolis TListBox,它的行为方式似乎与普通的不同。有人知道如何找到解决此问题的方法吗?
感谢@house-of-dexter 的 post 他给了一个关于 TLabel
的 TLinkFillControlToField
。主要问题是可以在 Self.Owner
.
object LinkFillControlToField2: TLinkFillControlToField
Category = 'Quick Bindings'
DataSource = BindSourceDB1
Control = ListBox1
Track = True
FillDataSource = BindSourceDB1
AutoFill = True
BufferCount = -1
AutoBufferCount = False
ListItemStyle = 'MetropolisUI'
FillExpressions = <
item
SourceMemberName = 'name1'
ControlMemberName = 'Title'
CustomFormat = 'Self.Owner.name1.text+" "+Self.Owner.name2.text'
end>
FillHeaderExpressions = <>
FillBreakGroups = <>
end