Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi LookupSource必须连接到可删除组件_Delphi_Delphi Xe2_Tclientdataset_Data Aware_Tcombobox - Fatal编程技术网

Delphi LookupSource必须连接到可删除组件

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的后代吗?如果是,那么不使用第三方组件的最佳替代方案是什么。查看代码…不,您不能这样

我试图使用TDBLookupCombo,但收到一个错误“EINValidoOperation,消息为“LookupSource必须连接到可安装组件”

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


这是不可能的,因为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相耦合,这很奇怪…很久没有看到过这样的问题了。;)