问题描述
我正在编码FMX Metropolis UI应用程序,并尝试通过LiveBindings技术(使用表达式引擎)将两个字符串类型的字段值分配给TListBox的Item.Title成员.
I am coding a FMX Metropolis UI application and trying to assign two field values of type string to the Item.Title member of TListBox by LiveBindings technology (using expression engine).
当我通过以下方式使用TBindList时:
When I use a TBindList in the following way:
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
它为成员Text
分配了'name1 name2'字符串,但由于TBindList类中没有这样的属性,我无法设置ListItemStyle := MetropolisUI
It assigns the 'name1 name2' string to the member Text
but I fail to set the ListItemStyle := MetropolisUI
as there is no such property in 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'
分配给它.
it lets me to assign ListItemStyle
to MetropolisUI
, but there is only one field that I can access with FillDisplayFieldName
property and there is no SourceExpression
field to assign 'FieldByName("name1").Text + " " + FieldByName("name2").Text'
to it.
我试图从TBindList
猜测TListBox
的Item.Text
成员的上下文,但是我没有设法.我研究了Delphi样本,但没有Metropolis TListBox,它的行为方式与普通样本不同.是否有人有想法找到解决此问题的方法?
I tried to guess context of Item.Text
member of TListBox
from TBindList
but I did not manage to. I studied Delphi samples but there is no Metropolis TListBox and it seems to act in a different way than the common one. Does anybody have any ideas how to find the solution for this issue?
推荐答案
感谢@ house-of-dexter的帖子,他给了TLabel的> answer 鼓励了我再次尝试.主要问题是可以在Self.Owner
中找到字段名的上下文.
Thanks to the post of @house-of-dexter He gave an answer concerning TLabel
that encouraged me to try TLinkFillControlToField
once again. The main issue is that the context of the fieldname can be found in 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
这篇关于使用Livebindings为FMX MetropolisUI TListBox Item.Text分配多个字段值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!