为什么我不能对XE5中的数据模块进行LiveBinding?

时间:2013-11-28 12:26:55

标签: delphi livebindings

我有一个FireMonkey Mobile应用程序,我在实际表单上使用了TSQlConnection和TSQLDataset。数据集填充TComboBox没有任何问题,但后来我决定将所有数据库代码等放入DataModule。

移动TSqlConnection和数据源并添加Datamodul。检查以确保一切正常并且没有问题。然后我从表单中删除原始组件并完全删除绑定。重做绑定,以便它们使用数据模块中的数据。构建应用程序并使用正确的表单......组合框中没有任何内容。

数据集开放等附加事件,它们都是开放的,没问题。甚至在绑定上触发FilledList事件......那么为什么他们以前不会出现?

Combobox代码

object itemModel: TListBoxItem [1]
  Height = 44.000000000000000000
  Position.Y = 44.000000000000000000
  StyleLookup = 'listboxitemnodetail'
  Width = 384.000000000000000000
  object cboModel: TComboBox
    Align = alClient
    DisableFocusEffect = False
    Height = 32.000000000000000000
    TabOrder = 0
    Width = 384.000000000000000000
  end
end

数据源代码

 object BindSourceDB2: TBindSourceDB
    DataSet = dmdLocal.dsModels
    ScopeMappings = <>
    Left = 176
    Top = 272
  end

链接填写代码

object LinkFillControlToField2: TLinkFillControlToField
  Category = 'Quick Bindings'
  Control = cboModel
  Track = True
  FillDataSource = BindSourceDB2
  FillDisplayFieldName = 'MODEL'
  AutoFill = True
  BufferCount = -1
  AutoBufferCount = False
  FillExpressions = <>
  FillHeaderExpressions = <>
  FillBreakGroups = <>
end

编辑添加代码

1 个答案:

答案 0 :(得分:2)

您需要确保在表单之前创建数据模块。打开表单时就是这样,有一个dmdLocal的实例(在本例中),后者又有一个你所追求的数据源的实例 - 在本例中是dsModels。否则,一旦知道数据模块已创建,就可以在运行时分配属性。