LookupSource 必须连接到 TTable 组件



我正在尝试使用 TDBLookupCombo,但收到错误"EInvalidOperation",并显示消息"LookupSource 必须连接到 TTable 组件"。

我有 TDBLookupCombo.LookupSource 连接到 TDataSource。TDataSource.Dataset指向一个TClientDataSet,其中包含查找表的记录(字段ID和说明)。

LookupDisplay := 'Description';
LookupField := 'ID';
LookupSource := dsLookup;

这是不可能的,因为 TCilentDataSet 不是 TTable 的后代吗?如果是这样,那么不使用 3rd 方组件的最佳选择是什么。

TDBLookupCombo 是基于 BDE 的旧数据控件之一,这就是为什么它依赖于连接到 TTable

似乎您应该改用TDBLookupComboBox,它可以很好地连接到连接到任何双向 TDataSet 后代(包括 TClientDataSet)的 TDataSource

查看代码...不,你不能那样做,下降到TDataSet...TClientDataSet -> TCustomClientDataSet -> TDataSet

procedure TDBLookupList.SetLookupSource(Value: TDataSource);
begin
  if (Value <> nil) and ((Value = DataSource) or
    ((Value.DataSet <> nil) and (Value.DataSet = FFieldLink.DataSet))) then
    raise EInvalidOperation.Create(SLookupSourceError);
  if (Value <> nil) and (Value.DataSet <> nil) and
    not (Value.DataSet.InheritsFrom(TTable)) then
    raise EInvalidOperation.Create(SLookupTableError);
  inherited DataSource := Value;
  NewLayout;
end;

嗯......自由。。。查看绝地组件...也许TJvDBLookupComboEdit

相关内容

  • 没有找到相关文章

最新更新