如何从与Live Bindings链接的自定义组件访问数据集?

时间:2013-04-02 06:29:03

标签: delphi firemonkey delphi-xe3 firemonkey-fm2 livebindings

我正在创建自己的DBGrid,它来自TMSFMXGrid。如果使用实时绑定链接,我如何找出链接到此网格的数据集?在设计时,您可以在对象检查器属性LiveBinding中看到,但在运行时无法访问。否则,我将不得不发布我自己的属性,您可以在其中定义使用过的数据集。

1 个答案:

答案 0 :(得分:0)

经过几个小时的搜索,我发现了这个解决方案。

function GetDataSet: TDataSet;
var
  obj: TColumnDescObject;
  dts: TBaseLinkingBindSource;
  ds: TDataSet;
begin
  Result := nil;
  if ColumnDescList.Count > 0 then
  begin
    obj := TColumnDescObject(ColumnDescList.Items[0]);
    if Assigned(obj) then
    begin
      dts := obj.ColumnDesc.DataSource;
      if Assigned(dts) then
      begin
        if dts is TCustomBindSourceDB then
        begin
          ds := (dts as TCustomBindSourceDB).DataSet;
          if Assigned(ds) then
          begin
            Result := ds;
          end;
        end;
      end;
    end;
  end;
end;