2013-11-28 1 views
0

У меня есть приложение FireMonkey Mobile, в котором я работал с TSQlConnection и TSQLDataset в реальной форме. Набор данных не заполнял TComboBox без проблем, но затем я решил, что поместил бы весь код базы данных и т. Д. В DataModule.Почему я не могу сделать LiveBinding против модуля данных в XE5?

Переместите TSqlConnection и источник данных и добавьте Datamodul. Проверено, чтобы убедиться, что все работает и открыто без проблем. Затем я удаляю исходные компоненты из формы и полностью удаляю привязки. Верните привязки, чтобы они использовали материал данных из datamodule. Создайте приложение и перейдите в правильную форму ... Ничего в списке.

Прикрепленные файлы на открытых и так далее наборах данных, и все они открыты и в порядке. Даже срабатывает событие 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 

Код для Datasource

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 

отредактирован добавить код

+0

Создан ли модуль данных до создания экземпляра формы? И если да, то этот экземпляр назначается dmdLocal (который, как я предполагаю, является глобальным var в datamodule)? – Jason

+0

Это работает ... Если вы хотите, чтобы ваш ответ был ответом, я буду отмечать его как правильный ответ ... Спасибо –

ответ

2

Вы должны убедиться, что вы r модуль данных создается перед вашей формой. Это так, когда форма открыта, есть экземпляр (в данном случае) dmdLocal, который, в свою очередь, имеет экземпляр источника данных, который вы используете, - в этом случае dsModels. В противном случае вы можете назначить свойство во время выполнения, как только вы узнаете, что ваш datamodule был создан.