Как получить доступ к набору данных из пользовательского компонента, связанного с привязками Live?

Я создаю свой собственный DBGrid, который является производным от TMSFMXGrid. Как я могу узнать, какой набор данных связан с этой сеткой, если он связан с использованием Live Bindings? Во время разработки вы можете видеть в инспекторе объектов свойство LiveBinding, но оно недоступно во время выполнения. В противном случае мне придется опубликовать свое собственное свойство, где вы можете определить используемый набор данных.

1 ответ

Решение

После многих часов поисков я нашел это решение.

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;
Другие вопросы по тегам