LookupSource必须连接到TTable组件

时间:2016-01-27 23:09:46

标签: delphi delphi-xe2 tclientdataset data-aware tcombobox

我试图使用TDBLookupCombo,但是收到错误" EInvalidOperation包含消息' LookupSource必须连接到TTable组件'。

我将TDBLookupCombo.LookupSource连接到TDataSource。 TDataSource.Dataset指向一个TClientDataSet,它包含查找表的记录(字段ID和描述)。

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

这是不可能的,因为TCilentDataSet不是TTable的后代?如果是这样的话,那么在不使用第三方组件的情况下最好的替代方案。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

查看代码...不,你不能这样做,下降到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