红鱼儿

没有从当前控件中捕获到字段而无法查询!

这是项目中的一个提示,今天同事又遇到这样的问题,在一个方法中,Lookup找不到字段,经查,原来下面这段代码,aDataSet就是nil的,所以aField也是nil.

        if TcxGridTableView(Components[i]).Columns[j].Properties is TcxPopupEditProperties then
        begin
          aDataSet:=TcxGridDBTableView(Components[i]).DataController.DataSource.DataSet;
          TcxPopupEditProperties(TcxGridTableView(Components[i]).Columns[j].Properties).OnInitPopup := PopupEditInitPopup;

          aField:=TcxGridDBColumn(TcxGridTableView(Components[i]).Columns[j]).DataBinding.Field;
          TcxPopupEditProperties(TcxGridTableView(Components[i]).Columns[j].Properties).LookupItems.AddObject('a', aField);

aDataSet为nil,那说明TcxGridDBTableView(Components[i]).DataController.DataSource没有指定DataSet,打开界面,发现:

 

 dsMaster设置的DataSet没有值了!

原来同事在复制这个单元到另外的项目中,丢了这个属性值,找到原因,再进一步查找,这个单元的基类,同事是在OnShow事件中,写了:

  dsMaster.DataSet := TFuncEntry(Self.Owner).GetInfo.GetMasterDataSet;

把这一行代码,移到OnCreate中:

procedure TCustomBaseTableDoc.FormCreate(Sender: TObject);
begin
  inherited;
  dsMaster.DataSet := TFuncEntry(Self.Owner).GetInfo.GetMasterDataSet;
end;

再运行,问题不在!

 

posted on 2021-05-19 11:00  红鱼儿  阅读(115)  评论(0编辑  收藏  举报