【问题标题】:Why can't I do LiveBinding against a data module in XE5?为什么我不能对 XE5 中的数据模块进行 LiveBinding?
【发布时间】:2013-11-28 12:26:55
【问题描述】:

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

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

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

组合框代码

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

编辑添加代码

【问题讨论】:

  • 数据模块是在表单实例化之前创建的吗?如果是这样,该实例是否已分配给 dmdLocal(我猜是数据模块中的全局变量)?
  • 那行得通...如果您想将您的回答作为答案,我会将其标记为正确答案...谢谢

标签: delphi livebindings


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 2014-10-09
    • 1970-01-01
    • 2017-09-20
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多