Delphi LookupSource必须连接到可删除组件
我试图使用TDBLookupCombo,但收到一个错误“EINValidoOperation,消息为“LookupSource必须连接到可安装组件” 我将TDBLookupCombo.LookupSource连接到TDataSource。TDataSource.Dataset指向一个TClientDataSet,其中包含查找表的记录(字段ID和描述)Delphi LookupSource必须连接到可删除组件,delphi,delphi-xe2,tclientdataset,data-aware,tcombobox,Delphi,Delphi Xe2,Tclientdataset,Data Aware,Tcombobox,我试图使用TDBLookupCombo,但收到一个错误“EINValidoOperation,消息为“LookupSource必须连接到可安装组件” 我将TDBLookupCombo.LookupSource连接到TDataSource。TDataSource.Dataset指向一个TClientDataSet,其中包含查找表的记录(字段ID和描述) 这是不可能的,因为TCilentDataSet不是TTable的后代吗?如果是,那么不使用第三方组件的最佳替代方案是什么。查看代码…不,您不能这样
这是不可能的,因为TCilentDataSet不是TTable的后代吗?如果是,那么不使用第三方组件的最佳替代方案是什么。查看代码…不,您不能这样做,请降级到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;
过程TDBLookupList.SetLookupSource(值:TDataSource);
开始
if(值nil)和((值=数据源)或
((Value.DataSet nil)和(Value.DataSet=FFieldLink.DataSet)))然后
引发EINValidoOperation.Create(SLookupSourceError);
如果(值为零)和(值为零)和
不是(Value.DataSet.InheritsFrom(TTable))那么
引发EINValidoOperation.Create(SLookupTableError);
继承的数据源:=值;
新布局;
终止
嗯…免费…查看绝地组件…也许TJvDBLookupComboEdit查看代码…不,你不能这样做,下降到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;
过程TDBLookupList.SetLookupSource(值:TDataSource);
开始
if(值nil)和((值=数据源)或
((Value.DataSet nil)和(Value.DataSet=FFieldLink.DataSet)))然后
引发EINValidoOperation.Create(SLookupSourceError);
如果(值为零)和(值为零)和
不是(Value.DataSet.InheritsFrom(TTable))那么
引发EINValidoOperation.Create(SLookupTableError);
继承的数据源:=值;
新布局;
终止
嗯…免费…查看绝地组件…也许TJvDBLookupComboEdit是一个基于BDE的旧数据控件,这就是为什么它依赖于连接到一个TTable
您似乎应该改用TDBLookupComboBox
,它可以很好地连接到TDataSource,TDataSource连接到任何双向TDataSet子体(包括TClientDataSet)。TDBLookupCombo是一个旧的基于BDE的数据控件,这就是它依赖于连接到TTable的原因
您似乎应该使用
TDBLookupComboBox
,它可以很好地连接到TDataSource,该TDataSource连接到任何双向TDataSet子体(包括TClientDataSet).我的组件调色板中没有TDBLookupCombo
。我有一个TDBLookupComboBox
,它没有属性LookupDisplay
、LookupField
或LookupSource
。你是不是错误地使用了一个旧的BDE控件?BDE外部不存在TTable。你是对的。我收费吗我喜欢bozo!我的组件调色板中没有TDBLookupCombo
。我有一个TDBLookupComboBox
,它没有属性LookupDisplay
,LookupField
,或者LookupSource
。你是不是误用了一个旧的BDE控件?BDE之外没有TTable。你说得对。老兄,我觉得自己像个傻瓜!谢谢,但事实证明我应该使用TDBLookupComboBox,这正是我所需要的。虽然你的答案在技术上是正确的,但它并不能解决实际问题,这就是使用了错误的控件。:-)是的…不要使用太多delphi db控件…主要是Woll-to-Woll或TMS…所以就去了source、 是的,我觉得很奇怪,它被连接到了TTable…很久没有看到这样的问题了。;)谢谢,但事实证明我应该使用TDBLookupComboBox,这正是我需要的。虽然你的答案在技术上是正确的,但它并不能解决实际问题,这就是使用了错误的控件。:-)是的…不要使用太多的选项e delphi db控件…主要是Woll-to-Woll或TMS…因此只需访问源代码。是的,它与TTable相耦合,这很奇怪…很久没有看到过这样的问题了。;)