我试图使用TDBLookupCombo,但是收到错误" EInvalidOperation包含消息' LookupSource必须连接到TTable组件'。
我将TDBLookupCombo.LookupSource连接到TDataSource。 TDataSource.Dataset指向一个TClientDataSet,它包含查找表的记录(字段ID和描述)。
LookupDisplay := 'Description';
LookupField := 'ID';
LookupSource := dsLookup;
这是不可能的,因为TCilentDataSet不是TTable的后代?如果是这样的话,那么在不使用第三方组件的情况下最好的替代方案。
答案 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