Использование Livebindings для назначения нескольких значений полей для FMX MetropolisUI TListBox Item.Text
Я кодирую приложение пользовательского интерфейса FMX Metropolis и пытаюсь назначить два значения поля типа string элементу Item.Title TListBox с помощью технологии LiveBindings (с использованием механизма выражений).
Когда я использую 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 такого свойства нет
Если я использую 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'
к этому.
Я пытался угадать контекст Item.Text
член TListBox
от TBindList
но мне не удалось. Я изучал образцы Delphi, но TListBox Metropolis отсутствует, и, похоже, он действует не так, как обычный. У кого-нибудь есть идеи, как найти решение этой проблемы?
1 ответ
Благодаря посту @house-of-dexter он дал ответ относительно 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